集群透视 - K8s 核心监控组件与日志管理方案
对于 SRE 而言,仅仅让应用跑起来是远远不够的,确保整个 Kubernetes 集群的健康、稳定,并能够快速定位应用问题,依赖于一套完善的监控和日志体系。
Kubernetes 监控分层与核心组件
Kubernetes 的监控可以从不同层面进行:
- 节点 (Node) 层面: 监控每台物理机或虚拟机的硬件资源使用情况、操作系统状态等(通常由 Node Exporter 负责,我们在 Prometheus 系列中已介绍)。
- Pod/容器层面: 监控每个 Pod 及其内部容器的资源消耗、网络流量等。
- Kubernetes 控制平面层面: 监控 API Server, etcd, Scheduler, Controller Manager 等核心组件的健康和性能(云厂商的托管 K8s 服务通常会提供这部分监控,或者需要专门配置)。
- Kubernetes API 对象状态层面: 监控 Deployments, Services, StatefulSets, PersistentVolumeClaims 等 K8s 资源对象自身的状态。
为了支持这些监控,Kubernetes 生态提供了一些核心组件:
A. metrics-server
(资源指标管道)
- 用途:
metrics-server
是一个轻量级的、集群范围的资源使用数据聚合器。它主要负责收集和提供临时的、短期的 Pod 和 Node 的核心资源使用指标(CPU 和内存)。 - 工作原理: 它从每个 Node 上的
kubelet
(kubelet 又从内置的cAdvisor
获取数据)收集汇总的资源使用数据,然后在内存中存储这些聚合指标,并通过 Kubernetes Metrics API (metrics.k8s.io
) 暴露出来。 - 主要消费者:
- Horizontal Pod Autoscaler (HPA): HPA 依赖
metrics-server
提供的 Pod CPU/内存平均利用率来进行水平伸缩决策。 kubectl top pod
和kubectl top node
命令: 这两个命令显示的就是metrics-server
提供的实时
- Horizontal Pod Autoscaler (HPA): HPA 依赖