如何监控CentOS上的Kubernetes集群
导读:监控方案总览 在 CentOS 上监控 Kubernetes 通常采用“指标 + 日志 + 可视化/告警”的组合:用 Prometheus 采集和存储时间序列指标,Grafana 做可视化,kube-state-metrics、cAdvis...
监控方案总览 在 CentOS 上监控 Kubernetes 通常采用“指标 + 日志 + 可视化/告警”的组合:用 Prometheus 采集和存储时间序列指标,Grafana 做可视化,kube-state-metrics、cAdvisor、Node Exporter 提供集群/节点/容器指标,Metrics Server 支撑 HPA/调度等基础能力,配合 Alertmanager 或企业级 SaaS 实现告警,必要时叠加 Kubernetes Dashboard、日志栈 完善观测面。
快速上手步骤
- 基础健康检查:使用 kubectl 查看节点与 Pod 状态
- 查看节点:kubectl get nodes
- 查看全命名空间 Pod:kubectl get pods --all-namespaces
- 部署 Metrics Server(为 HPA/资源指标 API 提供数据)
- 安装:kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
- 验证:kubectl get pods -n kube-system | grep metrics-server
- 部署 Prometheus + Grafana(推荐 Helm)
- 添加仓库:helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
- 安装监控栈:helm install prometheus prometheus-community/kube-prometheus-stack
- 获取 Grafana 密码:kubectl get secret --namespace default prometheus-grafana -o jsonpath=“{ .data.admin-password} ” | base64 -d
- 访问:kubectl port-forward svc/prometheus-grafana 3000:80 后浏览器打开 http://localhost:3000
- 导入常用仪表盘(在 Grafana 导入 ID)
- Kubernetes / Compute Resources / Cluster(ID:3119)
- Kubernetes / Compute Resources / Namespace(ID:315)
- Kubernetes / Compute Resources / Pod(ID:315)
- Node Exporter / Host Metrics(ID:1860)
- 可选:部署 Kubernetes Dashboard
- 安装:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
- 获取 Token:kubectl -n kube-system create token admin-user
- 访问:kubectl proxy 后打开 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 并用 Token 登录。
关键组件与采集路径
| 组件 | 作用 | 部署/暴露方式 | 典型抓取目标 |
|---|---|---|---|
| cAdvisor | 容器资源与性能(CPU、内存、磁盘、网络) | 已集成于 kubelet,/metrics/cadvisor | https://:10250/metrics/cadvisor |
| Node Exporter | 节点级硬件与 OS 指标 | DaemonSet + Service(NodePort/ClusterIP) | http://:/metrics |
| kube-state-metrics | 资源对象状态(Pod/Deployment/Node 等) | Deployment + Service | http://kube-state-metrics:8080/metrics |
| Kubelet | 节点与容器运行时指标 | 10250/metrics、10255/metrics(只读端口按需开启) | https://:10250/metrics |
| API Server / etcd / Scheduler / Controller Manager | 控制面组件健康与性能 | ServiceMonitor/Endpoints | https://:/metrics |
| Prometheus | 指标采集、存储、查询 | StatefulSet + Service + ServiceMonitor | 抓取上表各 /metrics |
| Grafana | 可视化与告警面板 | Deployment + Service | 数据源指向 Prometheus |
| Alertmanager | 告警路由与去重 | StatefulSet + Service | 接收 Prometheus 告警并发送通知 |
| 说明:cAdvisor 默认随 kubelet 启用;Node Exporter 以 DaemonSet 部署到每个节点;kube-state-metrics 通过 API Server 观察资源状态并输出指标;Prometheus 通过 ServiceMonitor 自动发现抓取目标。 |
告警与可视化
- 告警规则示例(PrometheusRule)
- 节点 CPU 持续高负载
- expr: 1 - avg by(instance)(rate(node_cpu_seconds_total{ mode=“idle”} [5m])) > 0.8
- for: 10m
- labels: severity=warning
- annotations:
- summary: High node CPU usage on { { $labels.instance } }
- description: CPU usage is above 80% for more than 10 minutes.
- Pod 频繁重启
- expr: increase(kube_pod_container_status_restarts_total[1h]) > 5
- for: 0m
- labels: severity=warning
- annotations:
- summary: Pod { { $labels.namespace } } /{ { $labels.pod } } restarted { { $labels.value } } times in the last hour
- 节点 CPU 持续高负载
- 通知渠道:在 Alertmanager 配置 Email/企业微信/钉钉/Slack/Webhook 等;生产建议分组、抑制与静默策略并用。
- 可视化:Grafana 导入官方/社区仪表盘(如 3119、315、1860),按团队关注维度建立目录与变量(集群、命名空间、节点)。
日志采集与排障
- 日志方案建议
- 采集器:优先 Fluent Bit(轻量高性能),或 Filebeat(生态成熟);大规模统一管控可用 Elastic Agent。
- 架构:以 DaemonSet 在每个节点采集容器标准输出与文件日志,发送至 Elasticsearch,用 Kibana 检索与可视化;也可对接 Loki + Grafana。
- 快速排障命令
- 查看事件:kubectl get events --all-namespaces --sort-by=.metadata.creationTimestamp
- 查看 Pod 日志:kubectl logs -n [-c ]
- 进入容器:kubectl exec -it -n [-c ] – sh
- 查看 ServiceMonitor/Endpoints:kubectl get servicemonitor,podmonitor,endpoints -n monitoring
- 检查抓取失败:kubectl logs -n monitoring deploy/prometheus-prometheus-operator-prometheus
- 安全与网络
- 建议为 Node Exporter/API Server/etcd 等启用 RBAC 与 TLS;跨命名空间抓取使用 ServiceAccount + ClusterRoleBinding;在云环境或受限网络中为 NodePort/Ingress 配置访问控制与防火墙策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何监控CentOS上的Kubernetes集群
本文地址: https://pptw.com/jishu/758898.html
