GKE 上的水平自动缩放轨道 - 具体来说 - Web 服务器的选择以及与传统部署的区别

GKE 上的水平自动缩放轨道 - 具体来说 - Web 服务器的选择以及与传统部署的区别

这是一篇很棒的文章使用 heroku 进行扩展(并且它适用于传统部署)。

鉴于我们容器化应用程序是单一进程,我们如何获得:

  • 慢速客户端保护
  • 慢响应保护

在充分利用 Kubernetes/GKE 环境中水平 pod 自动扩缩

假设我的部署如下所示(信用@nithinmallya4):

概述

我还没有选择 Web 服务器,默认情况下rackup正在提供服务WEBrick。我正在考虑将其更改为多线程 Puma。

我担心的是,它的autoscaler工作是基于 CPU 的,而不是基于想法的consumed by a current http/s request,所以它可能不会发挥作用。

  1. 我是否正确理解了自动缩放器?
  2. 理想的扩大/缩小架构是什么样的?

我们目前的想法:

  • nginx 采用 pod sidecar 模式(带有 gzip deflater)放在 后面Ingress

  • puma在 rails 前面(与imagerails-api 相同),假设它可以更好地利用 CPU 并触发自动缩放

  • HPA 的自定义指标(仍需使用 1.8 进行研究)

答案1

在 GKE 上,我们自 1.9 版起就支持使用自定义指标的 HPA。如果您的集群中有一组水平自动缩放的 Pod,每个 Pod 都导出一个自定义指标,那么您可以为该指标设置每个 Pod 的平均值目标。

一个例子是前端的自动扩展部署,其中每个副本都会导出其当前 QPS。可以设置每个前端 pod 的平均 QPS 目标,并使用 HPA 相应地扩大或缩小部署。您可以在此处找到说明如何设置的文档和教程:https://cloud.google.com/kubernetes-engine/docs/tutorials/custom-metrics-autoscaling

Kubernetes 1.10 在 GKE 上推出后将扩展对自定义指标的支持,以包括未附加到任何 Kubernetes 对象的指标。这将使您能够根据此处列出的任何指标扩展部署,例如 Google Pub/Sub 队列中的消息数量。

答案2

羟脯氨酸基于 CPU 使用率。您可以启用集群自动扩缩在 GKE(目前为测试版)上根据工作负载调整 Kubernetes 集群的大小。有关更多详细信息,请查看 Cluster autoscalerGithub 上的常见问题解答

相关内容