K8S学习之基础六:k8s中pod亲和性
- 软件开发
- 2025-09-14 05:15:02

Pod节点亲和性和反亲和性
podaffinity:pod节点亲和性指的是pod会被调度到更趋近与哪个pod或哪类pod。
podunaffinity:pod节点反亲和性指的是pod会被调度到远离哪个pod或哪类pod
1. Pod节点亲和性
requiredDuringSchedulingIgnoredDuringExecution: 硬亲和性
preferredDuringSchedulingIgnoredDuringExecution:软亲和性
vi pod-required-affinity-demo-1.yaml apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx tier: monitor spec: containers: - name: nginx image: 172.16.80.140/nginx/nginx:1.26 imagePullPolicy: IfNotPresent kubectl apply -f pod-required-affinity-demo-1.yaml kubectl get pods -owide vi pod-required-affinity-demo-2.yaml kind: Pod metadata: name: busybox labels: app: backend tier: db spec: containers: - name: busybox image: 172.16.80.140/busybox/busybox:latest imagePullPolicy: IfNotPresent command: ["sh","-c","sleep 3600"] affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - {key: app, operator: In, values: ["nginx"]} topologyKey: kubernetes.io/hostname以上可以看出,第二个pod(busybox)由于设置了硬亲和性,需要和具有app=nginx的标签的pod在一起,所以也被创 建到了node01上
Pod节点反亲和性
vi pod-required-affinity-demo-3.yaml kind: Pod metadata: name: busybox1 labels: app: backend1 tier: db spec: containers: - name: busybox1 image: 172.16.80.140/busybox/busybox:latest imagePullPolicy: IfNotPresent command: ["sh","-c","sleep 3600"] affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - {key: app, operator: In, values: ["nginx"]} topologyKey: kubernetes.io/hostname以上可以看出,第三个pod(backend)设置了pod发亲和性,和匹配的pod创建在了不同的node上
vi pod-required-affinity-demo-4.yaml apiVersion: v1 kind: Pod metadata: name: busybox2 labels: app: backend tier: db spec: containers: - name: busybox2 image: 172.16.80.140/busybox/busybox:latest imagePullPolicy: IfNotPresent command: ["sh","-c","sleep 3600"] affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - {key: app, operator: In, values: ["nginx"]} topologyKey: kubernetes.io/hostname - labelSelector: matchExpressions: - {key: tier, operator: In, values: ["db"]} topologyKey: kubernetes.io/hostname以上可以看出,因为busybox2的反亲和性,导致没有pod符合条件,只能是pending状态
K8S学习之基础六:k8s中pod亲和性由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“K8S学习之基础六:k8s中pod亲和性”