如何删除kubernetes节点中的所有内容?
内容包括部署,副本集等。我试图单独删除deplyoments。但kubrenetes再次重新创建了所有pod。
有没有办法删除节点中存在的所有副本集?
答案 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
我附上了进一步研究的链接。
答案 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