wake-up-neo.com

Löschen Sie den gesamten Inhalt eines kubernetes-Knotens

Wie lösche ich den gesamten Inhalt eines kubernetes-Knotens?
Zu den Inhalten gehören Implementierungen, Replikatsätze usw. Ich habe versucht, Deplyoments separat zu löschen. Kubrenetes stellt jedoch alle Hülsen wieder her.
Gibt es Möglichkeiten, alle in einem Knoten vorhandenen Replikatsätze zu löschen? 

6
Mufeed

Wenn Sie Dinge testen, wäre der einfachste Weg

kubectl delete deployment --all

Trotzdem, wenn Sie Minikube verwenden, ist es am einfachsten, die Maschine zu löschen und mit einem neuen Knoten erneut zu beginnen

minikube delete
minikube start

Wenn es sich um einen Produktionscluster handelt, hat Kubernetes eine integrierte Funktion, um einen Knoten des Clusters zu entleeren , wobei alle Objekte sicher von diesem Knoten entfernt werden.

Sie können kubectl drain verwenden, um alle Pods sicher von einem Knoten zu entfernen, bevor Sie die Wartung des Knotens durchführen. Durch sichere Vertreibungen können die Container des Pod ordnungsgemäß beendet werden, und die von Ihnen angegebenen PodDisruptionBudgets werden berücksichtigt.

Note: Standardmäßig ignoriert kubectl drain bestimmte System-Pods auf dem Knoten, die nicht abgebrochen werden können. Weitere Informationen finden Sie in der Dokumentation zu kubectl drain.

Wenn kubectl drain erfolgreich zurückgegeben wird, bedeutet dies, dass alle Pods (mit Ausnahme der im vorherigen Abschnitt beschriebenen ausgeschlossen) sicher entfernt wurden (unter Einhaltung der gewünschten ordentlichen Beendigungsfrist und ohne Verletzung von Unterbrechungs-SLOs auf Anwendungsebene). Es ist dann sicher, den Knoten herunterzufahren, indem die physische Maschine heruntergefahren wird oder, wenn sie auf einer Cloud-Plattform ausgeführt wird, die virtuelle Maschine gelöscht wird.

Identifizieren Sie zunächst den Namen des Knotens, den Sie entleeren möchten. Sie können alle Knoten in Ihrem Cluster mit auflisten

kubectl get nodes

Als Nächstes weisen Sie Kubernetes an, den Knoten zu entleeren:

kubectl drain <node name>

Nach der Rückkehr (ohne Fehlermeldung) können Sie den Knoten herunterfahren (oder auf einer Cloud-Plattform gleichermaßen die virtuelle Maschine löschen, die den Knoten unterstützt). drain wartet auf eine ordnungsgemäße Beendigung. Sie sollten nicht an der Maschine arbeiten, bis der Befehl abgeschlossen ist.

Wenn Sie den Knoten während des Wartungsvorgangs im Cluster belassen, müssen Sie ihn ausführen

kubectl uncordon <node name>

um anschließend Kubernetes mitzuteilen, dass er die Planung neuer Pods auf dem Knoten fortsetzen kann.

Beachten Sie Folgendes: Wenn Pods vorhanden sind, die nicht von ReplicationController, ReplicaSet, DaemonSet, StatefulSet oder Job verwaltet werden, werden drain keine Pods löschen, es sei denn, Sie verwenden --force, wie in den Dokumenten .

kubectl drain <node name> --force
13
fiunchinho

Kubenertes stellt Namensraumobjekte zur Isolation und Trennung von Anliegen bereit. Daher wird empfohlen, alle k8s-Ressourcenobjekte (Bereitstellung, ReplicaSet, Pods, Services usw.) in einem benutzerdefinierten Namespace anzuwenden. 

Wenn Sie alle relevanten und verwandten k8s-Ressourcen entfernen möchten, müssen Sie nur den Namespace löschen, wodurch alle diese Ressourcen entfernt werden. 

kubectl create namespace custom-namespace
kubectl create -f deployment.yaml --namespace=custom-namespace
kubectl delete namespaces custom-namespace

Ich habe einen Link für weitere Untersuchungen beigefügt.

Namespaces

1
Suresh Vishnoi

Ich habe so viele Variationen versucht, um alte Pods aus Tutorials zu löschen, einschließlich allem hier .

Was schließlich für mich gearbeitet hat, war:

kubectl delete replicaset --all

Es schien nicht zu funktionieren, sie einzeln zu löschen. es war nur mit dem --all kennzeichnen, dass alle Pods gelöscht wurden, ohne neu erstellt zu werden.

0
Scott Rudiger