k8s自动扩缩容
API Version版本及区别
autoscaling/v1 : 只支持基于 CPU 指标的扩缩
autoscaling/v2beta2:
- ( k8s 1.6+)自定义指标。Horizontal Pod Autoscaler 支持使用自定义指标。 你可以使用
autoscaling/v2beta2
API 为 Horizontal Pod Autoscaler 指定用户自定义指标。 Kubernetes 会通过用户自定义指标 API 来获取相应的指标。 - (k8s 1.6+)多指标支持。支持基于多个度量值进行扩缩。 你可以使用
autoscaling/v2beta2
API 来为 Horizontal Pod Autoscaler 指定多个指标。 Horizontal Pod Autoscaler 会根据每个指标计算,并生成一个扩缩建议。 幅度最大的扩缩建议会被采纳。 - (k8s 1.18+)v1.18开始,
v2beta2
API 允许通过 HPA 的behavior
字段配置扩缩行为
Metric API支持
- 资源指标,将使用
metrics.k8s.io
API,一般由 metrics-server 提供。 它可以做为集群插件启动。 - 自定义指标,将使用
custom.metrics.k8s.io
API。 它由其他度量指标方案厂商的“适配器(Adapter)” API 服务器提供。 确认你的指标流水线,或者查看已知方案列表 (Prometheus Adapter, Microsoft Azure Adapter , Kube Metrics Adapter等均基于实现该接口)。 如果你想自己编写,请从 boilerplate开始。 - 外部指标,将使用
external.metrics.k8s.io
API。可能由上面的自定义指标适配器提供。
使用自定义指标
以下均以prometheus为自定义指标来源进行说明