Metrics Server 是 Kubernetes 集群核心監控數據的聚合器,它定期通過kubelet獲取監控數據(1.7版本前通過cAdvisor,后續精簡于kubelet),并通過metrics api提供監控數據。
原理

其中,通過kube-aggregator擴展apiserver,把打到apiserver的請求轉發給metrics-server,原理如下:

部署
metrics-server啟動參數說明:

驗證示例
kubectl top node可以查看node的cpu,內存使用情況:

引入metrics-client,通過go代碼獲取指標,示例:
import (
"fmt"
"context"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
metrics "k8s.io/metrics/pkg/client/clientset/versioned"
)
func main() {
metricClient, err := metrics.NewForConfig(restConfig)
if err != nil {
panic(err)
}
resp, err := metricClient.MetricsV1beta1().NodeMetricses().List(context.Background(), metav1.ListOptions{})
nodesUsed := nodesUsed.Items
for _, node := range nodesUsed {
fmt.Println(node.Name) //節點名稱
fmt.Println(node.Usage.Cpu().MilliValue()) // cpu使用量 單位:毫核
fmt.Println(node.Usage.Memory().Value() / (1024 * 1024)) // 內存使用量 單位:MB
}
}