删除kubernetes节点中的所有内容

时间:2018-01-03 13:00:09

标签: kubernetes containers replication

如何删除kubernetes节点中的所有内容?
内容包括部署,副本集等。我试图单独删除deplyoments。但kubrenetes再次重新创建了所有pod。
有没有办法删除节点中存在的所有副本集?

5 个答案:

答案 0 :(得分:17)

如果您正在测试,最简单的方法是

kubectl delete deployment --all

如果你使用minikube,最简单的可能是删除机器并重新开始使用新节点

minikube delete
minikube start

如果我们正在谈论生产集群Kubernetes has a built-in feature to drain a node of the cluster,请安全地从该节点中删除所有对象。

  

在对节点执行维护之前,您可以使用kubectl drain安全地逐出节点中的所有pod。安全驱逐允许pod的容器优雅地终止,并且会尊重你指定的PodDisruptionBudgets。

     

注意:默认情况下,kubectl drain会忽略节点上无法杀死的某些系统窗格;有关更多详细信息,请参阅kubectl drain文档。

     

kubectl drain成功返回时,表示所有pod(除了前一段中所述排除的那些)已被安全驱逐(尊重所需的正常终止期,并且不违反任何应用程序级别中断SLOs)。然后通过关闭其物理机器来关闭节点,或者如果在云平台上运行,则删除其虚拟机。

首先,确定要排空的节点的名称。您可以使用

列出群集中的所有节点
kubectl get nodes

接下来,告诉Kubernetes排空节点:

kubectl drain <node name>

一旦它返回(没有给出错误),您可以关闭节点(或者等效地,如果在云平台上,删除支持节点的虚拟机)。 drain等待优雅终止。在命令完成之前,您不应该在机器上操作。

如果在维护操作期间将节点保留在群集中,则需要运行

kubectl uncordon <node name>

之后告诉Kubernetes它可以恢复将新pod安排到节点上。

请注意,如果有任何不受ReplicationController,ReplicaSet,DaemonSet,StatefulSet或Job管理的pod,则drain将不会删除任何pod,除非您使用--force,as mentioned in the docs

kubectl drain <node name> --force

答案 1 :(得分:1)

Kubenertes提供名称空间对象,用于隔离和分离关注点。因此,建议在自定义命名空间中应用所有k8s资源对象(部署,副本集,窗格,服务和其他)。

现在,如果要删除所有相关和相关的k8s资源,只需删除将删除所有这些资源的命名空间。

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

我附上了进一步研究的链接。

Namespaces

答案 2 :(得分:1)

minikube delete --all 

如果您使用的是 minikube

它会让你开始一个新的干净的集群。


如果你在 Kubernetes 上运行:

kubectl delete pods,deployments -A --all

它将从所有命名空间中删除它,您可以在同一命令中添加更多对象。

答案 3 :(得分:0)

我尝试了很多变种,以从教程中删除旧的pod,包括所有here

最终对我有用的是:

kubectl delete replicaset --all

一次删除一个似乎无效。只有使用--all标志才能删除所有吊舱,而无需重新创建。

答案 4 :(得分:-1)

minikube delete
rm -rf ~/.minikube
minikube start