清理"副本集"何时更新部署?

时间:2016-05-16 13:58:43

标签: kubernetes

每次更新部署时,都会将新的副本集添加到长列表中。是否应该清理旧的?

6 个答案:

答案 0 :(得分:39)

删除旧的replicasets是Deployment对象的一部分,但它是可选的。您可以设置.spec.revisionHistoryLimit以告知部署要保留多少旧复制副本。

答案 1 :(得分:10)

如果要手动清洁它,可以将其粘贴到控制台中

kubectl delete $(kubectl get all | grep replicaset.apps | grep "0         0         0" | cut -d' ' -f 1)

这仅因kubectl get all显示资源的方式而起作用。这是一种廉价的解决方案,但也不是什么大问题。

答案 2 :(得分:3)

在 k8s v1.19.6 上,我必须修改 Joe Eaves 的命令,如下所示:

kubectl -n <namespace> delete rs $(kubectl -n <namespace> get rs | awk '{if ($2 + $3 + $4 == 0) print $1}' | grep -v 'NAME')

答案 3 :(得分:3)

这是一种无需 AWK 的方法,仅使用 kubectl 和内置的 jsonpath 功能:

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

这应该更稳定,因为它直接处理副本计数,而不是尝试解析可能发生变化的 kubectl 的输出。

答案 4 :(得分:0)

对Kévin上面的帖子的修订,因为我还没有评论:D

AWK让我们忽略了间距!

kubectl delete $(kubectl get all | grep replicaset.apps | awk '{if ($2 + $3 + $4 == 0) print $1}')

答案 5 :(得分:0)

简单的方法:

kubectl delete rs $(kubectl get rs | grep "0         0         0" | cut -d' ' -f 1)