命令删除所有 kubernetes 命名空间中的所有 pods
Command to delete all pods in all kubernetes namespaces
查看文档后,有一个 API 删除单个 pod 的调用,但是有没有办法删除 all pods所有命名空间?
没有命令可以完全按照您的要求执行。
这里有一些势均力敌的比赛。
在 运行 这些命令之前要小心。如果您使用多个集群,请确保连接到正确的集群。考虑 运行。 kubectl config view
先.
您可以使用以下命令删除单个命名空间中的所有 pods:
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
即可:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace delete pod /e'
解释:
- 使用命令
kubectl get pods --all-namespaces
获取所有命名空间中所有pods的列表。
- 使用
--no-headers=true
选项隐藏 headers。
- 使用
sed
的s
命令获取前两个词,分别代表namespace
和pod's name
,然后assemble delete
命令使用它们。
- 最后的
delete
命令就像:
kubectl --namespace kube-system delete pod heapster-eq3yw
.
- 使用
s
命令的 e
修饰符来执行上面的命令 assembled,这将执行实际的 delete
工作。
为避免在kube-system
命名空间中删除pods,只需要在sed
命令之前添加grep -v kube-system
以排除kube-system
命名空间。
kubectl delete daemonsets,replicasets,services,deployments,pods,rc,ingress --all --all-namespaces
也要摆脱它们讨厌的复制控制器。
如果您已经 pods 重新创建,请考虑先删除所有部署
kubectl delete -n *NAMESPACE deployment *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)插件可能对你有用,它可以让你对选定的资源进行批量操作。这是删除pods
的命令
' 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
你可以简单地运行
kubectl delete all --all --all-namespaces
第一个all
表示常见的资源种类(pods、replicasets、deployments,...)
kubectl get all == kubectl get pods,rs,deployments, ...
第二个--all
表示selectselected种的所有资源
注意 all
不包括:
- 非命名空间资源(例如,集群角色绑定、集群角色……)
- 配置映射
- 角色绑定
- 角色
- 秘密
- ...
为了完美清理,
- 您可以使用其他工具(例如 Helm、Kustomize 等)
- 您可以使用命名空间。
- 您可以在创建资源时使用标签。
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
希望对某人有用。
仅删除所有命名空间中的所有 PODs(重新启动部署)
kubectl get pod -A -o yaml | kubectl delete -f -
您可以使用 kubectl delete pods -l dev-lead!=carisa
或您拥有的标签。
如果您有多个崩溃或错误的 pod 并且您想要删除它们
kubectl delete pods --all -n |杰普
删除 pv 的步骤:
删除所有部署和 pods 或与该 PV 相关的资源
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
上面已经暗示了,但我只是想指出“--all-namespaces”的快捷方式是“-A”,它是大写的 A。HTH 某人。我已经打开了一个 PR 将这个有用的提示添加到官方 Kubernetes Cheat Sheet.
查看文档后,有一个 API 删除单个 pod 的调用,但是有没有办法删除 all pods所有命名空间?
没有命令可以完全按照您的要求执行。
这里有一些势均力敌的比赛。
在 运行 这些命令之前要小心。如果您使用多个集群,请确保连接到正确的集群。考虑 运行。 kubectl config view
先.
您可以使用以下命令删除单个命名空间中的所有 pods:
kubectl delete --all pods --namespace=foo
您还可以删除命名空间中的所有部署,这将删除与命名空间
对应的部署附加的所有podskubectl 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
即可:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace delete pod /e'
解释:
- 使用命令
kubectl get pods --all-namespaces
获取所有命名空间中所有pods的列表。 - 使用
--no-headers=true
选项隐藏 headers。 - 使用
sed
的s
命令获取前两个词,分别代表namespace
和pod's name
,然后assembledelete
命令使用它们。 - 最后的
delete
命令就像:kubectl --namespace kube-system delete pod heapster-eq3yw
. - 使用
s
命令的e
修饰符来执行上面的命令 assembled,这将执行实际的delete
工作。
为避免在kube-system
命名空间中删除pods,只需要在sed
命令之前添加grep -v kube-system
以排除kube-system
命名空间。
kubectl delete daemonsets,replicasets,services,deployments,pods,rc,ingress --all --all-namespaces
也要摆脱它们讨厌的复制控制器。
如果您已经 pods 重新创建,请考虑先删除所有部署
kubectl delete -n *NAMESPACE deployment *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)插件可能对你有用,它可以让你对选定的资源进行批量操作。这是删除pods
的命令 ' 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
你可以简单地运行
kubectl delete all --all --all-namespaces
第一个
all
表示常见的资源种类(pods、replicasets、deployments,...)kubectl get all == kubectl get pods,rs,deployments, ...
第二个
--all
表示selectselected种的所有资源
注意 all
不包括:
- 非命名空间资源(例如,集群角色绑定、集群角色……)
- 配置映射
- 角色绑定
- 角色
- 秘密
- ...
为了完美清理,
- 您可以使用其他工具(例如 Helm、Kustomize 等)
- 您可以使用命名空间。
- 您可以在创建资源时使用标签。
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
希望对某人有用。
仅删除所有命名空间中的所有 PODs(重新启动部署)
kubectl get pod -A -o yaml | kubectl delete -f -
您可以使用 kubectl delete pods -l dev-lead!=carisa
或您拥有的标签。
如果您有多个崩溃或错误的 pod 并且您想要删除它们
kubectl delete pods --all -n |杰普
删除 pv 的步骤:
删除所有部署和 pods 或与该 PV 相关的资源
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
上面已经暗示了,但我只是想指出“--all-namespaces”的快捷方式是“-A”,它是大写的 A。HTH 某人。我已经打开了一个 PR 将这个有用的提示添加到官方 Kubernetes Cheat Sheet.