首页 > 解决方案 > Kubernetes 不断创建对象

问题描述

作为 K8s 的新手,我正在尝试在 Windows 10 机器上运行一些测试后清理整个命名空间。简而言之,我认为这就像运行 kubectl.exe 删除部署一样简单,但是部署会在一秒钟后重新创建,我不知道如何摆脱它们。有关我所做的详细信息,请参阅以下内容:

1.kubectl get deployments,rs(看看我们已经拥有的)

NAME                               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE AGE
deployment.extensions/postgresql   1         1         1            1           18m
deployment.extensions/redis        1         1         1            1           16m
NAME                                         DESIRED   CURRENT   READY     AGE  
replicaset.extensions/postgresql-c8cb9fff6   1         1         1         18m
replicaset.extensions/redis-5678477b7c       1         1         1         16m

2. kubectl scale deployment redis --replicas=0(缩小部署)

deployment.extensions "redis" scaled

3. kubectl get deployments,rs(再次检查它的外观)

NAME                               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/postgresql   1         1         1            1           21m
deployment.extensions/redis        0         0         0            0           19m
NAME                                         DESIRED   CURRENT   READY     AGE
replicaset.extensions/postgresql-c8cb9fff6   1         1         1         21m
replicaset.extensions/redis-5678477b7c       0         0         0         19m

4. kubectl delete deployment.extensions/redis(删除部署)

deployment.extensions "redis" deleted

5. kubectl get deployments,rs(再次检查,看看它回来了!)

NAME                               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/postgresql   1         1         1            1           23m
deployment.extensions/redis        1         1         1            1           27s  
NAME                                         DESIRED   CURRENT   READY     AGE
replicaset.extensions/postgresql-c8cb9fff6   1         1         1         23m
replicaset.extensions/redis-5678477b7c       1         1         1         27s

6. kubectl.exe get events(查看事件):
除其他外,我可以看到“将副本集 redis-5678477b7c 缩小为 0”,然后“将副本集 redis-5678477b7c 放大为 1”,看起来它从未真正删除,但立即再次放大删除命令执行后。

不确定我遗漏了什么,但已经检查过其他几篇文章,例如Kubernetes pod 在删除时重新创建以及如何一次性从 Kubernetes 中删除所有资源?但没有一个为我工作。

忘了说 K8s 集群是由 Docker Desktop 管理的。

标签: kuberneteskubectl

解决方案


  1. 采用kubectl delete deployment <the name of deployment >

  2. 如果您需要清理整个命名空间,请使用kubectl delete namespace <namespace-name>

  3. kubectl create ns如果需要相同的命名空间,则通过 command 重新创建相同的命名空间。

  4. 您还可以使用带有对象的 --all 选项来清理命名空间:

例如

   kubecetl delete deployment --all
   kubecetl delete statefulset --all
   kubectl delete pvc --all
   kubectl delete secrets --all
   kubectl delete service --all

等等。

正如@David Maze所指出的,您正在删除ReplicaSet而不是正在管理它的 Deployment

文档中:

您可以定义 Deployment 来创建新的 ReplicaSet

Deployment 会自动创建和管理一个 ReplicaSet 来控制 Pod。您需要删除部署以清除其托管资源。


推荐阅读