Debian 上 Kubernetes 监控实操指南
一 快速排障与基础观测
- 使用 kubectl 查看集群与资源状态:
- 查看集群信息:kubectl cluster-info
- 查看节点状态:kubectl get nodes
- 查看所有命名空间 Pod:kubectl get pods --all-namespaces
- 查看控制面与节点组件日志(Debian 使用 systemd):
- kubelet 日志:sudo journalctl -u kubelet -f
- kube-proxy 日志:sudo journalctl -u kube-proxy -f
- 组件服务状态:sudo systemctl status kubelet
- 资源使用查看(需要 Metrics Server):
- 节点资源:kubectl top nodes
- Pod 资源:kubectl top pods --all-namespaces
- 终端可视化工具 K9s:快速浏览、筛选、查看日志与事件,适合日常巡检。
二 指标监控体系 Prometheus Grafana
- 组件与作用
- Metrics Server:提供节点/Pod 的 CPU/内存 即时指标,支撑 kubectl top。
- node-exporter:采集节点级 CPU、内存、磁盘、网络 等指标。
- kube-state-metrics:从 API Server 生成 Deployment、ReplicaSet、Pod、Node 等对象状态指标。
- cAdvisor:容器级资源与性能采集(通常随 kubelet 启用)。
- Prometheus:时序数据采集与存储,支持灵活查询与告警。
- Grafana:可视化与仪表盘展示。
- 快速部署(示例)
- 添加仓库并安装
- Helm 方式(推荐):
- helm repo add prometheus https://prometheus-community.github.io/helm-charts
- helm repo add grafana https://grafana.com/charts
- helm install prometheus prometheus/prometheus -n monitoring --create-namespace
- helm install grafana grafana/grafana -n monitoring
- Debian 包方式(可选):sudo apt-get install prometheus grafana,然后配置 Prometheus 抓取。
- 部署指标采集组件
- kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
- kubectl apply -f https://raw.githubusercontent.com/prometheus/node_exporter/master/deploy/daemonset.yaml
- kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/kube-state-metrics/master/deploy/recommended.yaml
- 访问与验证
- Prometheus:http://:9090
- Grafana:http://:3000(默认账号 admin/admin,首次登录需修改密码)
- 导入常用仪表盘(如 Kubernetes / Compute Resources / Nodes/ Pods 等),在 Grafana 设置 Prometheus 为数据源后导入。
三 日志与事件观测
- Kubernetes Dashboard:基于 Web 的 UI,直观查看 Pod/Deployment/Service 状态与日志,适合临时排查与演示。
- 部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
- 访问:启用代理 kubectl proxy,浏览器打开 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
- 集中式日志方案:使用 ELK(Elasticsearch、Logstash、Kibana) 或 EFK(Elasticsearch、Fluentd、Kibana) 收集、检索、分析容器与系统日志,便于故障复盘与审计。
四 告警与可视化建议
- 在 Prometheus 中配置 告警规则(如节点 CPU/内存 阈值、Pod 重启次数、CrashLoopBackOff、Pending 长时间等),并通过 Alertmanager 对接 邮件/企业微信/钉钉/Slack 等通知渠道,形成闭环。
- 在 Grafana 中导入官方或社区的 Kubernetes 仪表盘,并按需定制业务指标面板,结合 变量 实现多集群/多命名空间统一视图。
五 常见问题与排查要点
- kubectl top 报 “Metrics not available”:确认 Metrics Server 已部署且就绪(就绪探针通过),APIService 无异常,节点网络与 kubelet 正常。
- cAdvisor/节点指标为空:确认 kubelet 启用 cAdvisor(默认开启),节点防火墙放行 10250/10255 等端口(按需最小化放通),以及 node-exporter DaemonSet 处于 Running。
- Prometheus 抓不到目标:检查 ServiceMonitor/Endpoints/Selector 是否匹配,Service 是否有 Endpoints,RBAC 是否授予 list/watch 权限,抓取端口与路径是否正确。
- Grafana 无数据:确认 Prometheus 作为数据源的 URL 与 Access 模式正确,测试查询有返回,仪表盘变量(如 namespace、pod)取值正常。