本章重点: 如何基于 custom-metrics-apiserver 项目,打造自己的 metric server
1. custom-metrics-apiserver简介
项目地址: https://github.com/kubernetes-sigs/custom-metrics-apiserver/tree/master
自定义metric server,具体来说需要做以下几个事情:
(1)实现 custom-metrics-apiserver 的 三个接口,如下:
type CustomMetricsProvider interface { // 定义metric。 例如 pod_cpu_used_1m ListAllMetrics() []CustomMetricInfo // 如何根据 metric的信息,得到具体的值 GetMetricByName(name types.NamespacedName, info CustomMetricInfo) (*custom_metrics.MetricValue, error) // 如何根据 metric selector的信息,得到具体的值 GetMetricBySelector(namespace string, selector labels.Selector, info CustomMetricInfo) (*custom_metrics.MetricValueList, error) }
GetMetricBySelectorm, GetMetricByName 在reststorage.go被使用。
restful接口在installer.go中被定义。
总的来说,可以认为
(1)基于custom-metrics-apiserver这个项目,你只要实现上述三个接口就行。其他的事情这个包在你new provider的时候都自动实现了。
(2)ListAllMetrics 注册了所有的Metric,让api-server 知道有哪些自定义metric。
(3)GetMetricByName, GetMetr