如何在CentOS上配置Kubernetes监控
一、基础环境准备
在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://<
CentOS节点IP>
: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://< CentOS节点IP> :3000
登录Grafana,查看导入的仪表盘是否有数据(如节点CPU、内存使用率)。 -
触发告警测试:
手动创建一个高CPU使用的Pod(如stress
容器),观察Prometheus是否生成告警,并通过Alertmanager发送通知。
五、常见问题排查
- Prometheus无法采集指标:检查
ServiceMonitor
的selector
是否匹配目标服务的标签,或Prometheus的scrape_interval
是否设置过短; - Grafana无法连接Prometheus:确认Prometheus服务的集群内地址是否正确,或防火墙是否阻止了访问;
- 告警不触发:检查告警规则的
expr
表达式是否正确,或Prometheus的evaluation_interval
是否设置过长。
通过以上步骤,可在CentOS上为Kubernetes集群搭建一套完整的监控体系,实现对集群状态、资源使用、应用性能的全面监控与告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在CentOS上配置Kubernetes监控
本文地址: https://pptw.com/jishu/714931.html