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

2021-02-18 16:18

阅读:560

标签:note   nta   pod   拓扑   index   ssi   支持   container   hostname   

节点亲和性

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:
   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不在同
一拓扑域

 

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

标签:note   nta   pod   拓扑   index   ssi   支持   container   hostname   

原文地址:https://www.cnblogs.com/uvwill/p/12940478.html


评论


亲,登录后才可以留言!