本文介绍如何实现阿里云指标自动伸缩,帮助您完成集群内应用的扩缩容。
背景信息
很多场景下,往往需要更多的监测指标来指导集群的扩缩容,如HTTP请求率、Ingress QPS等,但是默认HPA并不支持这些我们自定义的指标或外部指标,但是Kubernetes提供了External Metrics的机制,为我们的应用提供更加便捷的扩缩机制。
部署alibaba-cloud-metrics-adapter组件
示例
本文以创建名为Nginx的Deployment和Service为例配置HPA自动伸缩。
常见问题
-
问:如果执行
kubectl get hpa
后发现target一栏为<unknow>怎么办?答:请按照以下操作解决。- 执行
kubectl describe hpa <hpa_name>
,确认HPA失效的原因。- 如果Conditions字段提示AbleToScale为False,请确认Deployment是否正常部署。
- 如果Conditions字段提示ScalingActive为False,请继续下一步。
- 执行
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/"
。如果返回为Error from server (NotFound): the server could not find the requested resource,请确认alibaba-cloud-metrics-adapter的启动状态。如果确认alibaba-cloud-metrics-adapter状态正常,请确认HPA指标是否是Ingress相关指标。如果是Ingress相关指标,您需要提前部署日志服务组件。更多信息,请参见Ingress访问日志分析与监控。
- 确认HPA指标填写正确。sls.ingress.route的值格式为
<namespace>-<svc>-<port>
。<namespace>
为Ingress所在的命名空间。<svc>
是Ingress对应的Service名称。<port>
是Ingress对应Service的端口名称。
- 执行
-
问:如何查找HPA支持的指标名称?
答:请参见阿里云HPA指标, 以下列举为常用指标。指标名称 描述 附加参数 sls_ingress_qps 指定的IngressRoute每秒查询率 sls.ingress.route sls_ingress_latency_avg 所有请求的延迟 sls.ingress.route sls_ingress_latency_p50 50%请求的延迟 sls.ingress.route sls_ingress_latency_p95 95%请求的延迟 sls.ingress.route sls_ingress_latency_p99 99%请求的延迟 sls.ingress.route sls_ingress_latency_p9999 99.99%请求的延迟 sls.ingress.route sls_ingress_inflow Ingress的流入带宽 sls.ingress.route
在文档使用中是否遇到以下问题
更多建议
匿名提交