关于谷歌云平台:GKE 自动扩缩不缩容

GKE autoscaling doesn't scale down

我们使用 GKE(Google Kubernetes Engine)在 GCC(Google Cloude Composer)中为我们的数据管道运行 Airflow。

我们从 6 个节点开始,发现成本飙升,而且我们没有使用那么多 CPU。所以我们认为我们可以降低最大值,但也可以启用自动缩放。

由于我们在夜间运行管道,而白天只运行较小的作业,我们希望在 1-3 个节点之间运行自动缩放。

因此,我们在 GKE 节点池上启用了自动缩放,但没有按照他们的建议在 GCE 实例组上启用。然而,我们得到这个:
Node

这是为什么?

下面是我们过去 4 天的 CPU 利用率图表:
enter


首先我要提到的是,当集群中存在未充分利用的节点时,会触发缩减过程。在这种情况下,"未充分利用"不仅与 CPU 使用率有关,因此您的推理并不完全正确。

如文档所述,条件是该节点上运行的所有 Pod 的 CPU 和内存请求的总和小于为 Autoscaler 定义的利用率阈值。然后,"如果一个节点超过 10 分钟不需要,它将被终止"。有关更多信息,请参阅此。

另外,重要的是要知道还有一些其他因素可能会阻止缩减过程,例如节点自动配置限制。检查此以获取有关可以阻止集群自动缩放器删除节点的 pod 的更多信息。


Cloud Composer 尚不(截至 2019 年 8 月 26 日)支持 GKE 集群自动扩缩器,因为集群自动扩缩器根据 Pod 的资源请求以及有多少 Pod 处于不可调度状态(更多信息在这里)。 Composer 部署固定数量的 Pod,这意味着除非您自己将自己的工作负载部署到集群中,否则自动缩放机制不会强制执行任何缩放操作。

Autoscaling 也很难做到,因为 Airflow 工作程序或调度程序的实际资源使用情况取决于您上传的 DAG 数量(在 Composer 的情况下,上传到 GCS),这意味着没有准确估计多少 CPU/您的 Airflow 流程将使用的内存。这意味着您不知道如何决定 Airflow Pod 的 Pod 资源请求。

在没有自动缩放的情况下,动态资源分配仍有很多选择。例如,您可以使用 KubernetesPodOperator 将带有资源请求的 Pod 部署到另一个启用了自动缩放的 Kubernetes 集群中。或者,您可以在启动更多资源密集型工作负载之前使用 GCE 运算符将实例添加到集群中。


所以,你说"它不支持"它的 k8s 有点奇怪。
启用此处指定的 GKE 集群自动扩缩器:

1
2
gcloud container clusters update [CLUSTER_NAME] --enable-autoscaling \\
    --min-nodes 1 --max-nodes 10 --zone [COMPUTE_ZONE] --node-pool default-pool

这是在默认节点池上,如果您创建了一个新池,请使用那个。

转到您的气流工作者部署并在 name: airflow-workerports:

之后添加此部署

1
2
3
resource:
  requests:
    cpu: 400m

然后,像这样自动扩展您的部署:

1
kubectl autoscale deployment airflow-worker --cpu-percent=95 --min=1 --max=10 -n <your namespace>

在我的情况下,它就像一个魅力,它为我的气流工作部署扩展节点和 Pod。

概念验证:

1
$ kubectl get hpa -n  <my-namespace> -w
  • 名称 参考 目标 MINPODS MAXPODS REPLICAS 年龄
  • 气流工作者部署/气流工作者/95% 1 3
    0 13 秒
  • 气流工作者部署/气流工作者 20%/95% 1 10 1
    29m
  • 气流工作者部署/气流工作者 27%/95% 1 10 2
    29m
  • 气流工作者部署/气流工作者 30%/95% 1 10 3
    29m
  • 气流工作者部署/气流工作者 53%/95% 1 10 3
    29m
  • 气流工作者部署/气流工作者 45%/95% 1 10 3
    34m
  • 气流工作者部署/气流工作者 45%/95% 1 10 3
    34m
  • 气流工作者部署/气流工作者 28%/95% 1 10 2
    34m
  • 气流工作者部署/气流工作者 32%/95% 1 10 2
    35
  • 气流工作者部署/气流工作者 37%/95% 1 10 2
    43m
  • 气流工作者部署/气流工作者 84%/95% 1 10 1
    43m
  • 气流工作者部署/气流工作者 39%/95% 1 10 1
    44m
  • 气流工作者部署/气流工作者 29%/95% 1 10 1
    44m

你可以看到一段时间后它缩小到 1pod。与节点池相同,缩减为 4 个节点而不是 5-6-7..