kubernetes调度——节点亲缘性、pod亲缘性
一、 节点亲缘性nodeAffinity
本质上还是根据节点上的标签进行调度,调度策略更丰富
1、nodeAffinity调度策略
-
requiredDuringSchedulingIgnoredDuringExecution
表示pod必须部署到满足条件的节点上,如果没有满足条件的节点,就不停重试。
IgnoreDuringExecution表示pod部署之后运行的时候,如果节点标签发生了变化,不再满足pod指定的条件,pod也会继续运行。 -
requiredDuringSchedulingRequiredDuringExecution
表示pod必须部署到满足条件的节点上,如果没有满足条件的节点,就不停重试
RequiredDuringExecution表示pod部署之后运行的时候,如果节点标签发生了变化,不再满足pod指定的条件,则重新选择符合要求的节点 -
preferredDuringSchedulingIgnoredDuringExecution
表示优先部署到满足条件的节点上,如果没有满足条件的节点,就忽略这些条件,按照正常逻辑部署 -
preferredDuringSchedulingRequiredDuringExecution
表示优先部署到满足条件的节点上,如果没有满足条件的节点,就忽略这些条件,按照正常逻辑部署。
RequiredDuringExecution表示如果后面节点标签发生了变化,满足了条件,则重新调度到满足条件的节点。
2、单条件使用
[root@k8s-master ~]# kubectl label node k8s-node01.linux.com yewu=dev
node/k8s-node01.linux.com labeled
[root@k8s-master ~]#
apiVersion: apps/v1
kind: Deployment
metadata:
name: test6
spec:
replicas: 2
selector:
matchLabels:
app: test6
template:
metadata:
labels:
app: test6
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: yewu
operator: NotIn
values:
- dev
containers:
- name: test6
image: centos:7
imagePullPolicy: IfNotPresent
command: