Kubernetes入门至精通 | 调度亲和性

发布一下 0 0

节点亲和性

pod.spec.nodeAffinity

  • preferredDuringSchedulingIgnoredDuringExecution:软策略
  • requiredDuringSchedulingIgnoredDuringExecution:硬策略

requiredDuringSchedulingIgnoredDuringExecution

apiVersion: v1kind: Podmetadata:  name: affinity  labels:    app: node-affinity-podspec:  containers:  - name: with-node-affinity    image: wangyanglinux/myapp:v1  affinity:    nodeAffinity:      requiredDuringSchedulingIgnoredDuringExecution:        nodeSelectorTerms:        - matchExpressions:          - key: disktype            operator: NotIn            values:            - hdd

preferredDuringSchedulingIgnoredDuringExecution

apiVersion: v1kind: Podmetadata:  name: affinity  labels:    app: node-affinity-podspec:  containers:  - name: with-node-affinity    image: wangyanglinux/myapp:v1  affinity:    nodeAffinity:      preferredDuringSchedulingIgnoredDuringExecution:      - weight: 1        preference:          matchExpressions:          - key: kubernetes.io/hostname            operator: In            values:            - k8s-node03

合体

apiVersion: v1kind: Podmetadata:  name: affinity  labels:    app: node-affinity-podspec:  containers:  - name: with-node-affinity    image: wangyanglinux/myapp:v1  affinity:    nodeAffinity:      requiredDuringSchedulingIgnoredDuringExecution:        nodeSelectorTerms:        - matchExpressions:          - key: disktype            operator: NotIn            values:            - hdd      preferredDuringSchedulingIgnoredDuringExecution:      - weight: 1        preference:          matchExpressions:          - key: kubernetes.io/hostname            operator: In            values:            - k8s-node01

键值运算关系

  • In:label 的值在某个列表中
  • NotIn:label 的值不在某个列表中
  • Gt:label 的值大于某个值
  • Lt:label 的值小于某个值
  • Exists:某个 label 存在
  • DoesNotExist:某个 label 不存在

如果nodeSelectorTerms下面有多个选项的话,满足任何一个条件就可以了;如果matchExpressions有多个选项的话,则必须同时满足这些条件才能正常调度 POD

Pod 亲和性

pod.spec.affinity.podAffinity/podAntiAffinity

  • preferredDuringSchedulingIgnoredDuringExecution:软策略
  • requiredDuringSchedulingIgnoredDuringExecution:硬策略
apiVersion: v1kind: Podmetadata:  name: pod-3  labels:    app: pod-3spec:  containers:  - name: pod-3    image: wangyanglinux/myapp:v1  affinity:    podAffinity:      requiredDuringSchedulingIgnoredDuringExecution:      - labelSelector:          matchExpressions:          - key: app            operator: In            values:            - pod-1        topologyKey: kubernetes.io/hostname    podAntiAffinity:      preferredDuringSchedulingIgnoredDuringExecution:      - weight: 1        podAffinityTerm:          labelSelector:            matchExpressions:            - key: app              operator: In              values:              - pod-2          topologyKey: kubernetes.io/hostname

亲和性/反亲和性调度策略比较如下:

调度策略

匹配标签

操作符

拓扑域支持

调度目标

nodeAffinity

主机

In, NotIn, Exists, DoesNotExist, Gt, Lt

指定主机

podAffinity

POD

In, NotIn, Exists, DoesNotExist

POD与指定POD同一拓扑域

podAnitAffinity

POD

In, NotIn, Exists, DoesNotExist

POD与指定POD不在同一拓扑域

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/67526.html