我是靠谱客的博主 过时蜗牛,最近开发中收集的这篇文章主要介绍CC00214.CloudKubernetes——|KuberNetes&高级调度.V17|——|Topology.v01|概述|,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Topology概述
### --- Topology说明
~~~
# TopologyKey:
~~~
kubernetes.io/hostname
~~~
# topologykey:
~~~
拓扑域,首先说明不同的可以不同的value是属于不同的拓扑域
~~~
topologykey的值代表一个拓扑域,
~~~
拓扑域就是根据这个kubernetes.io/hostname
key来区分的
~~~
这个key就是在node节点大的label,
~~~
所以说label的可以和values不一样,它就属于不同的拓扑域
二、查看宿主机创建的label
### --- 查看宿主机创建的label
~~~
k8s安装完成之后,就会给每个节点打一个label;它的key名是一样的: kubernetes.io/hostname;
~~~
但是它的values的值是不一样的k8s-master02;可以理解为每个节点都是属于不同的拓扑域的。
[root@k8s-master01 ~]# kubectl get node --show-labels
NAME
STATUS
ROLES
AGE
VERSION
LABELS
k8s-master01
Ready
<none>
22d
v1.20.0
another-node-label-key=another-node-label-value,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-master02
Ready
<none>
22d
v1.20.0
beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master02,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-master03
Ready
<none>
22d
v1.20.0
beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node.kubernetes.io/node=
k8s-node01
Ready
<none>
22d
v1.20.0
beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,ingress=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux,node.kubernetes.io/node=,test.gt=20
k8s-node02
Ready
<none>
22d
v1.20.0
beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux,node.kubernetes.io/node=,region=subnet7,test.gt=10
三、节点亲和力拓扑域说明
### --- 节点亲和力拓扑域说明
~~~
# 模块一:为模块二说明准备资料
~~~
topologyKey:kubernetes.io/hostname
~~~
topologyKey:拓扑域,首先说明一点不同的可以不同的value是属于不同的拓扑域
podAntiAffinity:
// 反亲和力就是这个名字不一样,中间多了个Anti字段
requiredDuringSchedulingIgnoredDuringExecution:
// 互斥的方式部署,第二种:软互斥。
- labelSelector:
matchExpressions:
- key: k8s-app
operator: In
values:
- calico-kube-controllers
namespaces:
- kube-system
topologyKey:/kubernetes.io/hostname
### --- 如果写了namespace是的字段,但是留空,它是匹配所有namespace下的指定label的Pod
namespace:
空行
// 若是写了namespace,但是namespace的值为空,什么也不写的情况下
### --- 如果写了namespace并且指定了值,就是匹配指定namespace下的指定label的pod
namespace:
- kube-system
// 若是写了- kube-system,就是匹配,key:值下的values:下的这个容器
### --- 若果没有写namespace,那么就是匹配当前namespace
### --- 模块二:节点亲和力解释说明:
~~~
kube-system下的k8s-app等于calico-kube-controllers的值部署到了k8s-master03这个节点上的
~~~
k8s-master03上是有这个label的kubernetes.io/hostname=k8s-master03
kube-system——>k8s-app=calico-kube-controllers
~~~
又因为master03的这个labelkubernetes.io/hostname=k8s-master03算一个拓扑域,
~~~
所以说在这个拓扑域里面我们这个容器需要和key:k8s-app;
~~~
values:calico-kube-controllers符合这个标签的pod部署在一块,也就是同一个拓扑域中
~~~
因为这个拓扑域的值是唯一的,不管你这个容器不管你创建多少个节点,
~~~
它都是会部署在k8s-master03上面
[root@k8s-master01 ~]# kubectl get node --show-labels
k8s-master03
Ready
<none>
22d
v1.20.0
beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,ds=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node.kubernetes.io/node=
四、拓扑域说明:
### --- 拓扑域说明
~~~
比如说这个拓扑域的key是按照主机名来区分的,
~~~
在亲和力配置中,配置了拓扑域的概念,
~~~
这个拓扑域的key是这个/kubernetes.io/hostname,是按照这个key来划分的拓扑域
~~~
又因为它的key是这个值,只有key和value是同样的值,才属于同一个拓扑域,
~~~
但是又因为每一个主机名不可能是不一样的,相当于每一个节点,介绍现在有5个节点。
~~~
它的key是一样的,values是它的主机名,所以说它的拓扑域是不一样的。
~~~
所以说在这里面部署了拓扑域之后呢?它就会部署在同一个拓扑域下。
### --- 拓扑域怎么去划分:根据自己的需求去定义
~~~
按照区域划分
~~~
按照城市去划分
~~~
按照主机名去划分
~~~
按照机柜去划分
~~~
按照机柜去划分

最后

以上就是过时蜗牛为你收集整理的CC00214.CloudKubernetes——|KuberNetes&高级调度.V17|——|Topology.v01|概述|的全部内容,希望文章能够帮你解决CC00214.CloudKubernetes——|KuberNetes&高级调度.V17|——|Topology.v01|概述|所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部