我的理解是,如果将targetCPUUtilizationPercentage
字段设置为50%,则在Kubernetes中,使用水平POD Autoscaler时,并且所有POD的复制品的平均CPU利用率高于该值,高于该值,HPA将创建更多的复制品。一旦平均CPU在一段时间内下降到50%以下,它将降低复制品的数量。
这是我不确定的部分:
如果POD上的CPU利用率为10%,不是0%?HPA仍会终止复制品吗?
10%CPU并不多,但是由于不是0%,当前某些任务当前正在运行那个豆荚。如果这是一项持久的任务(几秒钟(,而HPA决定终止POD,则该任务将无法完成。
仅当HPA上的CPU利用率为0%时,HPA才会终止POD,或者只要看到该值低于targetCPUUtilizationPercentage
,它是否会终止它们?
HPA如何决定要卸下哪些豆荚?
谢谢!
,因此您有两个问题,让我一个一个问题。第一部分 - 如果复制品集中的豆荚正在消耗10%,那么Kubernetes会杀死该豆荚吗?答案是肯定的。Kubernetes并不是要查看单个豆荚,而是在该复制品集中的所有POD中平均使用该指标。另外,按照此处解释
逐渐缩小的缩小是逐渐的问题的第二部分 - 当吊舱即将被杀死并且仍在满足某些请求时,您的应用程序如何优雅地行事?这可以通过POD终止的宽限期来处理,如果您实现PreStop
挂钩,则可以更好地处理 - 这将使您可以做一些停止接入请求,但要处理现有请求之类的事情。实现此功能会根据您使用的语言运行时而有所不同,因此我不会在此处详细介绍。
最后 - 您应该考虑的一种情况是,如果POD正在运行的VM突然下降 - 您没有机会执行Prestop Hook!我认为该应用程序需要足够强大才能处理失败。