在 Kubernetes Deployment 裡面設定 Pod 的 Node Affinity

7/25/2020 kubernetes

看官網寫的有夠複雜的:在 spec 底下的 affinity 裡面的 nodeAffinity,可以給設定兩個選項:

  • requiredDuringSchedulingIgnoredDuringExecution
  • preferedDuringSchedulingIgnoredDuringExecution

先別暈過去 ... 這還沒完。

這兩個名字非常長的選項底下你可以設定: nodeSelectorTerms 然後是一個 list/array。

nodeSelectorTerms 其中的每一個 item 的內容可以設定 matchExpressions ,而他也是一個 list/array。

這個 matchExpressions 裡面每一個 item 的內容則是 key, operator 以及 values

這邊的 key 終於是我們設定 node 的 label key 了(撒花), 而 operator 則可以設定 In, NotInExists

看到 operator 接受 InNotIn 大概可以猜得到 values 也是一個 list/array。

講了半天越看越不懂,直接看內容的話,他就是長這個樣子:

apiVersion: apps/v1
kind: Deployment
metadata:
  ...
spec:
  template:
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - ucpworker-0

好,現在可以暈倒了。(倒