用于删除所有kubernetes名称空间中的所有pod的命令

问题描述 投票:78回答:6

在查看文档时,有一个api调用删除'a'pod,有没有办法杀死所有命名空间中的所有pod?

rest kubernetes
6个回答
150
投票

没有命令可以完全按照你的要求去做。

这是一些近距离比赛。

您可以使用以下命令删除单个命名空间中的所有窗格:

kubectl delete --all pods --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

43
投票
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all

摆脱它们讨厌的复制控制器也是如此。


11
投票

你只需要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获取所有命名空间中所有pod的列表。
  2. 使用--no-headers=true选项隐藏标题。
  3. 使用ssed命令获取前两个单词,分别代表namespacepod's name,然后使用它们组装delete命令。
  4. 最后的delete命令就像:kubectl --namespace kube-system delete pod heapster-eq3yw
  5. 使用e命令的s修饰符执行上面汇编的命令,这将执行实际的delete工作。

要避免在kube-system命名空间中删除pod,只需在grep -v kube-system命令之前添加kube-system以排除sed命名空间。


0
投票
kubectl delete pods --all

那会删除所有的pod。

这同样适用于服务,部署,配置映射和作业。


0
投票

如果您已经重新创建了pod,请考虑先删除所有部署

kubectl delete -n *NAMESPACE deployment *DEPLOYMENT

只需将NAMESPACE和DEPLOYMENT替换为相应的,您可以通过以下命令获取所有部署信息

kubectl get deployments --all-namespaces

0
投票

这是一个可以使用grep扩展的单行来按名称过滤。

kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
© www.soinside.com 2019 - 2024. All rights reserved.