弹性伸缩(HPA)是 Kubernetes 的一项功能,可以对您的应用进行自动扩容和自动缩容。你除了可以根据应用的 CPU 和内存使用量自动伸缩 Pod 外,还可以使用“自定义指标”进行自动伸缩。我们不建议你直接部署HPA,结合工作负载部署HPA详见部署工作负载;结合工作负载方式通过添加容器部署HPA详见添加容器。
弹性伸缩的好处
HPA 将自动缩放正在运行的 Pod(Deployment, Statefulset…) 的数量,以实现最高效率。HPA 中影响 Pod 数量的因素包括:
- 用户定义的允许运行的 Pod 的最小和最大数量。
- 资源指标中报告的观察到的 CPU 或内存使用情况。
- 第三方指标应用程序(例如 Prometheus)提供的自定义指标。
- HPA 通过释放因过多的 Pod 而浪费的硬件资源和按照应用需要的性能,自动提高或降低 Pod 数量,来改善你的服务。
创建一个HPA
- 在左侧菜单导航栏单击弹性伸缩,在弹性伸缩列表页单击添加弹性伸缩。
- 输入HPA的名称。
- 为HPA选择一个命名空间。
- 选择工作负载作为 HPA 的扩展目标。
- 为 HPA 指定最小副本数和最大副本数。
- 配置 HPA 的指标。HPA指标类型包含资源、Pods、对象和External四种,选择不同的指标类型,对应不同的指标配置项:
- 资源: HPA以使用资源进行弹性伸缩,您可以选择内存或 CPU 使用率作为度量标准,这将触发 HPA 弹性扩缩容。在数量字段中,输入将触发 HPA 扩缩容机制的工作负载内存或 CPU 使用率的百分比
注意:在所选部署的工作负载中必须设置CPU或内存保留。 否则HPA将无法根据CPU或内存的利用率计算副本数 - Pods:为了使用弹性伸缩的自定义指标,你必须部署类似prometheus adapter的自定义指标服务
- 对象:为了使用弹性伸缩的自定义指标,你必须部署类似prometheus adapter的自定义指标服务
- External:在所选择的deployment中CPU预留必须设置,否则弹性伸缩不能计算基于CPU利用率的副本数量
- 资源: HPA以使用资源进行弹性伸缩,您可以选择内存或 CPU 使用率作为度量标准,这将触发 HPA 弹性扩缩容。在数量字段中,输入将触发 HPA 扩缩容机制的工作负载内存或 CPU 使用率的百分比
- 单击创建HPA。
获取HPA指标和状态
- 在左侧菜单栏中点击弹性伸缩,进入弹性伸缩列表页。
- 单击 HPA 的名称。将会进入 HPA 详细信息页面。