You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes:Deployment中为何出现多个ReplicaSet?

为什么Deployment会生成3个ReplicaSet?

这是Kubernetes Deployment的正常工作机制,核心原因如下:

  • Deployment本身不直接管理Pod,它是通过ReplicaSet来管控Pod副本的。每次你修改Deployment的Pod模板(比如镜像版本、环境变量、资源限制、标签/注解等),或者触发滚动更新时,K8s会自动创建新的ReplicaSet来运行新版本的Pod,旧的ReplicaSet不会立刻被删除——默认会保留最近3个历史版本,方便你随时回滚到之前的部署状态。
  • 你看到3个ReplicaSet,说明这个Deployment已经经历了两次模板变更/滚动更新:初始创建生成第一个RS,第一次更新生成第二个,第二次更新生成第三个。旧的RS副本数会被自动调整为0,但实体不会被删除,除非你手动清理或者修改保留策略。
  • 注意:单纯调整副本数(spec.replicas)不会触发新ReplicaSet的创建,只有Pod模板(spec.template)的变更才会触发。

验证方法

你可以用命令查看Deployment的版本历史,确认更新记录:

kubectl rollout history deployment/<你的Deployment名称>

或者查看每个ReplicaSet的模板哈希(不同哈希对应不同版本的Pod模板):

kubectl get rs -o custom-columns=NAME:.metadata.name,CREATED:.metadata.creationTimestamp,TEMPLATE-HASH:.metadata.labels.pod-template-hash

清理旧ReplicaSet的方式

如果不需要保留历史版本:

  1. 修改Deployment的revisionHistoryLimit参数,设置要保留的历史版本数(比如设为1,仅保留当前和最近一个旧版本):
    spec:
      revisionHistoryLimit: 1
    
  2. 手动删除指定的旧ReplicaSet:
    kubectl delete rs <旧ReplicaSet名称>
    

内容的提问来源于stack exchange,提问作者hades

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:42:37