如何使用 Kubernetes 删除孤立的副本集?

Chr*_*ski 6 kubernetes

不知道如何,但我有许多 pod 正在运行,这似乎是由于每个部署有多个 replicaset。

这是在我对多个部署进行一些大量编辑之后发生的。

是否有一些简单的方法可以删除孤立的副本集?与手动检查每个,并确定它是否与部署匹配,然后将其删除?

DT.*_*DT. 7

revisionHistoryLimit 是一个可选字段,指定要保留以允许回滚的旧 ReplicaSet 的数量

Bydefault, 10 old ReplicaSets将被保留,将其更改为 1,这样您的旧副本集就不会超过一个。

官方链接

测试字段如下

创建多次更新的 NGINX 部署并生成如下所列的少量副本集

$ kubectl get all
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-854998f596-6jtth   1/1     Running   0          18s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9d

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   1/1     1            1           6m20s

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-59d5958c9f   0         0         0       4m5s
replicaset.apps/nginx-669cf47c4f   0         0         0       94s
replicaset.apps/nginx-6ff549666b   0         0         0       2m21s
replicaset.apps/nginx-854998f596   1         1         1       2m7s
replicaset.apps/nginx-966c7f84     0         0         0       108s
Run Code Online (Sandbox Code Playgroud)

编辑正在运行的部署和更新revisionHistoryLimit领域,集零revisionHistoryLimit: 0

$ kubectl edit deployments.apps nginx
deployment.apps/nginx edited
Run Code Online (Sandbox Code Playgroud)

旧副本集被删除。

$ kubectl get all
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-854998f596-6jtth   1/1     Running   0          52s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   9d

NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   1/1     1            1           6m54s

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-854998f596   1         1         1       2m41s
Run Code Online (Sandbox Code Playgroud)


小智 6

可以通过运行以下命令手动删除 Kubernetes 集群中的旧副本集:

kubectl delete replicaset $(kubectl get replicaset -o jsonpath='{ .items[?(@.spec.replicas==0)].metadata.name }')
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,另请参阅此线程,该答案取自:/sf/answers/4779238481/