温馨提示×

centos k8s部署后如何监控性能

小樊
35
2026-01-02 10:34:43
栏目: 智能运维

CentOS 上 Kubernetes 性能监控落地方案

一 基础巡检与可视化

  • 使用 kubectl 快速查看节点与工作负载状态:
    • 查看节点健康:kubectl get nodes;查看所有命名空间 Podkubectl get pods -A;查看事件:kubectl get events -A;定位异常:kubectl describe pod -n
  • 部署 Kubernetes Dashboard 做可视化:
    • 安装:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml(版本以实际为准)。
    • 访问:启用代理 kubectl proxy,浏览器打开 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/;获取登录 Tokenkubectl -n kube-system create token admin-user
  • CentOS 主机侧可用 Cockpit 辅助观测:
    • 安装与启用:yum install cockpit -y && systemctl enable --now cockpit;防火墙放行:firewall-cmd --permanent --add-service=cockpit && firewall-cmd --reload;访问 http://:9090

二 指标监控 Prometheus Grafana kube state metrics 与 Node Exporter

  • 组件与作用:
    • Prometheus:采集与存储时间序列指标,支持 Kubernetes Service Discovery 自动发现目标。
    • Grafana:可视化展示,连接 Prometheus 数据源,导入官方/社区仪表盘。
    • kube-state-metrics:从 Kubernetes API 获取资源对象状态(如 Pod/Deployment/Node 的副本数、状态等)。
    • Node Exporter:暴露节点级 CPU/内存/磁盘/网络 指标。
    • cAdvisor:内置于 kubelet,采集容器级资源使用(CPU、内存、文件系统、网络)。
  • 快速部署(生产推荐 Helm):
    • 添加仓库并安装 kube-prometheus-stack(包含 Prometheus/Alertmanager/Grafana/Operator 与默认采集规则):
      • helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
      • helm install prometheus prometheus-community/kube-prometheus-stack -n monitor --create-namespace
    • 验证:
      • Prometheus 控制台:kubectl -n monitor port-forward svc/prometheus-kube-prometheus-prometheus 9090:9090
      • Grafana 控制台:kubectl -n monitor port-forward svc/prometheus-grafana 3000:80(默认账号 admin/admin,首次登录需修改密码)
      • 查看目标抓取:http://localhost:9090/targets
    • 导入常用仪表盘(Grafana 导入 ID):3119(Kubernetes Cluster Monitoring)315(Node Exporter Full)

三 日志与追踪

  • 日志方案:
    • Loki + Grafana(轻量、与 Prometheus 同源):helm install loki grafana/loki-stack -n monitor;在 Grafana 添加 Loki 数据源后即可在 Explore 中查询 Pod/容器日志
    • ELK(Elasticsearch + Logstash + Kibana):适合复杂检索与分析场景,部署后可结合索引模板与可视化仪表盘做深入排查。
  • 快速排错命令:
    • 查看日志:kubectl logs -n ;实时跟踪:kubectl logs -f -n ;多容器用 -c 指定容器。

四 关键指标与告警示例

  • 建议重点观测与告警:
    • 节点资源:CPU/内存/磁盘 IO/网络 使用率(Node Exporter);磁盘空间阈值(如 inode/剩余空间)。
    • 容器与 Pod:CPU ThrottlingOOMKilledRestart CountPending 状态、容器就绪探针失败。
    • 编排层:Deployment/ReplicaSetDesired/Current/Ready 不一致、滚动升级失败、Job 失败。
    • 集群组件:API Server 延迟/错误率etcd 健康与延迟、Scheduler/Controller-manager 可用性。
    • 网络:Pod 间/跨节点 延迟与丢包、服务 Endpoint 变化异常。
  • Prometheus 告警规则示例(PrometheusRule CRD):
    • Pod 频繁重启
      • alert: PodCrashLooping
      • expr: rate(kube_pod_container_status_restarts_total{job=“kube-state-metrics”}[5m]) > 0
      • for: 5m
      • labels: severity=warning
      • annotations: summary: Pod {{ $labels.namespace }}/{{ $labels.pod }} is crash looping
    • 节点 CPU 高占用
      • alert: NodeCPUHigh
      • expr: 1 - avg by(instance)(rate(node_cpu_seconds_total{mode=“idle”}[5m])) > 0.8
      • for: 10m
      • labels: severity=critical
      • annotations: summary: Node {{ $labels.instance }} CPU usage is above 80%
    • 节点磁盘空间不足
      • alert: NodeDiskPressure
      • expr: (node_filesystem_avail_bytes{mountpoint=“/”} / node_filesystem_size_bytes{mountpoint=“/”}) < 0.10
      • for: 5m
      • labels: severity=warning
      • annotations: summary: Node {{ $labels.instance }} disk available < 10%**

五 生产实践与排错建议

  • 存储与高可用:为 Prometheus 配置 持久化存储(PVC) 与副本数,避免数据丢失;关键告警接入 Alertmanager邮件/Slack/企业微信/钉钉 等通知渠道。
  • 安全与权限:为监控组件创建 最小权限 RBAC,对外暴露服务使用 Ingress/Service 结合认证与网络策略。
  • 版本与升级:定期升级 kube-prometheus-stack/仪表盘/Exporter,保持与集群版本兼容。
  • 专项监控:有 GPU 负载时安装 NVIDIA 设备插件 与相应 Exporter,采集 GPU 利用率/显存 等指标。
  • 快速定位路径:
    • 先看 节点/Pod 状态与事件(kubectl)→ 再看 指标趋势(Prometheus/Grafana)→ 最后查 日志根因(Loki/Kibana)。

0