在查看文档时,有一个API调用可以删除单个pod,但是否有一种方法可以删除所有名称空间中的所有pod ?


当前回答

kubectl delete daemonsets,replicasets,services,deployments,pods,rc,ingress --all --all-namespaces

也摆脱了烦人的复制控制器。

其他回答

没有命令可以完全按照你的要求去做。

以下是一些势均力敌的比赛。

在运行这些命令之前一定要小心。如果使用多个集群,请确保连接到正确的集群。考虑运行。Kubectl配置视图优先。

你可以用这个命令删除一个命名空间中的所有pod:

kubectl delete --all pods --namespace=foo

您还可以删除命名空间中的所有部署,这将删除与该命名空间对应的部署附加的所有pods

kubectl delete --all deployments --namespace=foo

你可以用这个命令删除所有命名空间和每个命名空间中的每个对象(但不能删除非命名空间的对象,如节点和一些事件):

kubectl delete --all namespaces

但是,后一个命令可能不是您想要的,因为它将删除kube-system名称空间中的内容,这将使您的集群不可用。

该命令将删除除kube-system之外的所有命名空间,这可能很有用:

for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
  kubectl delete ns $each
done

仅删除所有命名空间中的所有pod(重新启动部署)

 kubectl get pod -A -o yaml | kubectl delete -f -

一行命令删除所有命名空间中的所有pod。

kubectl get ns -o=custom-columns=Namespace:.metadata.name --no-headers | xargs -n1 kubectl delete pods --all -n

上面已经暗示过,但我只是想指出“——all-namespaces”的快捷方式是“-A”,大写的a . HTH someone。我已经打开了一个PR,将这个有用的提示添加到官方Kubernetes小抄表中。

你可以简单地跑

kubectl delete all --all --all-namespaces

第一个都是指常见的资源类型(pods, replicasets, deployment,…) Kubectl get all == Kubectl get pods,rs,部署,… 第二,all表示选择所选类型的所有资源


注意,all不包括:

非命名空间资源(例如,clusterrolebindings, clusterroles,…) configmaps rolebindings 角色 秘密 ...


为了完美地清理,

你可以使用其他工具(例如Helm, Kustomize,…) 您可以使用名称空间。 您可以在创建资源时使用标签。