在前面的文章中介绍了Kubernetes和Prometheus进行集成的常见方式,这篇文章结合具体的示例介绍一下如何监控Kubernetes的Pod。
集成Api Server
集成方式
Kubernetes主要提供了如下5种服务发现模式和Prometheus进行集成:
- Node
- Pod
- Endpoints
- Service
- Ingress
监控Pod主要需要使用Pod服务发现模式,配置方式如下所示
Pod服务发现模式
kubernetes_sd_configs:
- role: pod
监控方法
监控对象 | 监控指标内容 | 服务发现模式 | 监控方式 | 数据来源 |
---|---|---|---|---|
内置了Promthues支持的应用Pod实例 | Pod实例中采集的自定义的监控指标 | pod | 白盒监控 | 自定义Pod |
Kubernetes环境准备
本文使用Kubernetes 1.17,可参看下文进行快速环境搭建:
[root@host131 ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
192.168.163.131 Ready <none> 116m v1.17.0 192.168.163.131 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.9.7
[root@host131 ~]#
RBAC配置文件
准备如下RBAC配置文件
[root@host131 pod]# cat rbac.yml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- pods
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding