在查看文档时,有一个API调用用于删除单个pod,但是否有一种方法可以删除所有命名空间中的所有 pod ?
没有命令可以完全按照你的要求去做。
以下是一些势均力敌的比赛。
在运行这些命令之前一定要小心。如果使用多个集群,请确保连接到正确的集群。考虑运行。kubectl config view第一。
kubectl config view
你可以用这个命令删除一个命名空间中的所有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
你只需要sed来做这个:
sed
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
解释道:
kubectl get pods --all-namespaces
--no-headers=true
s
namespace
pod's name
delete
kubectl --namespace kube-system delete pod heapster-eq3yw
e
为了避免在kube-system命名空间中删除pods,只需要在sed命令之前添加grep -v kube-system来排除kube-system命名空间。
kube-system
grep -v kube-system
kubectl delete daemonsets,replicasets,services,deployments,pods,rc,ingress --all --all-namespaces
也摆脱了烦人的复制控制器。
如果您已经有了重新创建的pod,请考虑先删除所有部署
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
只需将NAMSPACE和DEPLOYMENT替换为相应的NAMSPACE和DEPLOYMENT,就可以通过以下命令获得所有部署信息
kubectl get deployments --all-namespaces
下面是一个单行程序,可以使用grep进行扩展以按名称过滤。
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \ tr " " "\n" | \ xargs -i -P 0 kubectl delete pods {}
Kubectl bulk (bulk-action on krew)插件可能对您有用,它为您提供了选定资源的批量操作。删除pod的命令
' kubectl bulk pods -n namespace delete '
你可以在这中检查细节
我创建了一个python代码删除所有在命名空间
delall.py
import json,sys,os; obj=json.load(sys.stdin); for item in obj["items"]: os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")
然后
kubectl get all -n kong -o json | python delall.py
你可以简单地跑
kubectl delete all --all --all-namespaces
all
kubectl get all == kubectl get pods,rs,deployments, ...
第二个--all表示选择所选类型的所有资源
--all
注意all不包括:
为了完美地清理,
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
K8s完全在命名空间的基础上工作。如果要释放与指定命名空间相关的所有资源。
你可以使用下面提到的:
kubectl delete namespace k8sdemo-app
我尝试了这里列出的答案中的命令,但pods卡在终止状态。 我发现下面的命令可以删除特定名称空间中的所有pods,如果处于终止状态或无法删除它,那么可以强制删除pods。
kubectl delete pods --all --grace-period=0 --force --namespace namespace
希望对别人有用。
仅删除所有命名空间中的所有pod(重新启动部署)
kubectl get pod -A -o yaml | kubectl delete -f -
你可以使用kubectl delete pods -l dev-lead!=carisa或其他标签。
kubectl delete pods -l dev-lead!=carisa
如果你有多个pod崩溃或出错,你想删除它们
Kubectl delete pods——all -n | gep
删除pv的步骤如下:
删除所有与该PV相关的部署和pods或资源
kubectl delete --all deployment -n namespace kubectl delete --all pod -n namespace
kubectl edit pv pv_name -n namespace remove kubernetes.io/pv-protection
kubectl delete pv pv_name -n namespace
上面已经暗示过,但我只是想指出,“;——all- namespes"”的快捷方式;是“-A"那是大写的a。HTH某人。我已经打开了一个PR,将这个有用的提示添加到官方Kubernetes小抄表中。
一行命令删除所有命名空间中的所有pod。
kubectl get ns -o=custom-columns=Namespace:.metadata.name --no-headers | xargs -n1 kubectl delete pods --all -n
如果你想删除所有命名空间中的pod,只是为了让它们重新启动,并且你知道其中一些将被重新创建,我喜欢下面的for循环:
for i in $(kubectl get pods -A | awk '{print $1}' | uniq | grep -V NAMESPACE); do kubectl delete --all pods -n $i; done