pod.spec.nodeAffinity:

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

requiredDuringSchedulingIgnoredDuringExecution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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: <br>   preferredDuringSchedulingIgnoredDuringExecution:
   - weight: 1
    preference:
     matchExpressions:
     - key: source
     operator: In
     values:
     - qikqiak

合体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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:硬策略
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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不在同
一拓扑域

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2022-03-02
  • 2022-01-28
  • 2021-12-13
猜你喜欢
  • 2021-07-31
  • 2021-09-30
  • 2021-11-14
  • 2022-12-23
  • 2021-10-09
  • 2022-12-23
  • 2021-09-21
相关资源
相似解决方案