Taints & tolerations, Node affinity

Taint & toleration

Ajouter une taint

# kubectl taint nodes node-name key=value:taint-effect
$ kubectl taint nodes node01 spray=blue:NoSchedule
node/node01 tainted

Inspecter les taints

$ kubectl describe node node01 | grep -i taint
Taints:             spray=blue:NoSchedule

Retirer une taint

$ kubectl taint nodes node01 spray=blue:NoSchedule-
node/node01 untainted
$ k describe node controlplane | grep -i taint
Taints:             node-role.kubernetes.io/control-plane:NoSchedule

$ kubectl taint nodes controlplane node-role.kubernetes.io/control-plane:NoSchedule-
node/controlplane untainted

$ k describe node controlplane | grep -i taint
Taints:             <none>

Ajouter une toleration

---
apiVersion: v1
kind: Pod
metadata:
name: bee
spec:
containers:
- image: nginx
  name: bee
tolerations:
- key: spray
  value: blue
  effect: NoSchedule
  operator: Equal

Node selector

Ajouter un label

# kubectl label nodes <node-name> <label-key>=<label-value>
$ kubectl label nodes node01 size=Large

Retirer un label

$ kubectl label nodes node01 size-
node/node01 not labeled

Inspecter les labels

$ kubectl get nodes --show-labels
NAME                     STATUS   ROLES    AGE   VERSION   LABELS
controller.example.com   Ready    master   25d   v1.19.9   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=controller.example.com,kubernetes.io/os=linux,node-role.kubernetes.io/master=
worker-1.example.com     Ready    <none>   25d   v1.19.9   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker-1.example.com,kubernetes.io/os=linux
worker-2.example.com     Ready    <none>   25d   v1.19.9   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker-2.example.com,kubernetes.io/os=linux

Ajouter un nodeSelector

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: data-processor
    image: data-processor
  nodeSelector:
    size: Large

Node affinity

Ajouter une nodeAffinity

podAffinity


Taints & Tolerations vs Node Affinity