|NO.Z.00211|——————————|^^ 标准 ^^|——|KuberNetes&高级调度.V14|——|Pod亲和力反亲和力.v02|pod亲和力_跨namespace|
一、pod的亲和力:跨namespace:
### --- pod亲和力实验说明
~~~ 与指定pod部署在一块,是可以块namespace的:
~~~ 把demo-nginx和kube-systemnamespace下的符合label
~~~ 为k8s-app=calico-kube-controllers的pod部署在同一个拓扑域上
二、编辑pod亲和力跨namespace.yaml文件
### --- 查看calico-kube-controllers所在那个节点且具有的标签
[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>
~~~ # 查看所具有的标签
~~~ 使用该标签进行约束:k8s-app=calico-kube-controllers
[root@k8s-master01 ~]# kubectl get po -n kube-system --show-labels
NAME READY STATUS RESTARTS AGE LABELS
calico-kube-controllers-5f6d4b864b-rttg5 1/1 Running 1 2d2h k8s-app=calico-kube-controllers,pod-template-hash=5f6d4b864b
### --- 编辑yaml文件
~~~ 把符合这个标签的- key: k8s-app values:
~~~ - calico-kube-controllers的pod部署在同一个拓扑域上
[root@k8s-master01 ~]# vim pod-Affinity-demo-nginx.yaml
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: k8s-app
operator: In
values:
- calico-kube-controllers
namespaces:
- kube-system
topologyKey: kubernetes.io/hostname
三、重新触发pod
### --- 重新触发容器
[root@k8s-master01 ~]# kubectl replace -f pod-Affinity-demo-nginx.yaml
deployment.apps/demo-nginx replaced
### --- 查看结果
~~~ 部署在了k8s-master03节点上了
[root@k8s-master01 ~]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox 1/1 Running 0 12m 172.25.92.90 k8s-master02 <none> <none>
demo-nginx-98764c475-4gn7l 2/2 Running 0 66s 172.18.195.41 k8s-master03 <none> <none>
demo-nginx-98764c475-frv7l 2/2 Running 0 67s 172.18.195.40 k8s-master03 <none> <none>
### --- 可以看到它和calico-kube-controllers是在不同的namespace下,
~~~ 但是都是部署在了k8s-master03上
[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>
四、namespace解释:
### --- 如果写了namespace是的字段,但是留空,它是匹配所有namespace下的指定label的Pod
~~~ 若是写了namespace,但是namespace的值为空,什么也不写的情况下
namespace:
空行
### --- 如果写了namespace并且指定了值,就是匹配指定namespace下的指定label的pod
~~~ 若是写了- kube-system,就是匹配,key:值下的values:下的这个容器
namespace:
- kube-system
### --- 若果没有写namespace,那么就是匹配当前namespace
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了