温馨提示×

Kubernetes部署在Debian上如何进行监控和日志管理

小樊
42
2025-12-21 01:29:47
栏目: 智能运维

在 Debian 上落地 Kubernetes 的监控与日志管理


一 监控体系与快速落地

  • 推荐采用 Prometheus + Grafana 作为核心监控栈,借助 Prometheus Operator 与 Helm 快速部署,默认包含 Prometheus、Alertmanager、Grafana 以及常用 Exporter(如 node-exporter、kube-state-metrics),并通过 ServiceMonitor 自动发现抓取目标。
  • 快速部署步骤
    1. 添加仓库并安装
      • helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
      • helm repo update
      • kubectl create ns monitoring
      • helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring
    2. 访问 Grafana
      • kubectl port-forward svc/kube-prometheus-stack-grafana -n monitoring 3000:80
      • 登录 http://localhost:3000(默认账号/密码 admin/admin
      • 添加数据源:Prometheus 地址 http://kube-prometheus-stack-prometheus.monitoring.svc.cluster.local:9090
      • 导入官方仪表盘(如 3119 Kubernetes Cluster Monitoring
    3. 验证抓取
      • 打开 Prometheus UI(端口转发或直接访问 Service),检查 Targets 页面是否健康
  • 关键组件与抓取要点
    • cAdvisor:已内置于 kubelet,采集容器 CPU/内存/网络/文件系统 指标,节点可通过 http://:8080/metrics 访问
    • node-exporter(DaemonSet):采集节点级 CPU/内存/磁盘/网络,指标端口 9100
    • kube-state-metrics:监听 API Server,输出 Deployment 副本数、Pod 相位、Node 调度状态 等,指标端口 8081
    • 建议为关键业务与系统组件配置 告警规则通知渠道(如 Email、企业微信、Slack)

二 日志体系与架构选型

  • 日志来源与采集方式
    • 来源:容器 stdout/stderrKubernetes 组件日志(如 kubelet、apiserver)、节点操作系统日志
    • 采集方式
      • DaemonSet 节点代理:每个节点部署一个日志 Agent(如 Fluentd、Fluent Bit、Filebeat),统一采集 /var/log/containers/*.log 与节点日志
      • Sidecar 模式:对特定应用(如多行堆栈、敏感信息脱敏)在 Pod 内附加日志采集容器
  • 存储与可视化选型
    • EFK(Elasticsearch + Fluentd/Fluent Bit + Kibana):通用、全文检索能力强,适合复杂解析与检索
    • ELK(Elasticsearch + Logstash + Kibana):在 Fluentd 基础上增加 Logstash 的复杂处理能力
    • Elasticsearch + Filebeat + Kibana:更轻量的采集链路,适合资源受限环境
    • Loki:轻量、低成本,配合 Grafana 做日志可视化,适合大规模容器日志
  • 快速上手 EFK(Fluentd 示例)
    1. 部署 Elasticsearch 与 Kibana(StatefulSet/Deployment + Service)
    2. 部署 Fluentd DaemonSet(挂载 /var/log/var/lib/docker/containers),示例核心配置片段
      • source: tail 读取 /var/log/containers/*.log,解析 json 并打上 kubernetes 元数据
      • match: 输出到 Elasticsearch(host/port、索引命名、重试与缓冲策略)
    3. 在 Kibana 创建 Index Pattern(如 k8s-logs-*),使用 DiscoverDashboard 检索分析
  • 快速上手 Loki(更轻量)
    • 部署 LokiGrafana,在 Grafana 添加 Loki 数据源,使用 LogQL 查询与可视化

三 快速排障与日常运维命令

  • 集群与节点状态
    • kubectl cluster-info
    • kubectl get nodes
    • kubectl get pods -A
  • 资源与性能
    • kubectl top nodes
    • kubectl top pods -A --containers
    • kubectl describe node / pod
  • 日志查看
    • kubectl logs [-c ]
    • kubectl logs -f [-c ](实时)
    • kubectl logs --previous [-c ](上一个实例)
  • 组件日志(宿主机 systemd)
    • sudo journalctl -u kubelet -f
    • sudo journalctl -u kube-proxy -f
  • 可视化与终端工具
    • 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/
    • K9s:终端全屏监控工具,快速查看 Pod/日志/事件

四 生产实践与注意事项

  • 资源与稳定性
    • 为日志/监控组件设置 requests/limits,避免 OOM;为 Fluentd/Filebeat 配置 缓冲与重试,应对日志洪峰
    • Prometheus 配置 持久化存储数据保留策略,避免数据丢失
  • 安全与合规
    • Elasticsearch/Kibana/Grafana 启用 访问控制与加密(TLS、RBAC),对敏感日志进行 脱敏与最小化授权
  • 节点与系统
    • 遵循 Debian 上部署 K8s 的注意事项:如 禁用 Swap、配置 内核参数、选择合适 容器运行时(containerd/CRI-O)、正确设置 网络插件 等,以保障监控与日志链路稳定
  • 维护与优化
    • 定期 审查监控数据优化告警规则升级组件版本,并结合业务 设置性能基线容量规划

0