|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
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 换个方式用C#开发微信小程序
· .NET程序启动就报错,如何截获初期化时的问题json
· AI 技术发展简史
· Java Solon v3.3.0 发布(国产优秀应用开发基座)
· SpringAI更新:废弃tools方法、正式支持DeepSeek!