温馨提示×

Debian K8s如何监控

小樊
32
2025-12-28 20:15:18
栏目: 智能运维

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 重启次数CrashLoopBackOffPending 长时间等),并通过 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 作为数据源的 URLAccess 模式正确,测试查询有返回,仪表盘变量(如 namespace、pod)取值正常。

0