kube-scheduler

指定節點調度

https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/

https://ithelp.ithome.com.tw/articles/10221929

有三種方式指定 Pod 只運行在指定的 Node 上:

  1. t:只調度到匹配指定 label 的 Node 上
  2. nodeAffinity:功能更豐富的 Node 选择器,比如支持集合操作
  3. podAffinity:调度到滿足的 Pod 所在的 Node 上

nodeSelector

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

nodeAffinity

以下範例:

必須滿足: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

podAffinity / podAntiAffinity