首页主机资讯如何监控CentOS上的Kubernetes集群

如何监控CentOS上的Kubernetes集群

时间2025-11-28 12:13:03发布访客分类主机资讯浏览944
导读:监控方案总览 在 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
  • 通知渠道:在 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 等启用 RBACTLS;跨命名空间抓取使用 ServiceAccount + ClusterRoleBinding;在云环境或受限网络中为 NodePort/Ingress 配置访问控制与防火墙策略。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何监控CentOS上的Kubernetes集群
本文地址: https://pptw.com/jishu/758898.html
CentOS上Kubernetes的容器运行时有哪些选择 k8s在centos上的部署难点在哪

游客 回复需填写必要信息