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

命令删除所有kubernetes命名空间中的所有POD,kubernetes,Kubernetes,查看文档时,会有一个API调用来删除“a”pod,但是有没有办法杀死所有名称空间中的所有pod?没有命令完全按照您的要求执行 这里有几场势均力敌的比赛 您可以使用以下命令删除单个命名空间中的所有POD: kubectl delete --all pods --namespace=foo kubectl delete --all namespaces 您还可以删除命名空间中的所有部署,这将删除与命名空间对应的部署连接的所有POD kubectl delete --all deployments

查看文档时,会有一个API调用来删除“a”pod,但是有没有办法杀死所有名称空间中的所有pod?

没有命令完全按照您的要求执行

这里有几场势均力敌的比赛

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

kubectl delete --all pods --namespace=foo
kubectl delete --all namespaces
您还可以删除命名空间中的所有部署,这将删除与命名空间对应的部署连接的所有POD

kubectl delete --all deployments --namespace=foo
可以使用以下命令删除每个命名空间中的所有命名空间和每个对象(但不能删除未命名的对象,如节点和某些事件):

kubectl delete --all pods --namespace=foo
kubectl delete --all namespaces
但是,后一个命令可能不是您想要做的事情,因为它将删除kube系统名称空间中的内容,这将使您的集群不可用

此命令将删除除kube system之外的所有名称空间,这可能很有用:

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
    获取所有名称空间中所有pod的列表
  • 使用
    --no headers=true
    选项隐藏标题
  • 使用
    sed
    s
    命令获取前两个单词,分别代表
    名称空间
    pod的名称
    ,然后使用它们组合
    delete
    命令
  • 最后的
    delete
    命令如下:
    kubectl——名称空间kube系统删除pod heapster-eq3yw
  • 使用
    s
    命令的
    e
    修饰符来执行上面组合的命令,该命令将执行实际的
    delete
    工作
  • 为了避免删除
    kube-system
    名称空间中的pod,只需在
    sed
    命令之前添加
    grep-v kube-system
    以排除
    kube-system
    名称空间

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

    为了摆脱这些讨厌的复制控制器

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

    kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
    
    只需将NAMSPACE和部署替换为相应的NAMSPACE和部署,就可以通过以下命令获取所有部署信息

    kubectl get deployments --all-namespaces
    

    下面是一个单行程序,可以使用grep扩展它以按名称进行过滤

    kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
    tr " " "\n" | \
    xargs -i -P 0 kubectl delete pods {}
    
    Kubectl bulk(krew上的批量操作)插件可能对您有用,它为您提供对所选资源的批量操作。这是用于删除播客的命令

     ' kubectl bulk pods -n namespace delete '
    

    您可以在

    中查看详细信息。我创建了一个python代码来删除名称空间中的所有内容

    kubectl delete --all deployments --namespace=foo
    
    德拉尔

    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
    
    你可以直接跑

    kubectl delete all --all --all-namespaces
    
    • 第一个
      all
      表示常见的资源类型(POD、复制集、部署等)

      • kubectl获取所有==kubectl获取吊舱、rs、部署等
    • 第二个
      --all
      表示选择所选类型的所有资源


    请注意,
    all
    不包括:

    • 无名称空间的资源(例如ClusterRoleBinding、clusterroles等)
    • 配置映射
    • 角色索引
    • 角色
    • 秘密

    为了彻底清理,

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

    K8s完全基于名称空间的基本原理。如果要释放与指定命名空间相关的所有资源

    您可以使用下面提到的:

    kubectl delete namespace k8sdemo-app
    

    我尝试了这里列出的答案中的命令,但吊舱被困在终止状态。
    我在下面找到了从特定名称空间中删除所有POD的命令,如果处于终止状态或无法删除它,则可以强制删除POD

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

    希望它对其他人有用。

    仅删除所有命名空间中的所有POD(重新启动部署)


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

    如果您不想删除
    kube系统中的pod
    名称空间中的pod,您也可以删除
    ——所有名称空间
    ,只删除少数pod的命令是什么?示例:我有spin 20 Pod,现在希望只保留1个。你的sed在Mac上不起作用,但原则上起作用。在k8s的当前版本中,“kubectl delete--all namespace”命令不再删除系统内容。。。例如:名称空间“默认”是禁止的:此名称空间可能不会被删除这是删除部署还是仅删除播客?
    kubectl delete pods--all--all名称空间有时似乎可以工作(不确定是什么原因导致它在某些环境中工作,而在其他环境中不工作)。它在我的堡垒主机上运行良好,但在笔记本电脑上运行不好。运行debian和运行同一版本的kubectl(集群版本1.13)@KaiWähner如果我没有弄错的话,k8s系统相关的东西都在
    kube系统的命名空间中。在消息示例中,我可以看到
    default
    名称空间。是否使用您附加的命令删除了
    kube系统
    。这仅删除当前命名空间中的内容。请添加-n标志,但很抱歉,这是一次只删除一个pod,而不是一次删除所有pod。如果缺少
    ing
    也要删除入口,您可能还需要添加“statefulset”(如果适用)。否则,即使在您运行上述命令之后,它也会继续分叉新的吊舱!小心!因为上面的命令将删除集群范围内的所有PV。这是一个完美的解决方案!这是一个超级杀手
    kubectl get pods--selector=app=“${DEPLOYMENT\u NAME}”-o=jsonpath='{.items[*].metadata.NAME}'|tr”“”\n“| xargs-n 1 kubectl delete pod