流觞区直

导航

[kubernetes集群调度] - ② 调度亲和性

节点亲和性

pod.spec.nodeAffinity:

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

requiredDuringSchedulingIgnoredDuringExecution:

apiVersion: v1 
kind: Pod 
metadata: 
 name: affinity 
 labels:
   app: node-affinity-pod 
spec: 
 containers: 
 - name: with-node-affinity 
   image: hub.atguigu.com/library/myapp:v1 
 affinity: 
  nodeAffinity: 
   requiredDuringSchedulingIgnoredDuringExecution: 
     nodeSelectorTerms:
     - matchExpressions: 
       - key: kubernetes.io/hostname 
          operator: NotIn 
          values: 
          - k8s-node02

preferredDuringSchedulingIgnoredDuringExecution:

apiVersion: v1 
kind: Pod 
metadata: 
 name: affinity 
 labels:
  app: node-affinity-pod 
spec: 
 containers: 
 - name: with-node-affinity 
  image: hub.atguigu.com/library/myapp:v1 
 affinity: 
  nodeAffinity: 
preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 preference: matchExpressions: - key: source operator: In values: - qikqiak

合体

apiVersion: v1
kind: Pod
metadata:
 name: affinity
 labels:
  app: node-affinity-pod
spec:
 containers:
 - name: with-node-affinity
  image: hub.atguigu.com/library/myapp:v1
 affinity:
  nodeAffinity:
   requiredDuringSchedulingIgnoredDuringExecution:
    nodeSelectorTerms:
    - matchExpressions:
     - key: kubernetes.io/hostname
       operator: NotIn
       values:
       - k8s-node02
   preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 1
      preference:
        matchExpressions:
        - key: source
          operator: In
          values:
          - qikqiak

键值运算关系

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

 

  

Pod 亲和性

pod.spec.affinity.podAffinity/podAntiAffinity

  • preferredDuringSchedulingIgnoredDuringExecution:软策略
  • requiredDuringSchedulingIgnoredDuringExecution:硬策略
apiVersion: v1
kind: Pod 
metadata: 
 name: pod-3 
 labels: 
  app: pod-3 
spec: 
 containers: 
 - name: pod-3 
  image: hub.atguigu.com/library/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不在同
一拓扑域

 

 
 
 
 

posted on 2020-04-08 09:17  流觞区直  阅读(202)  评论(0)    收藏  举报