命令删除所有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
答
你只需要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
选项可隐藏标题。 - 使用指令
sed
取前两个字,分别代表namespace
和pod's name
,然后使用它们组装delete
命令。 - 最终
delete
命令就像:kubectl --namespace kube-system delete pod heapster-eq3yw
。 - 使用
e
修饰符s
命令来执行上面汇编的命令,这将做实际的delete
工作。
为了避免kube-system
命名空间中删除豆荚,只需要添加grep -v kube-system
的sed
命令之前排除kube-system
命名空间。
+0
您也可以放弃'--all-namespaces '如果你不想删除'kube-system'命名空间中的pod – ianstarz
“”{.items [*]。metadata.name}“ - 此答案中有双引号...请检查并编辑 – kumar
修复了报价 –