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是它的主机名,所以说它的拓扑域是不一样的。
~~~     所以说在这里面部署了拓扑域之后呢?它就会部署在同一个拓扑域下。
### --- 拓扑域怎么去划分:根据自己的需求去定义

~~~     按照区域划分
~~~     按照城市去划分
~~~     按照主机名去划分
~~~     按照机柜去划分
~~~     按照机柜去划分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值