Metrics-server簡介
Metrics-server是用來替換heapster獲取集群上資源指標數據的,heapster從1.11開始逐漸被廢棄了。
在使用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采集了。
k8s中很多組件是依賴於資源指標API的功能 ,比如kubectl top 、hpa,如果沒有一個資源指標API接口,這些組件是沒法運行的。早期是依賴heapster。
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server
下載六個文件並創建
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會啟動失敗需要修改參數

將參數修改為你想要的,示例

再執行kubectl apply -f .
可以查看到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”
-
- 因為10250是https端口,連接它時需要提供證書,所以加上--kubelet-insecure-tls,表示不驗證客戶端證書,此前的版本中使用--source=這個參數來指定不驗證客戶端證書。
驗證metrics-server

報錯:

解決方法:是由於權限不夠所造成的。在resource-reader.yaml文件添加一行

