代码之家  ›  专栏  ›  技术社区  ›  pkout

在Kubernetes水平吊舱自动缩放仪中,吊舱副本如何缩小?

  •  13
  • pkout  · 技术社区  · 6 年前

    我的理解是,在Kubernetes,当使用水平吊舱自动秤时,如果 targetCPUUtilizationPercentage 字段设置为50%,并且所有pod副本的平均CPU利用率高于该值,HPA将创建更多副本。一旦平均CPU下降到50%以下一段时间,就会减少副本的数量。

    以下是我不确定的部分:
    如果pod上的CPU利用率是10%,而不是0%,该怎么办?HPA是否仍会终止复制副本?
    10%的CPU并不多,但由于它不是0%,一些任务当前正在该pod上运行。如果这是一项长期任务(几秒钟),HPA决定终止pod,则该任务将无法完成。

    HPA是否仅在POD上的CPU利用率为0%时终止POD,还是在发现该值低于0%时终止POD TargetCPU利用率百分比 ?

    HPA如何决定删除哪些POD?
    非常感谢。

    1 回复  |  直到 5 年前
        1
  •  20
  •   Adil Sadik    4 年前

    这里有两个问题,让我逐一回答。第一部分-如果复制集中的一个豆荚消耗了10%,那么库伯内特斯会杀死这个豆荚吗?答案是肯定的。Kubernetes并没有关注单个吊舱,而是关注该副本集中所有吊舱的该指标的平均值。此外,缩小规模是渐进的 as explained here

    问题的第二部分-当pod即将被杀死并且仍在服务一些请求时,您的应用程序如何优雅地运行?这可以由 grace period of the pod termination 如果你实施 a PreStop hook -这将允许您停止接收传入请求,但处理现有请求。这一点的实现将根据您使用的语言运行时而有所不同,因此我将不在这里详细介绍。

    最后,您应该考虑的一个场景是,如果运行pod的VM突然宕机,您将没有机会执行PreStop hook!我认为应用程序需要足够健壮以处理故障。