监控pod资源
cadvisor由谷歌开源,cadvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Prometheus进行数据抓取,cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况。
k8s 1.12之前cadvisor集成在node节点的上kubelet服务中,从1.12版本开始分离为两个组件,因此需要在node节点单独部署cadvisor。
https://github.com/google/cadvisor
cadvisor镜像准备
1、cd /opt
2、docker load -i cadvisor_v0.36.0.tar.gz
3、docker tag gcr.io/google_containers/cadvisor:v0.36.0 harbor.linux.com/base/cadvisor:v0.36.0
4、docker push harbor.linux.com/base/cadvisor:v0.36.0
启动cadvisor容器
1、docker run
--volume=/:/rootfs:ro
--volume=/var/run:/var/run:ro
--volume=/sys:/sys:ro
--volume=/var/lib/docker/:/var/lib/docker:ro
--volume=/dev/disk/:/dev/disk:ro
--publish=8080:8080 #指定cadvisor的监听端口
--detach=true
--name=cadvisor #指定容器名称
harbor.linux.com/base/cadvisor:v0.36.0
#容器的所有数据是存放在宿主机的 /var/lib/docker/ 目录下,所以把宿主机的目录映射到 cadvisor 容器中,让 cadvisor 获取其他容器的运行数据
2、每个node节点都需要运行此容器
prometheus采集node节点上所有pod的数据
1、vim /usr/local/prometheus/prometheus.yml
scrape_configs:
- job_name: 'kubernetes-k8s-pods' #采集指定node节点上所有pod的数据
static_configs:
- targets: ['192.168.3.144:8080','192.168.3.145:8080','192.168.3.146:8080']
2、systemctl restart prometheus.service
grafana添加监控pod的模板
导入官方的395、893模板即可
1、导入指定ID的模板
2、指定数据源为prometheus