代码之家  ›  专栏  ›  技术社区  ›  user_mda

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

  •  373
  • user_mda  · 技术社区  · 9 年前

    在查看文档时,有一个API调用可以删除单个pod,但有没有方法可以删除 所有 所有命名空间中的Pod?

    21 回复  |  直到 4 年前
        1
  •  629
  •   Eric Tune    4 年前

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

    这里有一些势均力敌的比赛。

    运行任何这些命令之前都要小心。如果使用多个集群,请确保连接到正确的集群。考虑跑步。 kubectl config view 第一。

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

    kubectl delete --all pods --namespace=foo
    

    您还可以删除命名空间中的所有部署,这将删除与命名空间对应的部署附加的所有Pod

    kubectl delete --all deployments --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
    
        2
  •  147
  •   Taz jason    3 年前
    kubectl delete daemonsets,replicasets,services,deployments,pods,rc,ingress --all --all-namespaces
    

    也要摆脱那些讨厌的复制控制器。

        3
  •  82
  •   Mo...    5 年前

    你可以简单地跑

    kubectl delete all --all --all-namespaces
    
    • 第一个 all 指公共资源类型(Pod、复制集、部署等)

      • kubectl get all == kubectl get pods,rs,deployments, ...
    • 第二个 --all 指选择所选类型的所有资源


    注意 所有 不包括:

    • 非命名空间资源(例如,集群角色绑定、集群角色等)
    • 配置地图
    • 角色绑定
    • 作用
    • 秘密
    • ...

    为了彻底清理,

    • 你可以使用其他工具(例如Helm、Kustomize等)
    • 您可以使用名称空间。
    • 创建资源时可以使用标签。
        4
  •  17
  •   Weike    8 年前

    你只需要 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. 使用 s 的命令 皮肤红斑剂量 获取前两个单词,它们代表 namespace pod's name 然后分别组装 delete 命令使用它们。
    4. 决赛 删去 命令就像: kubectl --namespace kube-system delete pod heapster-eq3yw .
    5. 使用 e 修饰语 s 命令执行上面组装的命令,这将执行实际的 删去 作品。

    为了避免删除Pod kube-system 命名空间,只需添加 grep -v kube-system 排除 kube系统 命名空间之前 皮肤红斑剂量 命令。

        5
  •  6
  •   nilesh_101    4 年前

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

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

    希望它对某人有用。

        6
  •  5
  •   Sachin Mishra    5 年前

    K8s完全基于命名空间的基础工作。如果你想释放与指定命名空间相关的所有资源。

    您可以使用下面提到的:

    kubectl delete namespace k8sdemo-app
    
        7
  •  5
  •   Suraj Rao Raas Masood    3 年前

    删除pv的步骤:

    1. 删除与该PV相关的所有部署和Pod或资源

       kubectl delete --all deployment -n namespace
      
       kubectl delete --all pod -n namespace
      
    2. 编辑pv

       kubectl edit pv pv_name  -n namespace
      
       remove kubernetes.io/pv-protection
      
    3. 删除pv

       kubectl delete pv pv_name  -n namespace
      
        8
  •  3
  •   Jude Zhu    4 年前

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

     kubectl get pod -A -o yaml | kubectl delete -f -
    
        9
  •  3
  •   dippas    4 年前

    您可以使用 kubectl delete pods -l dev-lead!=carisa 或者你有什么标签。

        10
  •  3
  •   Bahadur Singh    2 年前

    #强行完成修剪或删除。假设foo是我们的命名空间

    kubectl delete--所有Pod--命名空间=foo--force

    #密切关注他们从名单中删除的情况

    观看kubectl获取Pod-n foo

        11
  •  2
  •   Claudio Fahey    6 年前

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

    kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
    tr " " "\n" | \
    xargs -i -P 0 kubectl delete pods {}
    
        12
  •  2
  •   Braconnot_P    5 年前
    kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
    
        13
  •  2
  •   efdestegul    3 年前

    一行命令删除所有命名空间中的所有Pod。

    kubectl get ns -o=custom-columns=Namespace:.metadata.name --no-headers | xargs -n1 kubectl delete pods --all -n
    
        14
  •  0
  •   Smaillns    6 年前

    如果你已经有了重新创建的Pod,可以考虑先删除所有部署

    kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
    

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

    kubectl get deployments --all-namespaces
    
        15
  •  0
  •   Chanaka Weerasinghe    6 年前

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

     ' kubectl bulk pods -n namespace delete '
    

    您可以在中查看详细信息 this

        16
  •  0
  •   Suraj Rao Raas Masood    6 年前

    我创建了一个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
    
        17
  •  0
  •   kenjebek    4 年前

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

    kubectl delete pod--all-n | gep

        18
  •  0
  •   bwolmarans    3 年前

    上面已经暗示过,但我只是想指出一点,“所有名称空间”的快捷方式是“-A”,大写字母为A。我已经打开了一个PR,将这个有用的提示添加到官方的Kubernetes Cheat Sheet中。

        19
  •  0
  •   Gabriel Talavera    3 年前

    如果你想删除所有命名空间中的Pod以重新启动它们,并且你知道其中一些Pod将被重新创建,我喜欢以下for循环:

    for i in $(kubectl get pods -A | awk '{print $1}' | uniq | grep -V NAMESPACE); do kubectl delete --all pods -n $i; done
    
        20
  •  0
  •   Ajit Surendran    2 年前

    如果你有hpa,那就缩小规模。

        21
  •  0
  •   Niharika Srivastava    1 年前

    kubectl delete pod(容器名称)

    推荐文章