kubernetes清理Pod,服务,部署等

时间:2019-07-12 21:55:15

标签: kubernetes kubernetes-pod

要设置kubernetes,我首先创建了名称空间,部署和服务。要清理资源,我是否需要遵循任何顺序,例如先删除服务,然后删除pods,然后部署,最后删除名称空间? 如何正确清理资源?因为我删除了Pod和服务,但是可以看到Pod,服务再次运行。它会再次部署资源,因此这里出现了这个问题,供专家解答。

5 个答案:

答案 0 :(得分:2)

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

获取所有资源。

kubectl get pods,services,deployments,jobs,daemonset

删除如下资源:

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

答案 1 :(得分:1)

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

关于您的Pod再次出现的问题:创建部署时,它会创建Pod。删除部署时,它将自动删除其创建的Pod。如果您手动删除部署自动创建的Pod,则会将它们带回,因为部署中指定的所需副本数仍为正数。

如果直接创建Pod(而不是通过部署),则可以直接将其删除,并且它们将保持删除状态。

(直接创建的)窗格,部署和服务都可以相互独立删除,顺序无关紧要。如果要删除它们而不是名称空间,请以任何顺序删除它们。如果您还想删除名称空间,只需删除名称空间,它也会自动为您删除名称空间中的所有内容,您无需费心单独删除这些内容。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

我遵循不同的方法来清理分配给应用程序的资源。

$ 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

希望这会有所帮助!

答案 4 :(得分:1)

首先找出您自己或添加到混合物中的东西(请参阅Sidecar注入)。

对于任何给定的k8安装,可能会显示不同的对象。大多数命名空间的对象可以通过下面的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标志。