上一节讲了prometheus监控node节点并通过grafana来展示,本章节我们接着讲一下prometheus怎样去监控pod节点,
监控node节点只需要添加node_exporter就可以,那么监控pod节点也是需要这样做么?如果pod节点扩容或者缩容怎么办?
接下来带着这些问题我们往下走
cadvsior
本次我们使用cadvsior组件来监控pod节点,cadvsior是由谷歌开源,它不仅可以搜索一台机器上所有运行的容器信息,还提供基础查询界面和HTTP接口,方便其他组件如prometheus进行数据除去,cadvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况。
k8s在1.12版本之前cadvisor集成在node节点上的kubelet服务中,从1.12版本开始分离了两个组件,因此需要在node节点单独再去部署cadvisor
我们对cadvisor做了简单的了解,接下来我们来部署一下(说明cadvisor镜像需要在谷歌仓库下载,需要大家各显神通翻过一座山)
1、上传镜像到本地
docker load -i cadvisor_v0.36.0.tar.gz
2、更改标签上传到harbor镜像仓库中
docker push 10.0.0.109/lhl/cadvisor:v0.36.0
3、编写cadvisor的yaml文件
# cat cadvisor.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cadvisor
namespace: lhl
labels:
app: cadvisor
spec:
selector:
matchLabels:
name: cadvisor
template:
metadata:
labels:
name: cadvisor
spec:
nodeSelector:
node: cadvisor
containers:
- name: cadvisor
image: 10.0.0.109/lhl/cadvisor:v0.36.0
volumeMounts:
- name: rootfs
mountPath: /rootfs
readOnly: true
- name: var-run
mountPath: /var/run
readOnly: false
- name: sys
mountPath: /sys
readOnly: true
- name: docker
mountPath: /var/lib/docker
readOnly: true
ports:
- name: http
containerPort: 8080
protocol: TCP
args:
- --housekeeping_interval=10s
- --disable_metrics=disk
terminationGracePeriodSeconds: 30
volumes:
- name: rootfs
hostPath:
path: /
- name: var-run
hostPath:
path: /var/run
- name: sys
hostPath:
path: /sys
- name: docker
hostPath:
path: /var/lib/docker
4、编写svc的yaml文件(因为prometheus没在k8s中,所以使用了nodeprot进行通讯)
# cat cadvisor-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: cadvisor
namespace: lhl
spec:
type: NodePort
ports:
- name: cadvior
port: 8088
targetPort: 8080
nodePort: 38088
selector:
name: cadvisor
5、部署cadvisor
kubectl apply -f cadvisor.yaml cadvisor-svc.yaml
6、部署完成后我们可以看到pod已经启动

7、我们通过nodeprot暴露的端口来查看cadvisor的web页面,查询有没有采集导数据,首次采集数据会很慢,耐心稍等一下

8、采集到数据后我们需要在prometheus server的yaml文件配置
- job_name: "k8s-pod-cadvisor"
static_configs:
- targets: ["10.0.0.112:38088","10.0.0.113:38088","10.0.0.114:38088"] #已安装cadvisor的node节点ip与暴露cadvisor端口
9、重启一下prometheus server在查看

10、接下来我们只需要找grafana的pod模版经行展示 本次模版:193
