温馨提示×

centos上k8s如何监控与日志管理

小樊
40
2025-12-23 16:50:39
栏目: 智能运维

CentOS 上 Kubernetes 的监控与日志管理实践

一 监控体系与组件

  • 建议采用Prometheus + Grafana作为核心监控栈,覆盖节点、容器、Kubernetes 编排对象与组件状态;配合Alertmanager进行告警通知。关键采集组件包括:
    • Node Exporter:暴露节点级指标(CPU、内存、磁盘、网络)。
    • kube-state-metrics:暴露集群资源对象状态(如 Deployment、Pod、Node 的副本数、状态等)。
    • cAdvisor:内置于 kubelet,采集容器资源与性能数据。
    • 可视化与告警:Grafana 展示仪表盘,Alertmanager 处理告警路由与抑制。
  • 快速落地方式:使用 Helm 安装社区维护的kube-prometheus-stack,可一键部署 Prometheus、Grafana、Alertmanager 及常用 Exporter 与仪表盘。

二 监控快速落地步骤

  • 准备命名空间并部署监控栈(示例):
    • 创建命名空间:kubectl create ns monitoring
    • Helm 添加仓库并安装:
      • helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
      • helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring
  • 访问与验证:
    • Grafana:通过 Service 暴露端口(默认 3000),添加数据源 Prometheus(地址如:http://prometheus-server.monitoring.svc.cluster.local:9090),导入官方或社区仪表盘(如 Kubernetes / Node Exporter 等)。
    • Prometheus:访问 /targets 页面检查各 Job 抓取状态是否为 UP
  • 建议开启持久化存储(如 PVC/StorageClass)以避免数据丢失,并为生产环境配置合理的资源请求与告警规则。

三 日志体系与采集架构

  • 日志来源与落盘路径:
    • 应用容器日志:写入 stdout/stderr,由容器运行时重定向到宿主机 /var/log/containers/*.log,并与 /var/log/pods 目录关联;节点侧需配置 logrotate 防止磁盘被占满。
  • 采集模式选型:
    • DaemonSet 节点级代理(推荐):每个节点运行一个日志采集器,统一采集节点上所有 Pod 日志,运维简单、可靠性高(如 Fluentd、Fluent Bit、Filebeat)。
    • Sidecar 模式:针对单个应用的特殊需求(如多行堆栈日志、敏感信息脱敏、专有格式解析),在 Pod 内新增日志代理容器。
    • 应用直写 stdout/stderr:优先规范应用日志输出到标准输出,便于采集与统一治理。
  • 存储与可视化选型:
    • EFK/ELK(Elasticsearch + Fluentd/Logstash/Filebeat + Kibana):适合需要全文检索、复杂解析与丰富分析的场景。
    • Loki + Promtail + Grafana:轻量级、成本低、与 Prometheus 标签体系一致,适合容器日志的快速检索与与指标联动。

四 日志快速落地步骤

  • 方案 A(轻量优先):Loki + Promtail + Grafana
    • 部署 Loki 与 Promtail(可用 Helm:helm install loki grafana/loki-stack),Promtail 以 DaemonSet 形式运行,读取 /var/log/containers/*.log 并附加 Kubernetes 元数据后发送到 Loki。
    • Grafana 添加数据源 Loki(地址如:http://loki.monitoring.svc.cluster.local:3100),使用 {namespace=“xxx”, pod=“yyy”} 等标签进行查询与可视化。
  • 方案 B(功能完备):EFK/ELK
    • 部署 Elasticsearch(存储与检索)、Fluentd/Filebeat(采集与处理)、Kibana(分析与可视化)。
    • Fluentd/Filebeat 采集 /var/log/containers/*.log,通过 Kubernetes Metadata Filter 丰富标签,输出到 Elasticsearch;Kibana 建立索引模式与可视化报表。

五 日常排障与最佳实践

  • 快速定位:
    • 查看节点与组件状态:kubectl get nodes;kubectl get pods -A;kubectl get events -A
    • 查看容器日志:kubectl logs -n ;实时跟踪:kubectl logs -f -n ;多容器需指定容器名。
  • 稳定性与性能:
    • 为日志代理设置资源限制与缓冲策略,避免因高峰日志导致 OOM 或丢日志;节点侧启用 logrotate 定期轮转与清理。
  • 存储与成本:
    • 根据规模与查询需求选择后端:需要全文检索与复杂分析选 Elasticsearch;强调低成本与云原生集成选 Loki;超大规模与 OLAP 分析考虑 ClickHouse;合规归档可落 S3/Glacier
  • 安全与治理:
    • 规范应用日志为 JSON 格式,便于解析与脱敏;为监控与日志组件配置 RBAC、网络策略与最小权限;生产环境启用 持久化存储备份

0