一、基础环境准备
在CentOS上配置Kubernetes监控前,需确保以下基础环境已就绪:
- CentOS系统已升级至最新稳定版(如CentOS Stream 8/9);
- Kubernetes集群已正常部署(可通过
kubectl get nodes验证节点状态为Ready); - 已配置
kubectl命令行工具(版本与集群版本兼容); - 防火墙开放必要端口(如Prometheus的9090、Grafana的3000端口)。
二、核心监控组件部署(以Prometheus+Grafana为例)
1. 部署Prometheus Operator(简化管理)
Prometheus Operator是Kubernetes原生的监控解决方案,可自动化Prometheus、Alertmanager、Grafana等组件的部署与管理。
# 添加Prometheus Community Helm仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 安装Prometheus Operator(包含Prometheus、Alertmanager、Grafana)
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
此命令会自动创建monitoring命名空间,并部署以下组件:
- Prometheus:负责收集、存储集群指标;
- Alertmanager:处理Prometheus生成的告警(如邮件、Slack通知);
- Grafana:可视化监控数据的Web界面。
2. 配置Prometheus数据采集
Prometheus通过ServiceMonitor资源自动发现Kubernetes集群中的服务(如kube-state-metrics、Node Exporter)。若需自定义采集目标,可编辑Prometheus的ServiceMonitor配置:
# 查看Prometheus的ServiceMonitor列表
kubectl get servicemonitors -n monitoring
# 示例:自定义采集名为"my-app"的应用指标(需提前部署对应的Exporter)
cat <<EOF | kubectl apply -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app-monitor
namespace: monitoring
spec:
selector:
matchLabels:
app: my-app # 目标应用的标签
endpoints:
- port: metrics # 应用暴露指标的端口名称
interval: 15s # 采集间隔
EOF
默认情况下,Prometheus Operator会自动配置以下核心组件的采集:
- kube-state-metrics:暴露集群资源(Pod、Deployment、Node等)的状态指标;
- Node Exporter:采集节点级别的CPU、内存、磁盘等硬件指标;
- kubelet:采集容器运行时(如Docker、containerd)的性能指标。
3. 配置Grafana可视化
Grafana通过Prometheus作为数据源,展示集群监控数据的仪表盘。
# 获取Grafana的管理员密码(首次登录需使用)
kubectl get secret -n monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
# 端口转发Grafana服务到本地(方便访问)
kubectl port-forward -n monitoring svc/grafana 3000:80
# 访问Grafana(在浏览器中打开)
http://:3000
登录后(默认用户名/密码:admin + 上述获取的密码),完成以下配置:
- 添加Prometheus数据源:进入
Configuration > Data Sources,点击Add data source,选择Prometheus,填写URL为http://prometheus-operated.monitoring.svc.cluster.local:9090(Prometheus服务的集群内地址),点击Save & Test验证连接; - 导入仪表盘:进入
Dashboards > Import,输入以下常用仪表盘ID(覆盖Kubernetes监控的核心场景):1860:Kubernetes集群状态(节点、Pod、Namespace);2027:Kubernetes节点资源使用率(CPU、内存、磁盘);2111:Kubernetes Pod资源使用率(CPU、内存);4086:Kubernetes网络流量监控。
4. 配置告警规则(可选但推荐)
通过PrometheusRule资源定义告警规则,当集群出现异常时触发Alertmanager通知。示例如下:
# 创建告警规则文件(如k8s-alerts.yaml)
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: k8s-alerts
namespace: monitoring
spec:
groups:
- name: kubernetes-alerts
rules:
# 告警:Pod CPU使用率超过85%(持续2分钟)
- alert: HighPodCPUUsage
expr: sum(rate(container_cpu_usage_seconds_total{namespace!="", pod!="", container!="POD"}[5m])) by (namespace, pod, container) > 0.85
for: 2m
labels:
severity: critical
annotations:
summary: "Pod CPU使用率过高({{ $labels.namespace }}/{{ $labels.pod }}/{{ $labels.container }})"
description: "Pod {{ $labels.pod }} 的CPU使用率已超过85%,持续2分钟。"
# 告警:节点内存使用率超过90%(持续5分钟)
- alert: HighNodeMemoryUsage
expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
for: 5m
labels:
severity: warning
annotations:
summary: "节点内存使用率过高({{ $labels.instance }})"
description: "节点 {{ $labels.instance }} 的内存使用率已超过90%,持续5分钟。"
应用告警规则:
kubectl apply -f k8s-alerts.yaml
Alertmanager会根据规则发送通知,需提前配置通知渠道(如邮件、Slack),编辑values.yaml文件(Helm安装时使用的配置文件)中的alertmanager.config部分即可。
三、补充监控组件(可选)
1. kube-state-metrics(集群状态指标)
若未通过Prometheus Operator自动部署,可手动安装:
kubectl apply -f https://github.com/kubernetes-sigs/kube-state-metrics/releases/latest/download/components.yaml
此组件会暴露集群资源的详细状态指标(如Pod的重启次数、Deployment的副本数),供Prometheus采集。
2. Node Exporter(节点硬件指标)
若未通过Prometheus Operator自动部署,可手动创建DaemonSet:
kubectl apply -f https://raw.githubusercontent.com/prometheus/node_exporter/master/examples/node-exporter-daemonset.yaml
此DaemonSet会在每个节点上运行Node Exporter,采集节点的CPU、内存、磁盘、网络等硬件指标。
四、验证监控功能
-
检查Prometheus是否正常运行:
kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus若所有Pod状态为
Running,则表示Prometheus已启动。 -
访问Grafana仪表盘:
通过http://登录Grafana,查看导入的仪表盘是否有数据(如节点CPU、内存使用率)。:3000 -
触发告警测试:
手动创建一个高CPU使用的Pod(如stress容器),观察Prometheus是否生成告警,并通过Alertmanager发送通知。
五、常见问题排查
- Prometheus无法采集指标:检查
ServiceMonitor的selector是否匹配目标服务的标签,或Prometheus的scrape_interval是否设置过短; - Grafana无法连接Prometheus:确认Prometheus服务的集群内地址是否正确,或防火墙是否阻止了访问;
- 告警不触发:检查告警规则的
expr表达式是否正确,或Prometheus的evaluation_interval是否设置过长。
通过以上步骤,可在CentOS上为Kubernetes集群搭建一套完整的监控体系,实现对集群状态、资源使用、应用性能的全面监控与告警。
以上就是关于“如何在CentOS上配置Kubernetes监控”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm