https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
https://ithelp.ithome.com.tw/articles/10221929
有三種方式指定 Pod 只運行在指定的 Node 上:
t
:只調度到匹配指定 label 的 Node 上nodeAffinity
:功能更豐富的 Node 选择器,比如支持集合操作podAffinity
:调度到滿足的 Pod 所在的 Node 上kubectl label nodes node-01 disktype=ssd
# pods/pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disktype: ssd
requiredDuringSchedulingIgnoredDuringExecution
:必須滿足preferredDuringSchedulingIgnoredDuringExecution
:優先條件以下範例:
必須滿足:label 是 kubernetes.io/e2e-az-name: e2e-az1
or kubernetes.io/e2e-az-name :e2e-az2
的 Node
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
- e2e-az2
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: another-node-label-key
operator: In
values:
- another-node-label-value
containers:
- name: with-node-affinity
image: k8s.gcr.io/pause:2.0
requiredDuringSchedulingIgnoredDuringExecution
:必須滿足preferredDuringSchedulingIgnoredDuringExecution
:優先條件