Uzly (nodes)
Uzly (nodes)
Uzel je stroj, na kterém běží pody. Je cluster-scoped – nepatří do namespace.
| Úkol | Příkaz |
|---|---|
| Výpis | kubectl get nodes -o wide |
| Detail, podmínky, taints, kapacita | kubectl 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 clusteru | kubectl 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-daemonsetsna 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.