首页 可观测性 Kubernetes (K8s) 可观测性Observability
可观测性

Kubernetes (K8s) 可观测性Observability

作者: kubernetes.ac.cn 2025-09-23

可观测性

了解如何通过收集指标、日志和追踪,实现对 Kubernetes 集群的端到端可视化。

在 Kubernetes 中,可观测性是指收集和分析指标、日志和追踪(通常被称为可观测性的三大支柱)的过程,旨在深入了解集群的内部状态、性能和健康状况。

Kubernetes 控制平面组件以及许多插件都会生成并发出这些信号。通过聚合和关联这些信号,您可以获得整个集群中控制平面、插件和应用程序的统一视图。

图 1 概述了集群组件如何发出这三种主要信号。

集群组件

指标管道

日志管道

追踪管道

存储与分析

运维与自动化

图 1. 集群组件发出的高级信号及其消费者。

指标

Kubernetes 组件以 Prometheus 格式从其 /metrics 端点发出指标,包括

  • kube-controller-manager
  • kube-proxy
  • kube-apiserver
  • kube-scheduler
  • kubelet

kubelet 也会在 /metrics/cadvisor/metrics/resource/metrics/probes 端点暴露指标,而诸如 kube-state-metrics 之类的插件则通过 Kubernetes 对象状态来丰富这些控制平面信号。

典型的 Kubernetes 指标管道会定期抓取这些端点,并将样本存储在时间序列数据库(例如使用 Prometheus)中。

有关详细信息和配置选项,请参阅系统指标指南

图 2 概述了常见的 Kubernetes 指标管道。

集群组件

Prometheus 抓取器

时间序列存储

仪表板与警报

自动化操作

图 2. 典型 Kubernetes 指标管道的组件。

对于多集群或多云的可视化需求,分布式时间序列数据库(例如 Thanos 或 Cortex)可以作为 Prometheus 的补充。

有关指标抓取器和时间序列数据库,请参阅下述常用可观测性工具 - 指标工具。

参见

日志

日志提供了应用程序、Kubernetes 系统组件内部事件的时间序列记录,以及诸如审计日志等与安全相关的活动记录。

容器运行时会捕获容器化应用程序的标准输出 (stdout) 和标准错误 (stderr) 流。虽然不同的运行时实现方式各异,但通过 CRI 日志格式,与 kubelet 的集成已实现标准化,且 kubelet 可以通过 kubectl logs 提供这些日志。

logging-node-level

图 3a. 节点级日志架构。

系统组件日志记录来自集群的事件,通常用于调试和故障排查。这些组件分为两类:在容器中运行的组件和不在容器中运行的组件。例如,kube-schedulerkube-proxy 通常运行在容器中,而 kubelet 和容器运行时则直接运行在宿主机上。

  • 在带有 systemd 的机器上,kubelet 和容器运行时会写入 journald。否则,它们会写入 /var/log 目录下的 .log 文件。
  • 在容器内运行的系统组件始终会写入 /var/log 下的 .log 文件,绕过了默认的容器日志记录机制。

存储在 /var/log 下的系统组件日志和容器日志需要进行日志轮转,以防止磁盘空间失控增长。一些集群供应脚本默认会安装日志轮转;请验证您的环境并根据需要进行调整。有关位置、格式和配置选项的详细信息,请参阅系统日志参考

大多数集群会运行一个节点级的日志代理(例如 Fluent Bit 或 Fluentd),该代理会追踪这些文件并将条目转发到中央日志存储库。日志架构指南解释了如何设计此类管道、应用保留策略以及将日志流传输到后端。

图 3 概述了常见的日志聚合管道。

Sources

应用程序 stdout / stderr

控制平面日志

审计记录

节点日志代理

中央日志存储

仪表板、警报、SIEM

图 3. 典型 Kubernetes 日志管道的组件。

有关日志代理和中央日志存储,请参阅下述常用可观测性工具 - 日志工具。

参见

追踪

追踪能够捕捉请求如何在 Kubernetes 组件和应用程序之间移动,从而关联延迟、时间以及操作之间的关系。通过收集追踪数据,您可以可视化端到端的请求流、诊断性能问题,并识别控制平面、插件或应用程序中的瓶颈或异常交互。

Kubernetes 1.36 可以通过 OpenTelemetry 协议 (OTLP) 导出 Span,既可以直接通过内置的 gRPC 导出器导出,也可以通过 OpenTelemetry Collector 进行转发。

OpenTelemetry Collector 从组件和应用程序接收 Span,进行处理(例如应用采样或脱敏),并将其转发到追踪后端进行存储和分析。

图 4 概述了典型的分布式追踪管道。

Sources

控制平面 Span

应用程序 Span

OTLP 导出器

OpenTelemetry Collector

追踪后端

可视化与分析

图 4. 典型 Kubernetes 追踪管道的组件。

有关追踪收集器和后端,请参阅下述常用可观测性工具 - 追踪工具。

参见

常用可观测性工具

注意: 本节链接到提供 Kubernetes 所需功能的第三方项目。Kubernetes 项目作者不对这些项目负责,项目按字母顺序排列。要将项目添加到此列表,请在提交更改之前阅读 内容指南

指标工具

  • Cortex 提供水平可扩展、长期保存的 Prometheus 存储。
  • Grafana Mimir 是一个 Grafana Labs 项目,提供多租户、水平可扩展且与 Prometheus 兼容的存储。
  • Prometheus 是一款监控系统,用于从 Kubernetes 组件抓取并存储指标。
  • Thanos 通过全局查询、降采样和对象存储支持扩展了 Prometheus。

日志工具

  • Elasticsearch 提供分布式日志索引和搜索功能。
  • Fluent Bit 占用资源少,用于收集和转发容器及节点日志。
  • Fluentd 将日志路由并转换到多个目的地。
  • Grafana Loki 以受 Prometheus 启发、基于标签的格式存储日志。
  • OpenSearch 提供与 Elasticsearch API 兼容的开源日志索引和搜索功能。

追踪工具

  • Grafana Tempo 提供可扩展、低成本的分布式追踪存储。
  • Jaeger 用于捕获和可视化微服务的分布式追踪。
  • OpenTelemetry Collector 接收、处理并导出包括追踪数据在内的遥测数据。
  • Zipkin 提供分布式追踪的收集和可视化功能。