主页 > 软件开发  > 

K8S学习之基础六:k8s中pod亲和性

K8S学习之基础六:k8s中pod亲和性

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亲和性