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 |