Aide-mémoire CKAD

exemple drain de nœud Kubernetes

Un nœud prend des Pods jusqu’à ce que vous le marquiez, le taintiez ou le cordonniez. drain en retire les charges. uncordon le rouvre.

L’équipage pousse un chasseur hors d’une aire fermée par un anneau lumineux. L’équipage pousse un chasseur hors d’une aire fermée par un anneau lumineux.
Label et taint
kubectl get nodes
kubectl describe node node-1
kubectl label node node-1 disk=ssd
kubectl label node node-1 disk-
kubectl taint node node-1 dedicated=batch:NoSchedule
kubectl taint node node-1 dedicated=batch:NoSchedule-
Cordon, drain, uncordon
kubectl cordon node-1
kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data
kubectl uncordon node-1
Pod qui peut y atterrir
spec:
  nodeSelector:
    disk: ssd
  tolerations:
    - key: dedicated
      operator: Equal
      value: batch
      effect: NoSchedule

Champs

kubectl get
STATUS Ready,SchedulingDisabled signifie cordonné et toujours sain. Le nom de la première colonne est ce que drain prend.
kubectl describe
Taints, labels et conditions sont sur le nœud. Les ressources allouées expliquent un Pod Pending.
kubectl label
key=value le pose. key- le retire. Le moins final est la suppression. Un nodeSelector de Pod exige la clé.
kubectl taint
key=value:NoSchedule l’ajoute. La même spec avec un moins final le retire. clé, valeur et effet doivent tous correspondre.
kubectl cordon
Marque le nœud non planifiable. Les Pods déjà là restent. Les nouveaux Pods vont ailleurs.
kubectl drain
Cordonne, puis expulse. --ignore-daemonsets ignore les Pods DaemonSet. --delete-emptydir-data efface les données emptyDir.
kubectl uncordon
Efface la marque unschedulable. Un taint que vous avez ajouté est toujours là.
nodeSelector
Labels exacts sur le nœud. Le Pod reste Pending tant que le nœud n’a pas chaque clé.
tolerations
Laisse ce Pod monter sur un nœud tainté. operator Exists ignore la valeur. L’effet doit correspondre au taint.

Pièges

  • cordon marque le nœud non planifiable et laisse les Pods en cours en place. drain cordonne, puis expulse. uncordon efface cette marque et laisse tout taint que vous avez ajouté.
  • drain s’arrête quand un Pod DaemonSet est présent, sauf avec --ignore-daemonsets. Il s’arrête pour des données emptyDir sauf avec --delete-emptydir-data. Ce flag efface le contenu de l’emptyDir.
  • NoSchedule bloque les nouveaux Pods sans toleration correspondante. NoExecute expulse aussi les Pods qui n’en ont pas. Un taint NoSchedule sur le seul nœud laisse les nouveaux Pods Pending.
  • kubectl label node node-1 disk- retire le label. Un Pod avec nodeSelector disk: ssd ne tourne que sur un nœud qui l’a. Le retrait d’un taint est la même spec avec un moins final, et la clé, la valeur et l’effet doivent correspondre.

Doc officielle Drain a node Taints and Tolerations

S’entraîner sur un cluster réel →