命令删除所有kubernetes命名空间中的所有豆荚

问题描述:

看着文档有一个API调用来删除'a'豆荚,有没有办法杀死所有命名空间中的所有豆荚?命令删除所有kubernetes命名空间中的所有豆荚

没有命令来完成你所要求的。

这里有一些密切的匹配。

您可以删除所有舱体在单一命名空间中使用此命令:

kubectl delete --all pods --namespace=foo 

您可以删除每个命名空间中的所有命名空间,每一个对象(但不包括未命名空间中的物体,如节点和一些事件)用这个命令:

kubectl delete --all namespaces 

然而,后者的命令可能不是你想要做的事,因为它会删除KUBE-系统命名空间的东西,这将使你的群集无法使用。

此命令将删除除KUBE-系统中的所有命名空间,这可能是有用的:

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

“”{.items [*]。metadata.name}“ - 此答案中有双引号...请检查并编辑 – kumar

+0

修复了报价 –

你只需要sed做到这一点:

kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e' 

解释说:

  1. 使用命令kubectl get pods --all-namespaces获取所有命名空间中所有窗格的列表。
  2. 使用--no-headers=true选项可隐藏标题。
  3. 使用指令sed取前两个字,分别代表namespacepod's name,然后使用它们组装delete命令。
  4. 最终delete命令就像: kubectl --namespace kube-system delete pod heapster-eq3yw
  5. 使用e修饰符s命令来执行上面汇编的命令,这将做实际的delete工作。

为了避免kube-system命名空间中删除豆荚,只需要添加grep -v kube-systemsed命令之前排除kube-system命名空间。

+0

您也可以放弃'--all-namespaces '如果你不想删除'kube-system'命名空间中的pod – ianstarz