Prometheus + Grafana:部署 kube-prometheus

1. 环境准备

1.1 版本兼容性

  • Kubernetes 版本: 1.18.0
  • kube-prometheus 版本: release-0.6 (与 Kubernetes 1.18 兼容)

1.2 安装必要工具

1
yum install -y git

2. 部署 kube-prometheus

2.1 下载项目文件

1
2
git clone -b release-0.6 https://github.com/prometheus-operator/kube-prometheus.git
cd kube-prometheus/manifests

2.2 整理 YAML 文件

1
2
3
4
5
6
7
8
9
10
11
mkdir -p serviceMonitor prometheus adapter node-exporter blackbox \
kube-state-metrics grafana alertmanager operator other/{nfs-storage,ingress}

mv alertmanager-* alertmanager/ && \
mv blackbox-exporter-* blackbox/ && \
mv grafana-* grafana/ && \
mv kube-state-metrics-* kube-state-metrics/ && \
mv node-exporter-* node-exporter/ && \
mv prometheus-adapter-* adapter/ && \
mv prometheus-* prometheus/ && \
mv kubernetes-serviceMonitor* serviceMonitor/

2.3 替换镜像源为国内源

1
2
3
4
5
# 替换 quay.io 为中科大镜像源
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' `grep "quay.io" -rl *`

# 验证替换结果
grep -rn 'image: ' *

3. 配置服务访问方式

3.1 修改 Prometheus 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# prometheus-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: prometheus
name: prometheus-k8s
namespace: monitoring
spec:
type: NodePort
ports:
- name: web
port: 9090
targetPort: web
nodePort: 30080
selector:
app: prometheus
prometheus: k8s

3.2 修改 Grafana 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# grafana-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: grafana
name: grafana
namespace: monitoring
spec:
type: NodePort
ports:
- name: http
port: 3000
targetPort: http
nodePort: 30081
selector:
app: grafana

3.3 修改 Alertmanager 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# alertmanager-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
alertmanager: main
name: alertmanager-main
namespace: monitoring
spec:
type: NodePort
ports:
- name: web
port: 9093
targetPort: web
nodePort: 30082
selector:
alertmanager: main
app: alertmanager

4. 部署监控组件

4.1 安装 CRD 和 Operator

1
2
3
4
kubectl create -f setup/

# 等待 Operator 运行
watch kubectl get pod -n monitoring

4.2 部署完整监控栈

1
2
3
4
kubectl create -f .

# 检查所有组件状态
watch kubectl get pod -n monitoring

5. 访问监控界面

服务 访问地址 默认端口
Prometheus http://<节点IP>:30080 30080
Grafana http://<节点IP>:30081 30081
Alertmanager http://<节点IP>:30082 30082

6. 添加 Basic Auth 认证 (可选)

参考文档: Prometheus-operator 添加 Basic Auth

7. 注意事项

  1. 镜像下载可能需要较长时间,请耐心等待
  2. 如果镜像下载失败,可尝试从 Docker Hub 手动下载
  3. 确保节点防火墙开放了 30080-30082 端口
  4. 生产环境建议配置 Ingress 和 TLS 证书

8. 组件说明

  • Prometheus Operator: 负责管理 Prometheus 实例
  • Prometheus: 主监控系统
  • Grafana: 可视化仪表板
  • Alertmanager: 告警管理
  • kube-state-metrics: Kubernetes 资源指标收集
  • node-exporter: 节点级指标收集