Kubernetes自动扩展功能的学习笔记

Kubernetes的自动扩展SIG有多个子项目[1,2]。其中,我认为特别值得关注的是以下两个活动。

    • Horizontal Pod Auto scaler (HPA)

 

    Cluster Autoscaler (CA)

HPA和CA的双重必要性

HPA用于监视容器中CPU的使用率,并增加或减少容器的副本数量。而CA则用于解决节点对资源请求不足的情况,并添加节点。

当HPA在Pod的CPU使用率超过阈值时,它将增加副本数量以提高处理能力,但并不会为现有的节点增加新节点。如果使用云服务,节点数量将涉及成本,因此在处理需求较低的时间段,可以减少节点数量以节省费用;而在需求较大的时间段,希望增加节点数量来满足需求。然而,仅仅依靠HPA无法满足这种需求。

因此,換來 CA 的登場。CA 將與雲服務提供商的 API 進行連接,以增加所需的節點數量,以確保 POD 複製的需求量。當然,如果需求量減少,CA 將取消節點,以避免產生不必要的成本。

对比云供应商的自动扩展功能

对于云服务提供商来说,他们提供了根据虚拟服务器的CPU利用率增减虚拟服务器数量的自动伸缩服务。通过将这个功能应用于Kubernetes节点,它可以帮助我们减少不必要的成本。另一方面,将HPA和CA结合使用的价值在于,这是在不依赖于云服务提供商的Kubernetes项目中开发的功能。因此,它可以避免供应商锁定并且更容易实现多云和混合云。

使用IBM云Kubernetes服务时的CA利用

IBM Cloud Kubernetes Service 已正式推出于2019年3月11日,提供了基于CA开发的集群自动伸缩器(beta版)来按照IaaS的CPU使用率等指标进行伸缩,而不是根据虚拟服务器数量进行伸缩[6]。

这个配置在IBM Cloud Doc中进行了详细的解释[3],如果按照那样进行安装,就可以使用了。

请参阅供参考的文献。

[1] 自动缩放特别兴趣小组, https://github.com/kubernetes/community/blob/master/sig-autoscaling/README.md
[2] Kubernetes 自动缩放器, https://github.com/kubernetes/autoscaler
[3] IBM Cloud Kubernetes 服务集群自动缩放器 (Beta 版), https://cloud.ibm.com/containers-kubernetes/solutions/helm-charts/ibm/ibm-iks-cluster-autoscaler
[4] 集群扩展 (预览版 Beta 版), https://cloud.ibm.com/docs/containers/cs_cluster_scaling.html#ca
[5] 常见问题解答, https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md
[6] IBM Cloud Kubernetes 服务中的工作节点自动缩放全面发布, https://www.ibm.com/blogs/bluemix/2019/03/worker-node-auto-scaling-ga-in-ibm-cloud-kubernetes-service/

bannerAds