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

时间:2015-11-03 21:15:09

标签: rest kubernetes

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

15 个答案:

答案 0 :(得分:142)

没有命令可以完全按照你的要求行事。

以下是一些非常接近的比赛。

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

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

答案 1 :(得分:38)

kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all

也可以摆脱它们讨厌的复制控制器。

答案 2 :(得分:26)

您可以简单地运行

kubectl delete all --all --all-namespaces
  • 第一个all表示常见的资源类型(吊舱,副本集,部署等)

    • kubectl get all == kubectl get pods,rs,deployments, ...
  • 第二个--all意味着选择所选种类的所有资源


请注意,all不包括:

  • 非命名空间资源(例如clusterrolebindings,clusterroles等)
  • configmaps
  • 角色绑定
  • 角色
  • 秘密
  • ...

为了完美清理,

  • 您可以使用其他工具(例如Helm,Kustomize等)
  • 您可以使用名称空间。
  • 创建资源时可以使用标签。

答案 3 :(得分:9)

您只需要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. 使用s sed命令获取分别代表namespacepod's name的前两个单词,然后使用它们汇编delete命令。
  4. 最终的delete命令就像: kubectl --namespace kube-system delete pod heapster-eq3yw
  5. 使用e命令的s修饰符执行上面汇编的命令,这将执行实际的delete工作。
  6. 要避免删除kube-system命名空间中的pod,只需在grep -v kube-system命令之前添加kube-system以排除sed命名空间。

答案 4 :(得分:2)

K8s完全可以在名称空间的基础上使用。如果您要释放与指定名称空间相关的所有资源。

您可以使用以下提到的内容:

kubectl delete namespace k8sdemo-app

答案 5 :(得分:1)

kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A

答案 6 :(得分:1)

仅删除所有 Namespace 中的所有 POD(重新启动部署)

 kubectl get pod -A -o yaml | kubectl delete -f -

答案 7 :(得分:0)

switch (true) {
case hour <= 5:
  imgTxt.innerHTML = "GET SOME SLEEPZ BRO";
  catImg.style.background = "url('img/earlyMorning.jpg')";
  catImg.style.backgroundSize = "cover";
  document.body.style.backgroundColor= "#2d3037";
  clockBody.style.color = "#99ffcc";
  break;

这将删除所有地方的所有吊舱。

对于服务,部署,配置映射和作业也是如此。

答案 8 :(得分:0)

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

kubectl delete -n *NAMESPACE deployment *DEPLOYMENT

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

kubectl get deployments --all-namespaces

答案 9 :(得分:0)

这里是一种单行代码,可以使用grep扩展以按名称过滤。

kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}

答案 10 :(得分:0)

Kubectl批量(krew上的批量操作)插件可能对您有用,它为您提供了对选定资源的批量操作。这是删除广告连播的命令

 ' kubectl bulk pods -n namespace delete '

您可以在this

中查看详细信息

答案 11 :(得分:0)

我创建了一个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

答案 12 :(得分:0)

我尝试了此处列出的答案中的命令,但pod处于终止状态。
我在下面的命令中找到了从特定名称空间中删除所有Pod的命令,如果它们处于终止状态,或者您无法删除它,则可以强制删除Pod。

kubectl delete pods --all --grace-period=0 --force --namespace namespace

希望对某人有用。

答案 13 :(得分:0)

您可以使用 kubectl delete pods -l dev-lead!=carisa 或您拥有的标签。

答案 14 :(得分:0)

如果您有多个 pod 崩溃或出错,并且您想删除它们

kubectl 删除 pods --all -n |