GKE 上的 HPA 部署规模为 0

Tho*_*s G 1 autoscaling kubernetes google-kubernetes-engine kubernetes-deployment hpa

我尝试将 HPA 与外部指标结合使用,将部署规模缩减至 0。我使用的 GKE 版本为 1.16.9-gke.2。

据此我认为它会起作用,但事实并非如此。我仍然面临: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

Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助 !

Daw*_*ruk 6

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

某些功能在 Kubernetes 中运行的事实并不意味着它们在GKE.

此功能由名为 的功能门启用HPAScaleToZero。从 Kubernetes 1.16 版本开始就处于这种Alpha状态。根据下面的链接,它默认被禁用。请在此处查看有关功能门的官方文档:Kubernetes.io:文档:功能门

更进一步:

Kubernetes 中的新功能根据其开发状态被列为 Alpha、Beta 或 Stable。在大多数情况下,GKE 中包含列为 Beta 或 Stable 的 Kubernetes 功能

Cloud.google.com:Kubernetes Engine:Kubernetes 版本和功能

正如你所看到的:

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

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


有一个选项可以HPAScaleToZero启用。这需要运行一个alpha集群:

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

Cloud.google.com:Kubernetes 引擎:Alpha 集群

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

局限性

Alpha 簇有以下限制:

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