kubernetes监控metrics安装

简介

从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取, metrics-server 替代了heapster。Metrics Server 实现了Resource Metrics API,Metrics Server 是集群范围资源使用数据的聚合器。

Metrics Server 从每个节点上的 Kubelet 公开的 Summary API 中采集指标信息。

参考文档: https://github.com/kubernetes-incubator/metrics-server

安装metrics-server

这里可以clone官方的repohttps://github.com/kubernetes-incubator/metrics-server.git

  • metrics-server默认会从kubelet的基于http通信的10255端口获取指标数据,但出于安全考虑,kubernetes 1.11版本的kubeadm在初始化群集时会关闭kubelet的10255端口,导致无法获取数据。

  • 官方仓库中的清单文件metrics-server-deployment.yaml中未明确主程序metrics-server传递参数指定指标数据的获取接口,它通常应该是kubernetes.summary_api

修改镜像以及参数metrics-server-deployment.yaml

1
2
3
4
image: registry.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.3
args:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
  • --kubelet-insecure-tls CA 证书并没有把各个节点的 IP 签上去,所以这里 metrics-server 通过 IP 去请求时,提示签的证书没有对应的 IP(错误:x509: cannot validate certificate for xx.xx.xx.xx because it doesn’t contain any IP SANs),使用该参数跳过验证
  • kubelet-preferred-address-types 使用ip方式,解决xxx: no such host

我这里都已经修改好了可以直接使用即可

1
kubectl apply -f deploy/metrics-server/deploy/1.8+/

查看pod是否为Running状态

1
kubectl get pod -n kube-system

资源监控

  • 获取node资源

    1
    2
    3
    4
    5
    6
    7
    kubectl top node
    NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
    k8s-11 167m 4% 1680Mi 45%
    k8s-12 221m 5% 1563Mi 42%
    k8s-13 172m 4% 1500Mi 40%
    k8s-14 109m 2% 955Mi 25%
    k8s-15 218m 5% 2133Mi 57%
  • 获取pod资源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
kubectl top pod
NAME CPU(cores) MEMORY(bytes)
eureka-0-0 12m 322Mi
eureka-1-0 13m 307Mi
eureka-2-0 12m 322Mi
flask-c44695649-h2bq6 0m 23Mi
jenkins-65db5c5f74-h8czs 0m 604Mi
mongo-844dd9c866-d6g6k 3m 154Mi
nginx-deployment-5cbf758889-dk5w8 0m 3Mi
nginx-deployment-5cbf758889-s8jwd 0m 2Mi
nginx-deployment-5cbf758889-wxlfw 0m 4Mi
redis-66bff5cbbb-w77dn 1m 11Mi
tomcat-87cc47fb7-6cbqp 0m 121Mi
tomcat-87cc47fb7-dmld6 0m 106Mi
tomcat-87cc47fb7-wdkdm 0m 110Mi

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器