前面一篇文章中介绍了Kubernetes和Prometheus进行集成的常见方式,这篇文章结合具体的示例介绍一下如何监控Kubernetes的Api Server。
集成Api Server
集成方式
Kubernetes主要提供了如下5种服务发现模式和Prometheus进行集成:
- Node
- Pod
- Endpoints
- Service
- Ingress
监控Api Server主要需要使用Endpoints服务发现模式,配置方式如下所示
Endpoints服务发现模式
kubernetes_sd_configs:
- role: endpoints
监控方法
监控对象 | 监控指标内容 | 服务发现模式 | 监控方式 | 数据来源 |
---|---|---|---|---|
API Server组件的访问地址 | 获取的Kubernetes集群相关的运行监控指标 | endpoints | 白盒监控 | Api Server |
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 apiserver]# cat rbac.yml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- pods
- endpoints
- services
verbs: ["get", "list", "watch"]
- nonResourceURLs: [