【问题标题】:kubernetes cleanup of pods,service,deployment etcKubernetes 清理 pod、服务、部署等
【发布时间】:2019-11-22 15:53:21
【问题描述】:

为了设置 kubernetes,我首先创建了命名空间、部署和服务。要清理资源,我是否需要遵循任何顺序,例如先删除服务,然后是 pod,然后是部署,最后是命名空间? 如何以适当的方式清理资源?因为我删除了 pod 和服务,但我可以看到 pod 和服务再次运行。它再次部署资源,所以这个问题出现在这里寻求专家的答案。

【问题讨论】:

    标签: kubernetes kubernetes-pod


    【解决方案1】:

    以防万一您在默认命名空间中运行它们并且它们有很多,并且您不想花时间一一删除它们:

    kubectl delete deployments --all
    kubectl delete services --all
    kubectl delete pods --all
    kubectl delete daemonset --all
    

    【讨论】:

      【解决方案2】:

      我按以下顺序删除了资源,它对我有用。

      获取所有资源。

      kubectl get pods,services,deployments,jobs,daemonset
      

      删除以下资源:

      kubectl delete deployments <deployment>
      kubectl delete services <services>
      kubectl delete pods <pods>
      kubectl delete daemonset <daemonset>
      

      【讨论】:

        【解决方案3】:

        我采用一种不同的方法来清理分配给应用程序的资源。

        $ kubectl get pods
        NAME                     READY   STATUS    RESTARTS   AGE
        nginx-75b7bfdb6b-k76tl   1/1     Running   0          9d
        
        
        $ kubectl get deployments
        NAME    READY   UP-TO-DATE   AVAILABLE   AGE
        nginx   1/1     1            1           9d
        

        所以现在不要单独删除应用程序的对象/资源,而是使用delete all,它删除与应用程序关联的所有资源

        这样Kubernetes清理资源而不是我们决定清理的顺序

        $ kubectl delete all -l app=nginx
        pod "nginx-75b7bfdb6b-k76tl" deleted
        service "nginx-service" deleted
        deployment.apps "nginx" deleted
        replicaset.apps "nginx-75b7bfdb6b" deleted
        

        希望这会有所帮助!

        【讨论】:

        • 其实可以的!我有一条隧道正在运行,这就是重新旋转豆荚的原因。
        • kubectl explain [resource]kubectl get [resource] -o yaml 可以帮助人们找到可以帮助他们清理配置的-l, --selector='
        【解决方案4】:

        如果只是删除命名空间,它会删除其中的所有内容,您无需手动清理其中的所有内容。我在网络上搜索了“Kubernetes 删除命名空间”,并在 Kubernetes 官方文档中找到了这个:https://kubernetes.io/docs/tasks/administer-cluster/namespaces/#deleting-a-namespace

        关于您关于 pod 回归的问题:当您创建部署时,它会创建 pod。当您删除部署时,它会自动删除它创建的 Pod。如果您手动删除部署自动创建的 pod,它将恢复它们,因为您的部署中指定的所需副本数仍然是正数。

        如果您直接创建 pod(不是通过部署),您可以直接删除它们,它们将保持删除状态。

        Pod(直接创建)、部署和服务都可以相互独立地删除,顺序无关紧要。如果要删除它们而不是命名空间,请按任意顺序删除它们。如果你也想删除命名空间,只需删除命名空间,它也会自动为你删除命名空间中的所有内容,你不需要单独删除这些东西。

        【讨论】:

          【解决方案5】:

          首先找出你的东西,或者添加到混合物中的东西(参见边车注入)。

          对于任何给定的 k8s 安装,可能会出现不同的对象。大多数命名空间对象可以通过下面的 shell 片段列出。 (只需将变量 N​​AMESPACE 设置为有问题的命名空间。

          kubectl get --namespace $NAMESPACE $(kubectl api-resources --namespaced=true  --no-headers=true  | awk  ' { print $1 } ' | perl -e '@foo = map { s/\n//; $_; }  <> ;  print join "," , @foo ; ' ) 
          

          可能会有一些事件,以及一个或两个默认帐户或密码。

          既然你知道了所有的东西,你就可以删除所有的东西了。请谨慎操作,每次使用 kubectl 时都包含 --namespace 和 --context 标志。

          【讨论】:

            猜你喜欢
            • 2023-04-03
            • 2019-02-03
            • 2020-07-20
            • 1970-01-01
            • 1970-01-01
            • 2020-07-27
            • 2022-01-23
            • 2020-06-24
            • 2021-09-21
            相关资源
            最近更新 更多