为什么不建议使用GKE运行托管IG自动缩放?

时间:2018-01-09 15:04:22

标签: google-cloud-platform google-compute-engine google-kubernetes-engine

根据此页面https://cloud.google.com/compute/docs/autoscaler/#specifications:“不要将计算引擎自动扩展与Google Kubernetes Engine拥有的托管实例组一起使用”。知道为什么吗?我在制作中这样做,效果很好。

我的大多数K8资源都是守护进程,每次使用托管IG自动调节器弹出新的K8s节点时,会在该节点上调度一些吊舱,并有效地平衡负载。

我发现使用Node Autoscaler运行HPA非常麻烦。我们必须等待两者实际扩展,精确设置资源请求并运行Heapster来测量实际资源消耗。管理的IG自动调节器更加简单和反应灵敏。

我读过https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#should-i-use-a-cpu-usage-based-node-autoscaler-with-kubernetes但除了“不要做”/“不兼容”之外,没有太多信息。当然“可以删除其上有一些系统关键pod的节点”,但这就是我们运行此类系统关键pod的3份副本的原因。

所以问题是,你看到为什么这不起作用的任何其他原因?

1 个答案:

答案 0 :(得分:2)

使用计算引擎(GCE)与Kubernetes(GKE)进行自动扩展,您可以进入GKE想要安排新pod但没有可用节点的情况,因为您的GCE自动缩放触发器未被命中(例如节点不足) CPU阈值)。相反,使用GKE自动缩放将创建一个新节点,如果它需要一个节点来安排一个pod。它消除了GCE中自动缩放的启发式猜测。

那就是说,我发现GCE自动缩放有时候仍然适合。我使用两个不同的节点池,一个用Kubernetes自动缩放我的“常规”pod,另一个用GCE自动缩放用于需要不同扩展的pod。我使用nodeSelector告诉pod应该运行哪个节点池。