GKE 上的 HPA 将部署扩展到 0

Posted

技术标签:

【中文标题】GKE 上的 HPA 将部署扩展到 0【英文标题】:HPA scale deployment to 0 on GKE 【发布时间】:2020-10-06 06:33:10 【问题描述】:

我正在尝试将 HPA 与外部指标一起使用以将部署缩减到 0。我正在使用版本为 1.16.9-gke.2 的 GKE。

根据this,我认为它会起作用,但事实并非如此。我还在面对:The HorizontalPodAutoscaler "classifier" is invalid: spec.minReplicas: Invalid value: 0: must be greater than or equal to 1

以下是我的 HPA 定义:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: classifier
spec:
  minReplicas: 0
  maxReplicas: 15
  metrics:
  - external:
      metricName: loadbalancing.googleapis.com|https|request_count
      targetAverageValue: "1"
    type: External
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: classifier

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

根据this,我认为它会起作用,但事实并非如此。

某些功能在 Kubernetes 中运行的事实并不意味着它们在托管解决方案中启用,例如 GKE

此功能由名为 HPAScaleToZero功能门启用。自 Kubernetes 1.16 版以来,它处于 Alpha 状态。根据下面的链接,默认情况下它是禁用的。 请在此处查看有关功能门的官方文档:Kubernetes.io: Docs: Feature Gates

更进一步:

Kubernetes 中的新功能被列为 Alpha、Beta 或 Stable,具体取决于它们的开发状态。在大多数情况下,列为 Beta 或 Stable 的 Kubernetes 功能都包含在 GKE 中

Cloud.google.com: Kubernetes Engine: Kubernetes versions and features

如您所见:

The HorizontalPodAutoscaler "classifier" is invalid: spec.minReplicas: Invalid value: 0: must be greater than or equal to 1

此功能在“标准”GKE 集群中被禁用。


可以选择启用 HPAScaleToZero。这需要运行 alpha 集群:

术语 alpha 集群意味着无论集群运行的 Kubernetes 版本如何,都为 Kubernetes 和 GKE 启用了 alpha API。 Google 会定期为客户提供测试和验证不普遍可用的 GKE 版本的能力。

Cloud.google.com: Kubernetes Engine: Alpha clusters

请记住,运行 alpha 集群有一些缺点:

限制

Alpha 集群有以下限制:

GKE SLA 未涵盖 无法升级 在 alpha 集群上禁用节点自动升级和自动修复 30 天后自动删除 不接收安全更新

【讨论】:

不错的概述。错误消息是"must be greater than or equal to 0" (note the 0 at the end) if HPAScaleToZero-feature-gate is enabled

以上是关于GKE 上的 HPA 将部署扩展到 0的主要内容,如果未能解决你的问题,请参考以下文章

GKE K8 HPA 无法获取堆栈驱动程序指标

GKE 自动缩放无法缩放

Kubernetes HPA(带有自定义指标)扩展策略

如何在 GKE 控制台中查看 HPA 自动缩放定义

将动态命令注入部署

具有矩阵数量的 pubsub 未确认消息的尖峰 kubernetes HPA