如何在Kubernetes Horizo​​ntal Pod Autoscaler中缩小pod副本的工作量?

时间:2018-04-28 19:55:29

标签: kubernetes autoscaling kubernetes-hpa

我的理解是,在Kubernetes中,当使用Horizo​​ntal Pod Autoscaler时,如果targetCPUUtilizationPercentage字段设置为50%,并且所有pod复制品的平均CPU利用率高于该值, HPA将创建更多副本。一旦平均CPU降至50%以下一段时间,它将降低副本的数量。

以下是我不确定的部分:
如果pod上的CPU利用率是10%而不是0%怎么办?HPA是否仍会终止副本?
10%的CPU不是很多,但因为它不是0 %,某个任务当前正在该pod上运行。如果它是一项持久的任务(几秒钟)并且HPA决定终止该任务,那么该任务将无法完成。

HPA是否仅在其上的CPU利用率为0%时才终止pod,或者只有在看到该值低于targetCPUUtilizationPercentage时才终止它们?

HPA如何决定删除哪些广告? 谢谢!

1 个答案:

答案 0 :(得分:7)

所以你有两个问题让我逐一解决。第一部分 - 如果副本集中的pod正在消耗,那么说10%那么Kubernetes会杀掉那个pod吗?答案是肯定的。 Kubernetes不会查看单个pod,而是查看该副本集中所有pod的平均值。缩小比例也是渐进的as explained here

问题的第二部分 - 当一个pod即将被杀死并且仍在提供某些请求时,你的应用程序如何正常运行?这可以由grace period of the pod termination处理,如果实施a PreStop hook则更好 - 这将允许您执行诸如停止接收传入请求但处理现有请求之类的操作。这个的实现会因您使用的语言运行时而异,所以我不会在这里详细介绍。

最后 - 您应该考虑的一个方案是,如果正在运行pod的VM突然崩溃 - 您没有机会执行PreStop挂钩!我认为应用程序需要足够强大以处理故障。

相关问题