Metrics-server簡介git
Metrics-server是用來替換heapster獲取集羣上資源指標數據的,heapster從1.11開始逐漸被廢棄了。github
在使用heapster時,獲取資源指標是由heapster自已獲取的,heapster有自已的獲取路徑,沒有經過apiserver,後來k8s引入了資源指標API(Metrics API),因而資源指標的數據就從k8s的api中的直接獲取,沒必要再經過其它途徑。
metrics-server: 它也是一種API Server,提供了核心的Metrics API,就像k8s組件kube-apiserver提供了不少API羣組同樣,但它不是k8s組成部分,而是託管運行在k8s之上的Pod。爲了讓用戶無縫的使用metrics-server當中的API,還須要把這類自定義的API,經過聚合器聚合到核心API組裏,
而後能夠把此API看成是核心API的一部分,經過kubectl api-versions可直接查看。
metrics-server收集指標數據的方式是從各節點上kubelet提供的Summary API 即10250端口收集數據,收集Node和Pod核心資源指標數據,主要是內存和cpu方面的使用狀況,並將收集的信息存儲在內存中,因此當經過kubectl top不能查看資源數據的歷史狀況,其它資源指標數據則經過prometheus採集了。api
k8s中不少組件是依賴於資源指標API的功能 ,好比kubectl top 、hpa,若是沒有一個資源指標API接口,這些組件是無法運行的。早期是依賴heapster。app
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server spa
下載六個文件並建立3d
for file in auth-delegator.yaml auth-reader.yaml metrics-apiservice.yaml metrics-server-deployment.yaml metrics-server-service.yaml resource-reader.yaml do wget https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.11/cluster/addons/metrics-server/$file done
直接運行kubectl apply -f .日誌
pod會啓動失敗須要修改參數code
將參數修改成你想要的,示例server
再執行kubectl apply -f .blog
能夠查看到pod正常運行了
查看container的運行日誌:kubectl logs -f metrics-server-v0.3.1-67f6877c59-5jshb -c metrics-server -n kube-system
或有顯示報錯:
解決方法:
提示 沒法解析節點的主機名,是metrics-server這個容器不能經過CoreDNS 10.96.0.10:53 解析各Node的主機名,metrics-server連節點時默認是鏈接節點的主機名,須要加個參數,讓它鏈接節點的IP:
「--kubelet-preferred-address-types=InternalIP」
-
驗證metrics-server
報錯:
解決方法:是因爲權限不夠所形成的。在resource-reader.yaml文件添加一行