如何在Debian上监控K8s性能
导读:在 Debian 上监控 Kubernetes 性能 一 监控体系与组件选型 指标采集与存储:使用 Prometheus 抓取并存储时间序列指标,配合 Alertmanager 做告警路由与通知。 节点与系统层:部署 Node Expor...
在 Debian 上监控 Kubernetes 性能
一 监控体系与组件选型
- 指标采集与存储:使用 Prometheus 抓取并存储时间序列指标,配合 Alertmanager 做告警路由与通知。
- 节点与系统层:部署 Node Exporter 采集主机 CPU、内存、磁盘 I/O、网络等指标;cAdvisor 已集成于 kubelet,提供容器级资源与性能数据。
- 编排对象状态:部署 kube-state-metrics,将 Deployment/ReplicaSet/Pod/Node 等对象状态转换为可观测指标,便于容量与稳定性分析。
- 可视化与告警:用 Grafana 做仪表盘展示;告警规则写入 Prometheus,由 Alertmanager 推送至企业微信、钉钉、Slack、邮件等。
- 快速一体化方案:使用 kube-prometheus-stack Helm Chart 一键部署 Prometheus、Grafana、Alertmanager 及常用 Exporter 与仪表盘。
二 快速落地步骤
- 准备命名空间与权限
- 创建监控命名空间并配置 RBAC,确保 Prometheus 能发现节点、Pod、Endpoints 等目标。
- 部署一体化监控栈
- 添加 Helm 仓库并安装 kube-prometheus-stack(包含 Prometheus、Grafana、Alertmanager、Node Exporter、kube-state-metrics、默认仪表盘与告警规则):
- helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
- helm repo update
- helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
- 添加 Helm 仓库并安装 kube-prometheus-stack(包含 Prometheus、Grafana、Alertmanager、Node Exporter、kube-state-metrics、默认仪表盘与告警规则):
- 访问与验证
- Grafana:kubectl port-forward -n monitoring svc/prometheus-grafana 3000,默认账号 admin/admin;添加数据源 Prometheus(服务地址:http://prometheus-operated.monitoring.svc.cluster.local:9090)。
- Prometheus:kubectl port-forward -n monitoring svc/prometheus-operated 9090,检查 Targets 页是否健康。
- 查看默认仪表盘(如 Kubernetes / Compute Resources / Nodes/Pods),确认指标采集正常。
三 关键指标与常用 PromQL
- 节点资源
- CPU 使用率(1 分钟平均):1 - avg by(instance)(rate(node_cpu_seconds_total{ mode=“idle”} [1m]))
- 内存使用率:1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)
- 磁盘空间使用率:1 - (node_filesystem_avail_bytes{ mountpoint=“/”} / node_filesystem_size_bytes{ mountpoint=“/”} )
- 磁盘 I/O 负载:rate(node_disk_read_time_seconds_total[5m]) / rate(node_disk_reads_completed_total[5m])
- Pod 与容器
- Pod 重启次数:increase(kube_pod_container_status_restarts_total[1h])
- 容器 CPU 使用率(按 Pod 聚合):sum by(pod, namespace)(rate(container_cpu_usage_seconds_total{ container!=“”} [1m]))
- 容器内存使用量:sum by(pod, namespace)(container_memory_usage_bytes{ container!=“”} )
- 编排与控制面
- API Server 请求延迟(P95):histogram_quantile(0.95, sum(rate(apiserver_request_duration_seconds_bucket[5m])) by (le, verb, subresource))
- 节点就绪数:sum by(instance)(kube_node_status_condition{ condition=“Ready”, status=“true”} )
- 网络
- 节点入/出流量:rate(node_network_receive_bytes_total[5m])、rate(node_network_transmit_bytes_total[5m])
四 日志与可视化补充
- 日志链路:部署 EFK(Elasticsearch + Fluent Bit + Kibana) 或 ELK,采集容器标准输出与应用日志,结合 Kibana 做检索与可视化,用于故障排查与审计。
- 可视化与终端工具:
- Kubernetes Dashboard:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml;本地访问可用 kubectl proxy 后打开 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/。
- K9s:终端全屏 UI,快速查看资源、日志与事件,适合日常巡检与排障。
五 告警与排障要点
- 建议优先启用并调整内置告警规则(如节点宕机、Pod CrashLoopBackOff、CPU/内存压力、API Server 高延迟等),再按业务 SLO 补充自定义规则与通知渠道。
- 常见问题速查
- 抓取失败:检查 ServiceMonitor/Endpoints/NetworkPolicy 与 RBAC;确认 Pod/Node 的 /metrics 端口与路径可达。
- 数据缺失:确认 kube-state-metrics 与 Node Exporter 已就绪;Grafana 数据源指向正确的 Prometheus Service。
- Dashboard 空白:确认 Prometheus 中有对应 Job/Target 与健康的时间序列数据。
- 节点高负载:结合 CPU 限流、内存 OOM、磁盘 I/O 饱和与网络丢包等指标定位瓶颈,必要时扩容或调整资源请求/限制。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Debian上监控K8s性能
本文地址: https://pptw.com/jishu/787537.html
