Při práci v prostředí clusteru Kubernetes nastanou chvíle, kdy se dostanete do situace, kdy budete muset odstranit pody z jednoho ze svých pracovních uzlů.
Možná budete muset odladit problémy se samotným uzlem, upgradovat uzel nebo jednoduše zmenšit váš cluster.
Akce smazání Kubernetes pod je velmi jednoduchá pomocí kubectl delete pod
příkaz:
kubectl delete pod pod-name
Existují však konkrétní kroky, které byste měli podniknout, abyste minimalizovali narušení vaší aplikace. Podrobně to vysvětlím v tomto článku.
Odstranění modulů Kubernetes elegantně
Nejprve uveďte seznam všech modulů:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
pod-delete-demo 1/1 Running 0 4s 172.16.213.196 kworker-rj2 <none> <none>
Nyní předpokládejme, že chcete odstranit pod s názvem "pod-delete-demo", spusťte následující příkaz:
[email protected]:~# kubectl delete pod pod-delete-demo
pod "pod-delete-demo" deleted
Vypsáním všech modulů potvrďte, že je daný modul smazán:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
Můžete vidět, že není spuštěn žádný pod-delete-demo pod.
Vynutit odstranění Kubernetes podů
Proč potřebujete vynutit smazání modulu?
Někdy se modul zasekne v ukončení/neznámo stavu na nedostupném uzlu po uplynutí časového limitu.
Pody mohou také vstoupit do těchto stavů, když se uživatel pokusí o řádné smazání Podu na nedosažitelném uzlu.
V těchto scénářích můžete modul násilím smazat.
Pokud chcete násilně odstranit pod pomocí kubectl verze>=1.5, proveďte následující:
kubectl delete pods pod_name --grace-period=0 --force
Pokud používáte jakoukoli verzi kubectl <=1.4, měli byste vynechat --force
možnost a použití:
kubectl delete pods pod_name --grace-period=0
Nyní smažte modul „pod-delete-demo“ výše uvedeným způsobem:
[email protected]:~# kubectl delete pod pod-delete-demo --force --grace-period=0 --namespace=default
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod-delete-demo" force delete
POZNÁMKA: Vynutit odstranění podů ne počkejte na potvrzení z kubeletu, že modul byl ukončen.
Pokud i po těchto příkazech je modul zaseknutý v Unknown
stavu, použijte k odstranění modulu z clusteru následující příkaz:
kubectl patch pod pod-delete-demo -p '{"metadata":{"finalizers":null}}'
Potvrďte, že modul byl smazán:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
Doufám, že vám tento tip Kubernetes pomůže. Zůstaňte přihlášeni k odběru dalších tipů a výukových programů DevOps.
Rakesh Jain
DevOps Professional | RHCA | Jenkins | Git | Docker | Kubernetes | Ansible | Prometheus | Grafana | AWS Cloud