2020-04-14-metrics-server 轻量级监控

metrics-server 是用来取代heapster,负责从kubelet中采集数据, 并通过Metrics API在Kubernetes Apiserver中暴露它们。

metrics-server 采集node 和pod 的cpu/mem,数据存在容器本地,不做持久化。这些数据的使用场景有 kubectl top 和scheduler 调度、hpa 弹性伸缩,以及原生的dashboard 监控数据展示。

metrics-server 和prometheus 没有半毛钱关系。 也没有任何数据或者接口互相依赖关系。

prometheus 能力更强,也更重,拥有更多的监控指标以及自定义监控指标,可以配合grafana 面板更好的展示数据,配合alertmanager 实现告警。介绍见之前内容 https://github.com/cai11745/k8s-ocp-yaml/blob/master/prometheus/2019-10-22-prometheus-1-install-and-metricsIngress.md

metrics-server 指标少,但是更轻量,适用于简单场景的容器与节点数据监控。

安装 metrics-server

官网 https://github.com/kubernetes-sigs/metrics-server

修改下镜像地址,默认的k8s.grc.io 国内拉取不到,换成阿里云 registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6

[root@master ~]# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml        
[root@master ~]# vim components.yaml 
# 修改image
# registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6   
[root@master ~]# kubectl apply -f components.yaml

使用kubectl top 查看pod 和node 的资源使用情况,获取不到数据

[root@master ~]# kubectl top node        
error: metrics not available yet
[root@master ~]# kubectl top pod
W0414 13:34:35.193688   13720 top_pod.go:266] Metrics not available for pod default/centos-758b7556f5-542wl, age: 299h19m20.193680607s
error: Metrics not available for pod default/centos-758b7556f5-542wl, age: 299h19m20.193680607s

查看metrics-server pod 日志

提示 无法解析节点的主机名,是metrics-server 这个容器不能通过CoreDNS 解析各Node的主机名,metrics-server 连节点时默认是连接节点的主机名,需要加个参数,让它连接节点的IP,而不是使用主机名:

  • --kubelet-insecure-tls

  • --kubelet-preferred-address-types=InternalIP

修改yaml 文件,增加这两行

导入文件,过一会就正常了

接口测试

metrics-server 将node 和pod 的监控数据通过k8s 标准api 暴露出来。

通过kubectl proxy 命令暴露api 端口,默认8080,非加密端口。如果端口被用了就加上-p 参数指定一个端口

Last updated