Answers:
没有命令可以完全按照您的要求执行。
这是一些接近的比赛。
您可以使用以下命令删除单个命名空间中的所有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)
kube-system
名称空间中。在消息示例中,我可以看到default
名称空间。是否kube-system
已使用附带的命令删除?
您只需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
命令of sed
提取分别代表namespace
和的前两个词pod's name
,然后组合delete
使用它们命令。delete
命令就像:
kubectl --namespace kube-system delete pod heapster-eq3yw
。e
修饰符s
执行上面汇编的命令,它将完成实际的delete
工作。为了避免删除kube-system
命名空间中的Pod ,只需在命令前添加grep -v kube-system
以排除kube-system
命名空间即可sed
。
--all-namespaces
,如果你不想在删除荚kube-system
命名空间
您可以简单地运行
kubectl delete all --all --all-namespaces
第一种all
表示常见的资源种类(吊舱,副本集,部署等)
kubectl get all == kubectl get pods,rs,deployments, ...
第二种--all
方法选择所选种类的所有资源
请注意,其中all
不包括:
为了完美清理
这是一个单行代码,可以使用grep扩展以按名称过滤。
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
Kubectl批量(krew上的批量操作)插件可能对您有用,它为您提供了对选定资源的批量操作。这是删除吊舱的命令
' kubectl bulk pods -n namespace delete '
您可以在此查看详细信息
K8s完全可以在名称空间的基础上工作。如果您要释放与指定名称空间相关的所有资源。
您可以使用以下提及的内容:
kubectl删除名称空间k8sdemo-app