514. 【kubernetes】Deployment-Controller-副本调度控制器

DeploymentController管理Deployment和ReplicaSet,确保Pod副本数量稳定,支持服务的滚动更新和弹性伸缩。它通过调整副本数量应对节点故障,通过改变Pod模板执行滚动升级。

Deployment Controller 在工作过程中实际上是在控制两类相关的资源对象:Deployment 和 ReplicaSet。在我们创建 Deployment 资源对象之后,Deployment Controller 也默默创建了对应的 ReplicaSet,Deployment 的滚动升级也是 Deployment Controller 通过自动创建新的 ReplicaSet 来支持的。

Deployment Controller 的作用如下所述:

  1. 确保在当前集群中有且仅有 N 个 Pod 实例,N 是在 RC 中定义的 Pod 副本数量。
  2. 通过调整 spec.replicas 属性的值来实现系统扩容或者缩容。
  3. 通过改变 Pod 模板(主要是镜像版本)来实现系统的滚动升级。

Deployment Controller 的典型使用场景,如下所述:

  1. 重新调度(Rescheduling)。如前面所述,不管想运行 1 个副本还是 1000 个副本,副本控制器都能确保指定数量的副本存在于集群中,即使发生节点故障或 Pod 副本被中止运行等意外状况。

  2. 弹性伸缩(Scaling)。手动或者通过自动扩容代理修改副本控制器 spec.replicas 属性的值,非常容易实现增加或减少副本的数量。

  3. 滚动更新(Rolling Updates)。副本控制器被设计成通过逐个替换 Pod 来辅助服务的滚动更新。

### Kubernetes Deployment 的 ReplicaSet 扩缩容事件原因解析 在 Kubernetes 中,Deployment 控制器通过管理 ReplicaSet 来确保指定数量的 Pod 副本始终处于运行状态。当 Deployment 的扩缩容事件发生时,通常是由以下几种原因触发: #### 1. 手动更新副本数量 用户可以通过 `kubectl scale` 命令直接修改 Deployment副本数,从而触发 ReplicaSet 的扩缩容操作。例如: ```bash kubectl scale deployment my-deploy --replicas=5 ``` 该操作会更新 Deployment 的 `.spec.replicas` 字段,进而由 Deployment 控制器通知 ReplicaSet 调整其副本数量 [^1]。 #### 2. 自动扩缩容(HPA) Horizontal Pod Autoscaler(HPA)根据 CPU 使用率、内存或其他自定义指标自动调整副本数。当指标超出设定的阈值时,HPA 会触发扩容操作;当负载下降时则触发缩容。HPA 通过修改 Deployment副本数来间接影响 ReplicaSet 的副本状态 [^1]。 例如,HPA 触发扩容时的事件日志如下: ```yaml Type: Normal Reason: ScaleReplicaSet Message: Scaled up replica set my-deploy-7df8598f74 from 2 to 3 ``` #### 3. Deployment 更新触发滚动更新 当 Deployment 的 Pod 模板发生变更(如镜像版本更新)时,Deployment 控制器会创建新的 ReplicaSet,并逐步增加其副本数,同时减少旧 ReplicaSet 的副本数,实现滚动更新。在此过程中,每个 ReplicaSet 的副本数变化都会记录为 `ScalingReplicaSet` 事件 [^1]。 例如: ```yaml Type: Normal Reason: ScalingReplicaSet Message: Scaled up new replica set my-deploy-84596f548d to 1 ``` #### 4. 健康检查失败导致自动恢复 如果某个 Pod 被探测为不健康(如 readinessProbe 或 livenessProbe 失败),Kubernetes 会自动终止该 Pod 并由 ReplicaSet 创建新的 Pod 替代。这一过程可能表现为 ReplicaSet 副本数的短暂波动 。 #### 5. 资源调度失败或节点问题 当集群资源不足或节点发生故障时,Kubernetes 可能无法按预期启动所有副本。此时,Deployment 控制器会记录相关事件,并尝试在资源可用后重新扩容。这类事件通常伴随 `FailedCreatePodBehindReplicaSet` 等信息 [^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值