流觞区直

导航

[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  流觞区直  阅读(184)  评论(0编辑  收藏  举报