HPA 按负载缩放 Deployment 的副本
HorizontalPodAutoscaler 是反馈控制器,不是容量规划器,默认同步间隔为十五秒。根据配置,它读取资源、自定义或外部指标,再更新工作负载的 scale 子资源。基本计算为 desiredReplicas = ceil(currentReplicas * currentMetricValue / desiredMetricValue),之后还要考虑缺失数据、就绪状态、容忍度、稳定窗口及上下界,不能只靠这一行公式预测全部实际行为。 一份看起来正确的 HPA 对象,不证明容量必然及时到位。指标可用性、请求、副本上限、调度及应用启动都会影响结果。应分别查看建议副本数与真实就绪容量;提高期望数量不会制造新节点,也不能自动修好受阻发布。判断伸缩是否有效,必须跟踪从指标到应用接流量的整段过程。 原文算术示意,不是观察到的伸缩事件。保留的 Kubernetes 只读诊断仍为受阻,本次未重跑。建议四个副本不证明四个 Pod 已就绪或应用容量充足。 比值与死区 CPU 利用率目标把实际 CPU 用量与相关请求比较,得到百分比,目标本身也是百分比。如果每个 Pod 只有一个容器,都请求 200m,目标为百分之六十,那么每 Pod 120m 是便于理解的简化等价值。它不是异构 Pod 或所有指标类型通用的分母;多个容器和不同请求会改变聚合结果。 集群默认容忍度为一附近的 0.1。Kubernetes 1.34 的分方向容忍度仍为默认关闭的 alpha 功能;不能假定每个 HPA 都能覆盖它,要先检查特性开关和控制器配置。应把它理解为控制死区,而不是承诺 132m 永不伸缩、133m 必然动作。指标聚合、整数利用率、就绪状态及实现中的算术都会影响边界。忽略其他修正时,三个副本以 160m 对比 120m 目标,会建议四个副本;舍入、速率策略与最终能否调度仍需分别观察,不能从一个毫核数字直接推出真实扩容时刻。 ...