Bei der Arbeit an einer Kubernetes-Clusterumgebung kann es vorkommen, dass Sie in eine Situation geraten, in der Sie Pods von einem Ihrer Worker-Knoten löschen müssen.
Möglicherweise müssen Sie Probleme mit dem Knoten selbst beheben, den Knoten aktualisieren oder Ihren Cluster einfach herunterskalieren.
Das Löschen eines Kubernetes-Pods ist mit dem kubectl delete pod
sehr einfach Befehl:
kubectl delete pod pod-name
Es gibt jedoch bestimmte Schritte, die Sie unternehmen sollten, um Unterbrechungen für Ihre Anwendung zu minimieren. Ich werde es in diesem Artikel ausführlich erklären.
Kubernetes-Pods ordnungsgemäß löschen
Listen Sie zuerst alle Pods auf:
[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>
Angenommen, Sie möchten den Pod mit dem Namen „pod-delete-demo“ löschen, führen Sie den folgenden Befehl aus:
[email protected]:~# kubectl delete pod pod-delete-demo
pod "pod-delete-demo" deleted
Bestätigen Sie, dass der betreffende Pod gelöscht wurde, indem Sie alle Pods auflisten:
[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>
Sie können sehen, dass kein pod-delete-demo Pod läuft.
Löschen von Kubernetes-Pods erzwingen
Warum müssen Sie das Löschen von Pods erzwingen?
Manchmal bleibt der Pod bei terminating/unknown hängen Zustand auf einem nicht erreichbaren Knoten nach einem Timeout.
Pods können auch in diese Zustände eintreten, wenn der Benutzer versucht, einen Pod auf einem nicht erreichbaren Knoten ordnungsgemäß zu löschen.
In diesen Szenarien können Sie den Pod zwangsweise löschen.
Wenn Sie einen Pod mit kubectl-Version>=1.5 zwangsweise löschen möchten, gehen Sie wie folgt vor:
kubectl delete pods pod_name --grace-period=0 --force
Wenn Sie irgendeine Version von kubectl <=1.4 verwenden, sollten Sie --force
weglassen Option und Verwendung:
kubectl delete pods pod_name --grace-period=0
Lassen Sie uns nun den Pod „pod-delete-demo“ mit der obigen Methode löschen:
[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
HINWEIS: Pod-Löschungen erzwingen nicht Warten Sie auf die Bestätigung vom Kubelet, dass der Pod beendet wurde.
Wenn der Pod auch nach diesen Befehlen in Unknown
steckt verwenden Sie den folgenden Befehl, um den Pod aus dem Cluster zu entfernen:
kubectl patch pod pod-delete-demo -p '{"metadata":{"finalizers":null}}'
Bestätigen Sie, dass der Pod gelöscht wurde:
[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>
Ich hoffe, Sie finden diesen Kubernetes-Tipp hilfreich. Abonnieren Sie weitere DevOps-Tipps und Tutorials .
Rakesh Jain
DevOps-Profi | RCA | Jenkins | Git | Docker | Kubernetes | Ansible | Prometheus | Grafana | AWS-Cloud