Kubernetes 清理 pod、服务、部署等

Posted

技术标签:

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

为了设置 kubernetes,我首先创建了命名空间、部署和服务。要清理资源,我是否需要遵循任何顺序,例如先删除服务,然后是 pod,然后是部署,最后是命名空间? 如何以适当的方式清理资源?因为我删除了 pod 和服务,但我可以看到 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 标志。

【讨论】:

以上是关于Kubernetes 清理 pod、服务、部署等的主要内容,如果未能解决你的问题,请参考以下文章

请教kubernetes部署问题,pod一直处于pending状态

请教kubernetes部署问题,pod一直处于pending状态

Kubernetes 进阶训练营 Pod基础

Kubernetes 进阶训练营 Pod基础

Google Kubernetes设计文档之服务篇-转

pod 没有在 kubernetes 中创建,但存在部署?