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.
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-
kubectl cordon node-1
kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data
kubectl uncordon node-1
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