概述
了解K8S中的弹性伸缩
Kubernetes在多个维度、多个层次上提供不同的组件来满足不同场景下的伸缩需求,主要如下:
类型 | Pod | Node |
横向伸缩 | HPA(Horizontal Pod Autoscaler) | Cluster Autoscaler |
纵向伸缩 | VPA (Vertical Pod Autoscaler) | None |
- HPA: 即容器水平伸缩(Horizontal Pod Autoscaler)负责Pod水平伸缩的组件,是所有伸缩组件中历史最悠久的,目前支持autoscaling/v1、autoscaling/v2beta1与autoscaling/v2beta2,其中autoscaling/v1只支持CPU一种伸缩指标,在autoscaling/v2beta1中增加支持custom metrics,在autoscaling/v2beta2中增加支持external metrics。
- CA: 即集群伸缩(Cluster Autoscaler),负责Node节点水平伸缩的组件,1.0.0之后已是GA阶段(General Availability,即正式发布的版本),UK8S使用的为GA版本。
- VPA: 即Pod的纵向伸缩,根据Pod的资源利用率、历史数据、异常事件,来动态调整负载的Request值的组件,主要关注在有状态服务、单体应用的资源伸缩场景,目前(2019年8月26日)处于beta阶段,不推荐在生产环境使用。
另外,还有cluster-proportional-autoscaler伸缩组件,可根据集群的节点数目,水平调整Pod数目的组件,目前处在GA阶段,用来根据集群规模大小动态调整CoreDNS、Ingress等关键服务的规模。另外addon-resizer组件可根据集群中节点的数目,纵向调整负载的Request的组件,目前处在beta阶段。
下面我们主要来介绍下HPA和CA这两个最常用的伸缩组件。