这里介绍下如何在K8s设置多个自定义计量。K8s 默认的可用于PHA(Pod Horizon Autoscaling)只有CPU,自定义的计量feature一直处于alpha 测试阶段,而且不稳定,在某些版本未实现custom metric,比如1.6.2。
这里以1.5.7 版本为例,首先部署K8s,heapster,grafana,influxdb。部署方法可参考https://github.com/kubernetes/heapster/tree/master/deploy/kube-config/influxdb
在kubelet 启动参数里要加上--enable-custom-metrics=true,kubelet会根据这个参数在容器启动时,对容器加label"io.cadvisor.metric.prometheus":"/etc/custom-metrics/definition.json", 在1.6.2 版本里,就是因为不再使用/pkg/kubelet/dockertools 管理容器 ,而是使用新的/pkg/kubelet/dockershim,而在dockershim中,还未实现加这中label,导致未实现custom metric。有了这个label后,
要支持custom metric,对容器也有要求,如果容器内/etc/custom-metrics/definition.json要有API endpoint 供 cAdvisor获取。
cat/etc/custom-metrics/definition.json
{"endpoint":"http://192.168.10.2:8080/metrics"}
这个文件里面的IP是动态写入的,在容器初始化时写入PodIP。具体可参考https://medium.com/@marko.luksa