Kubernetes HPA计算中currentReplicas的定义及扩容场景取值咨询
Kubernetes HPA中currentReplicas的取值疑问
背景
Kubernetes的Horizontal Pod Autoscaler(HPA)计算期望副本数的公式为:desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
我们集群里部分HPA配置了5秒的扩容周期规则:
behavior: scaleUp: policies: - type: Percent value: 100 periodSeconds: 5
我理解这是“每5秒将Pod数量翻倍”的意思。
场景
由于队列涌入大量消息,Pod需要从100副本扩容到200副本。扩容过程中,10个Pod很快完成调度,剩下90个Pod因为等待cluster-autoscaler创建新节点而处于Pending状态,这个过程要花1-2分钟。
问题
5秒后HPA再次计算时,currentReplicas的取值是哪个选项?
a) 110副本
b) 200副本
c) 其他
另外想明确:currentReplicas的定义到底是什么?NotReady状态的Pod会被计入currentReplicas的统计吗?
解答
- 答案是选项a:110副本
- currentReplicas的定义:指目标控制器(比如Deployment、StatefulSet)当前管理的所有有效Pod数量,包含Pending、Running(无论是否Ready)状态的Pod,但不包含已经进入终止流程(Terminating状态)的Pod。
- NotReady状态的Pod是否计入:会被计入。只要Pod还属于目标控制器的副本集合,且没有被标记为删除,不管是Pending、ContainerCreating还是NotReady状态,都会被统计到currentReplicas里。
所以这个场景中,原有的100个Pod加上刚调度完成的10个Pod,总共110个都属于当前副本数,HPA计算时会用110作为currentReplicas的取值。
内容的提问来源于stack exchange,提问作者E. Pratt
相关产品推荐
相关产品推荐

