Beim Betrachten der Dokumente gibt es einen API-Aufruf zum Löschen eines Pods. Gibt es jedoch eine Möglichkeit, alle Pods in allen Namespaces zu löschen?
quelle
Beim Betrachten der Dokumente gibt es einen API-Aufruf zum Löschen eines Pods. Gibt es jedoch eine Möglichkeit, alle Pods in allen Namespaces zu löschen?
Es gibt keinen Befehl, genau das zu tun, was Sie gefragt haben.
Hier sind einige enge Übereinstimmungen.
Mit diesem Befehl können Sie alle Pods in einem einzigen Namespace löschen:
kubectl delete --all pods --namespace=foo
Sie können auch alle Bereitstellungen im Namespace löschen, wodurch alle Pods gelöscht werden, die mit den dem Namespace entsprechenden Bereitstellungen verknüpft sind
kubectl delete --all deployments --namespace=foo
Mit diesem Befehl können Sie alle Namespaces und jedes Objekt in jedem Namespace löschen (jedoch keine Objekte ohne Namespace wie Knoten und einige Ereignisse):
kubectl delete --all namespaces
Der letztere Befehl ist jedoch wahrscheinlich nicht das, was Sie tun möchten, da er Dinge im Namespace des Kubesystems löscht, wodurch Ihr Cluster nicht mehr verwendbar wird.
Dieser Befehl löscht alle Namespaces außer kube-system, was nützlich sein kann:
for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
kubectl delete ns $each
done
kubectl delete pods --all --all-namespaces
scheint manchmal zu funktionieren (nicht sicher, warum es in einigen Umgebungen und nicht in anderen funktioniert). Es funktioniert gut von meinem Bastion Host, aber nicht von Laptop. Beide laufen Debian und beide laufen die gleiche Version von Kubectl (Cluster-Version 1.13)kube-system
Namespace. Im Nachrichtenbeispiel kann ich dendefault
Namespace sehen. Wirdkube-system
mit dem von Ihnen angehängten Befehl gelöscht?um sie auch lästige Replikations-Controller loszuwerden.
quelle
ing
auchSie müssen nur Folgendes
sed
tun:Erklärt:
kubectl get pods --all-namespaces
, um die Liste aller Pods in allen Namespaces abzurufen.--no-headers=true
Option, um die Überschriften auszublenden.s
Befehl vonsed
, um die ersten beiden Wörter abzurufen, die jeweils repräsentieren,namespace
und setzen Siepod's name
dann dendelete
Befehl mit ihnen zusammen.delete
Befehl lautet wie folgt :kubectl --namespace kube-system delete pod heapster-eq3yw
.e
Modifikator dess
Befehls, um den oben zusammengestellten Befehl auszuführen, der die eigentlichendelete
Arbeiten ausführt .Um das Löschen von Pods im
kube-system
Namespace zu vermeiden , müssen Sie nur hinzufügengrep -v kube-system
, um denkube-system
Namespace vor demsed
Befehl auszuschließen .quelle
--all-namespaces
löschen , wenn Sie keine Pods imkube-system
Namespace löschen möchtenSie können einfach laufen
Der erste
all
bedeutet die gängigen Ressourcentypen (Pods, Replikatsätze, Bereitstellungen, ...)kubectl get all == kubectl get pods,rs,deployments, ...
Das zweite
--all
bedeutet, alle Ressourcen der ausgewählten Arten auszuwählenBeachten Sie, dass
all
Folgendes nicht enthalten ist:Um perfekt aufzuräumen,
quelle
Hier ist ein Einzeiler, der mit grep erweitert werden kann, um nach Namen zu filtern.
quelle
quelle
Wenn Sie bereits Pods haben, die neu erstellt werden, sollten Sie zuerst alle Bereitstellungen löschen
Ersetzen Sie einfach den NAMSPACE und die DEPLOYMENT durch die entsprechenden. Sie können alle Bereitstellungsinformationen mit dem folgenden Befehl abrufen
quelle
Das Kubectl-Bulk-Plugin (Bulk-Action auf Krew) kann für Sie nützlich sein. Es bietet Ihnen Bulk-Operationen für ausgewählte Ressourcen. Dies ist der Befehl zum Löschen von Pods
Sie könnten überprüfen Details in dieser
quelle
Ich erstelle einen Python-Code, um alle im Namespace zu löschen
delall.py
und dann
quelle
K8s arbeitet vollständig an der Grundlage des Namespace. Wenn Sie alle Ressourcen freigeben möchten, die sich auf den angegebenen Namespace beziehen.
Sie können die unten genannten verwenden:
kubectl Namespace löschen k8sdemo-app
quelle