一、 Cluster Autoscaler 工作原理
CA 抽象出了一个 NodeGroup 的概念,与之对应的是云厂商的伸缩组服务。CA 通过 CloudProvider 提供的 NodeGroup 计算集群内节点资源,以此来进行伸缩。
CA 启动后,CA 会定期(默认 10s)检查未调度的 Pod 和 Node 的资源使用情况,并进行相应的 Scale UP 和 Scale Down 操作。
CA 由以下几个模块组成:
- autoscaler:核心模块,负责整体扩缩容功能;
- estimator:负责评估计算扩容节点;
- simulator:负责模拟调度,计算缩容节点;
CA cloud-provider:与云交互进行节点的增删操作。社区目前仅支持AWS和GCE,其他云厂商需要自己实现CloudProvider和NodeGroup相关接口。
CA的架构如下:
接下来,我们来看下 CA 的扩缩容时的具体工作流程(原理)。
1. 扩容原理(Scale UP)
当 Cluster Autoscaler 发现有 Pod 由于资源不足而无法调度时,就会通过调用 Scale UP 执行扩容操作。
CA 扩容时会根据扩