【发布时间】:2016-02-04 04:48:17
【问题描述】:
在查看文档时,有一个 API 调用来删除单个 pod,但是有没有办法删除所有命名空间中的所有个 pod?
【问题讨论】:
标签: kubernetes
在查看文档时,有一个 API 调用来删除单个 pod,但是有没有办法删除所有命名空间中的所有个 pod?
【问题讨论】:
标签: kubernetes
没有命令可以完全按照您的要求进行操作。
这里有一些接近的比赛。
在运行这些命令之前要小心。如果您使用多个集群,请确保您连接到正确的集群。考虑跑步。 kubectl config view 第一。
您可以使用以下命令删除单个命名空间中的所有 pod:
kubectl delete --all pods --namespace=foo
您还可以删除命名空间中的所有部署,这将删除与命名空间对应的部署附加的所有 pod
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
【讨论】:
kubectl delete pods --all --all-namespaces 似乎有时会起作用(不确定是什么导致它在某些环境中起作用而在其他环境中不起作用)。它适用于我的堡垒主机,但不适用于笔记本电脑。都运行 debian 并且都运行相同版本的 kubectl(集群版本 1.13)
kubectl delete --all namespaces删除
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all --all-namespaces
也摆脱它们讨厌的复制控制器。
【讨论】:
ing 也删除入口
你可以简单地运行
kubectl delete all --all --all-namespaces
第一个all 表示常见的资源种类(pod、replicasets、deployments...)
kubectl get all == kubectl get pods,rs,deployments, ...第二个--all表示选择所有被选择种类的资源
注意all不包括:
为了完美收拾,
【讨论】:
您只需要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获取所有命名空间中的所有pod列表。--no-headers=true 选项隐藏标题。sed的s命令获取前两个单词,分别代表namespace和pod's name,然后使用它们组装delete命令。 delete 命令就像:
kubectl --namespace kube-system delete pod heapster-eq3yw。s 命令的e 修饰符来执行上面组装的命令,这将执行实际的delete 工作。为避免删除kube-system命名空间中的pod,只需在sed命令前添加grep -v kube-system以排除kube-system命名空间。
【讨论】:
kube-system 命名空间中的 pod,也可以直接删除 --all-namespaces
K8s 完全基于命名空间的基础。如果你想释放与指定命名空间相关的所有资源。
你可以使用下面提到的:
kubectl delete namespace k8sdemo-app
【讨论】:
我尝试了此处列出的答案中的命令,但 pod 卡在了终止状态。
我发现下面的命令可以删除特定命名空间中的所有 pod,如果卡在终止状态或者您无法删除它,那么您可以强制删除 pod。
kubectl delete pods --all --grace-period=0 --force --namespace namespace
希望它对某人有用。
【讨论】:
仅删除所有命名空间中的所有 POD(重新启动部署)
kubectl get pod -A -o yaml | kubectl delete -f -
【讨论】:
这是一个可以用 grep 扩展以按名称过滤的单行代码。
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
【讨论】:
kubectl get pods --selector=app="${DEPLOYMENT_NAME}" -o=jsonpath='{.items[*].metadata.name}' | tr " " "\n" | xargs -n 1 kubectl delete pod
您可以使用kubectl delete pods -l dev-lead!=carisa 或您拥有的标签。
【讨论】:
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
【讨论】:
如果您已经有重新创建的 pod,请考虑先删除所有部署
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
只需将NAMSPACE和DEPLOYMENT替换成对应的,就可以通过如下命令获取所有deployment信息
kubectl get deployments --all-namespaces
【讨论】:
Kubectl bulk(krew 上的批量操作)插件可能对您有用,它为您提供对选定资源的批量操作。这是删除 pod 的命令
' kubectl bulk pods -n namespace delete '
您可以在this查看详情
【讨论】:
我创建了一个 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
【讨论】:
如果您有多个 pod 崩溃或出错,并且您想删除它们
kubectl 删除 pod --all -n |杰普
【讨论】:
删除pv的步骤:
删除与该 PV 相关的所有部署和 pod 或资源
kubectl delete --all deployment -n namespace
kubectl delete --all pod -n namespace
编辑 pv
kubectl edit pv pv_name -n namespace
remove kubernetes.io/pv-protection
删除pv
kubectl delete pv pv_name -n namespace
【讨论】: