|NO.Z.00212|——————————|CloudNative|——|KuberNetes&高级调度.V15|——|Pod亲和力反亲和力.v03|pod反亲和力|

一、Pod的反亲和力:
### --- 编辑yaml文件:编写pod的反亲和力的参数
~~~     # 编辑yaml文件
~~~     就是尽量不和namespace下的kube-system,key:

k8s-app的值为values:calico-kube-controllers的pod尽量不要部署在一块
[root@k8s-master01 ~]# vim pod-Affinity-demo-nginx.yaml 
      affinity:
        podAntiAffinity:    // 反亲和力就是这个名字不一样,中间多了个Anti字段
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: k8s-app
                operator: In
                values:
                - calico-kube-controllers
            namespaces:
              - kube-system
            topologyKey: kubernetes.io/hostname 
二、创建pod反亲和力资源
### --- 重新触发demo-nginx

[root@k8s-master01 ~]# kubectl replace -f pod-Affinity-demo-nginx.yaml 
deployment.apps/demo-nginx replaced
### --- 验证部署结果
~~~     可以看到部署在了 k8s-master01节点上面

[root@k8s-master01 ~]# kubectl get po -owide
NAME                          READY   STATUS    RESTARTS   AGE   IP               NODE           NOMINATED NODE   READINESS GATES
busybox                       1/1     Running   0          25m   172.25.92.90     k8s-master02   <none>           <none>
demo-nginx-85dc94b86c-jwtz2   2/2     Running   0          59s   172.25.244.197   k8s-master01   <none>           <none>
demo-nginx-85dc94b86c-wp5bz   2/2     Running   0          60s   172.25.244.195   k8s-master01   <none>           <none>
### --- 而calico-kube-controllers部署在k8s-master03节点,
~~~     和demo-nginx是不在同一节点的。

[root@k8s-master01 ~]# kubectl get po -n kube-system -owide
NAME                                       READY   STATUS    RESTARTS   AGE    IP              NODE           NOMINATED NODE   READINESS GATES
calico-kube-controllers-5f6d4b864b-rttg5   1/1     Running   1          2d2h   192.168.1.13    k8s-master03   <none>           <none>
三、亲和力参数说明
### --- 根据缩写参数查看所匹配的pod

            matchExpressions:
              - key: k8s-app
                operator: In
                values:
                - calico-kube-controllers
### --- 查看配置参数所对应的pod
~~~     匹配到的pod,若是写的是亲和力,就会把所创建的Pod的和这个pod部署在同一个节点下。
~~~     若是写的是反亲和力,就不会把所创建的pod和这个pod不部署在同一个节点下。

[root@k8s-master01 ~]# kubectl get po -n kube-system -l k8s-app=calico-kube-controllers
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-5f6d4b864b-rttg5   1/1     Running   1          2d2h

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on 2022-03-30 13:43  yanqi_vip  阅读(28)  评论(0)    收藏  举报

导航