Skip to content

Czym jest Node Affinity?

Podobnie jak w przypadku oznaczania Node Labelami i uruchamiania na wybranych węzłach Podów, podobną funkcjonalność daje mechanizm Node Affinity.

Możemy w ten sposób definiować na jakich Nodach Pod ma być uruchomiony, lecz tutaj możemy definiować wiele grup, przykładowo Node o rozmiarze medium, bądź large.

Definicja Poda z Node Affinity

Początkowo musimy przypisać Label do Node:

kubectl label nodes <node_name> <label_key>=<label_value>

Następnie, przypisujemy Podowi Node Affinity

apiVersion: v1
kind: Pod
metadata:
    name: <pod_name>
spec:
    containers:
        - name: <container_name>
          image: <container_image>
    affinity:
        nodeAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
                - matchExpressions:
                      - key: <label_key>
                        operator: In
                        values:
                            - <label_value>
                            ...
                            - <label_value2>
                            - <label_valueN>

Można wiele wartości Labela przypisać, które mogą pasować do nodów, na których Pod zostanie uruchomiony.

Rodzaje operatorów (pole operator)

  • In - może być uruchomiony na tych Nodach
  • NotIn - nie może działać na tych Nodach
  • Exist - klucz po prostu istnieje - Label jest utworzony na Node, niezależnie jaka wartość