K8S從1.7版本開始引入metrics server替代heapster,原因是heapster無法提供符合K8S標準的API。使用metrics server,就可以通過K8S API獲取到監控指標。本文大部分參考K8S官方的metrics server部署文檔(https://github.com/kubernetes-incubator/metrics-server),部分地方做了一定修改。整體過程如下:
1. 下載所需鏡像
從google官方鏡像庫下載:
docker pull gcr.io/google-containers/coredns docker pull gcr.io/google_containers/cluster-proportional-autoscaler-amd64 docker pull k8s.gcr.io/metrics-server-amd64 |
2. 下載metrics-server安裝包
git clone https://github.com/kubernetes-incubator/metrics-server.git |
3. 修改配置文件
Metrics-server默認使用coredns作爲解析,但是coredns不提供node的解析,因此需要設置--kubelet-preferred-address-types參數
編輯~/metrics-server/deploy/1.8+/metrics-server-deployment.yaml,添加或修改如下內容(紅色部分):
containers: - name: metrics-server image: k8s.gcr.io/metrics-server-amd64:v0.3.1 imagePullPolicy: IfNotPresent command: - /metrics-server - --metric-resolution=30s - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP |
4. 安裝部署
cd metrics-server kubectl create –f deploy/1.8+/ |
5. 驗證安裝效果
# kubectl get pods -n kube-system |grep metrics metrics-server-6696956c95-mlnv6 1/1 Running 0 55m |
6. 查看性能數據
# kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master 80m 10% 1353Mi 95% worker1 22m 2% 1038Mi 62%
# kubectl top pods -n kube-system NAME CPU(cores) MEMORY(bytes) coredns-6fd7dbf94c-grbkc 2m 20Mi coredns-6fd7dbf94c-vsc9b 2m 13Mi dns-autoscaler-5b4847c446-mfq9b 1m 6Mi kube-apiserver-master 16m 445Mi kube-controller-manager-master 11m 79Mi kube-flannel-7fcbn 1m 23Mi kube-flannel-h24sg 1m 36Mi kube-proxy-6cxkv 1m 27Mi kube-proxy-rrpp6 1m 16Mi kube-scheduler-master 4m 25Mi kubernetes-dashboard-8457c55f89-wgsrm 1m 11Mi metrics-server-6696956c95-mlnv6 1m 18Mi nginx-proxy-worker1 1m 3Mi |