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 片段列出。 (只需将变量 NAMESPACE 设置为有问题的命名空间。
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状态