介绍
在之前的文章我介绍了下 Custom Metric 怎么实现自动扩容的。k8s基于自定义指标实现自动扩容
实际上Kubernetes定义了三种不同的监控数据接口,分别是Resource Metric
,Custom Metric
以及External Metric
。
一般来说Resource Metric
是通过metrics-server采集;
Custom Metric
是通过prometheus来实现自定义扩容。
External Metric
就是针对云场景的了,比方说通过获取slb最大连接数来实现自动扩容。
下面我来说下具体怎么实现的。
部署
安装alibaba-cloud-metrics-adapter,以下是yaml文件
1 | apiVersion: apps/v1 |
可以使用下面的命令来检测是否生效了:
1 | # kubectl get --raw="/apis/external.metrics.k8s.io/v1beta1" | jq |
简单说下各个指标的含义,方便之后去选择哪个指标去自动扩容。
slb_l4_traffic_rx 每秒流入
slb_l4_packet_tx 每秒流入的数据包数
slb_l4_active_connection 活动连接
slb_l4_max_connection 最大连接数
slb_l7_qps QPS
slb_l7_status_2xx 2xx个请求(每秒)
slb_l7_upstream_4xx 上游服务4xx请求(每秒)
sls_ingress_qps 特定入口路由的QPS
sls_ingress_inflow 入口流入带宽
k8s_workload_memory_usage 内存使用情况
k8s_workload_memory_rss rss
扩容例子
根据slb_l4_active_connection这个指标,实现自动扩容
1 | apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 |
这样就实现了通过External Metric
自动扩容。
参考链接
1 | https://github.com/AliyunContainerService/alibaba-cloud-metrics-adapter |