Uzly (nodes)

Uzly (nodes)

Uzel je stroj, na kterém běží pody. Je cluster-scoped – nepatří do namespace.

ÚkolPříkaz
Výpiskubectl get nodes -o wide
Detail, podmínky, taints, kapacitakubectl describe node worker01
Zastavit plánování nových podůkubectl cordon worker01
Cordon a vystěhováníkubectl drain worker01 --ignore-daemonsets --delete-emptydir-data
Znovu povolit plánováníkubectl uncordon worker01
Odebrat z clusterukubectl delete node worker01
stateDiagram-v2 [*] --> Ready Ready --> SchedulingDisabled: cordon SchedulingDisabled --> Ready: uncordon SchedulingDisabled --> Drained: drain Drained --> Ready: uncordon

Drain je příkaz pro údržbu. Co nepřesune:

  • Pody DaemonSetu – proto --ignore-daemonsets na každém drainu.
  • Holé pody – nic by je nevytvořilo znovu, takže drain odmítne, dokud nepřidáte --force, a pak jsou nenávratně pryč.
  • Pody s emptyDir – přišla by o data, proto --delete-emptydir-data.

Uncordon pody nevrací. Rozprostření je samostatné rozhodnutí: kubectl rollout restart deploy/....

Kapacita a taints

kubectl describe node worker01 | grep -A6 'Allocated resources'
kubectl describe node control01 | grep -i taint

Allocatable je kapacita mínus rezerva kubeletu a systému. Scheduler počítá s requesty, ne se skutečným vytížením – uzel může být z 20 % vytížený a přesto pody odmítat.

kubectl delete node smaže jen objekt v API; kubelet běží dál a znovu se zaregistruje. Skutečné odebrání je drain → delete node → kubeadm reset na stroji.

Reference