4. Kubernetes 观测基础:Metrics、Logs、Traces 三大支柱,以及它们在供应链场景中的角色

在深入镜像供应链信任边界之前,必须建立统一的观测语言。Kubernetes 社区公认的“三大支柱”——Metrics(指标)、Logs(日志)、Traces(链路)——构成了可观测性的技术底座。在供应链场景中,这三者并非孤立存在,而是分别对应“是否异常”、“发生了什么”、“哪里出了问题”三个核心追问。

4.1 三大支柱的定义与数据特征

支柱 数据类型 典型采集方式 存储特征 供应链场景核心价值
Metrics 数值型时间序列 Prometheus / kube-state-metrics 高压缩、可聚合、低精度 发现镜像拉取失败率突增、准入拒绝率变化
Logs 非结构化/半结构化文本 Fluentd / Vector / containerd 日志 高容量、全文检索、上下文丰富 追溯签名验证失败原因、镜像层校验错误详情
Traces 分布式事件链路 OpenTelemetry / Jaeger 高维度、有向无环图、采样敏感 定位供应链策略执行链路的瓶颈或阻断点
关键认知:三大支柱在供应链场景中不是“三选一”,而是“三合一”。Metrics 告诉你“准入策略拒绝率从 2% 升到了 15%”,Logs 告诉你“拒绝原因是镜像摘要不匹配”,Traces 告诉你“耗时最长的环节是远程签名验证服务”。

4.2 供应链场景中的 Metrics:信任边界的“仪表盘”

Metrics 是供应链健康度的第一道防线。在 Kubernetes 集群中,与镜像供应链信任相关的指标主要分布在以下层级:

  • kubelet 层:镜像拉取失败次数(按原因标签)、镜像拉取延迟分位数。
  • 准入控制层:策略评估总次数、通过/拒绝/错误计数、策略执行耗时。
  • 签名验证层:签名验证成功/失败次数、证书过期预警、信任锚点变更计数。
  • 镜像仓库层:镜像摘要校验失败率、镜像层完整性检查结果。
供应链信任 Metrics 分层采集架构 镜像仓库层 准入控制层 签名验证层 kubelet 层 镜像摘要校验失败率 策略拒绝率 / 评估耗时 签名验证失败次数 镜像拉取失败率 说明 每一层暴露的指标都应携带供应链标签(镜像摘要、签名者、策略名称),否则无法关联到具体信任边界。

4.3 供应链场景中的 Logs:信任边界的“黑匣子”

当 Metrics 触发告警后,Logs 是深入排查的第一入口。在镜像供应链信任边界中,关键日志事件包括:

  • 镜像拉取事件:containerd 或 CRI-O 记录的镜像层下载日志,包含层 digest、下载来源、TLS 握手状态。
  • 签名验证事件:Cosign / Notation 验证器输出的验证结果日志,包含签名者身份、证书链、验证时间。
  • 准入策略评估事件:Kyverno / OPA Gatekeeper 记录的策略匹配日志,包含触发策略名称、资源对象、决策结果。
  • 审计日志:Kubernetes API Server 的审计日志,记录谁在何时创建了使用特定镜像的 Pod。
日志标签化最佳实践:所有供应链相关日志必须携带以下结构化字段,否则无法在事后审计中重建信任链:
{
  "image_ref": "registry.example.com/app:v1.2.3",
  "image_digest": "sha256:a1b2c3d4...",
  "signature_identity": "dev-team@example.com",
  "policy_name": "require-signature",
  "verification_result": "pass",
  "cluster_node": "node-01"
}

4.4 供应链场景中的 Traces:信任边界的“故障定位仪”

Traces 在供应链场景中是最容易被忽视但价值最高的支柱。一个完整的镜像部署请求,从用户提交 YAML 到 Pod 真正运行,中间经过的信任检查环节可能多达 5-8 个。Traces 能够将每个环节的耗时、状态、错误串联起来。

典型的供应链信任链路包含以下 Span:

  1. API Server 准入 Webhook 调用(客户端 → 准入控制器)
  2. 策略引擎评估(Kyverno / OPA 内部规则匹配)
  3. 远程签名验证服务调用(集群内 → 外部验证端点)
  4. 镜像仓库层校验(kubelet → 镜像仓库,验证层 digest)
  5. kubelet 镜像拉取与解包(本地存储写入)
镜像部署信任链路 Trace 示例 Root Span: 创建 Pod (deploy-app-7d9f8c) 准入 Webhook 调用 (12ms) 策略引擎评估 (45ms) 远程签名验证服务调用 (320ms) ⚠️ 耗时最长 kubelet 镜像拉取与校验 (1800ms) 12ms 45ms 320ms 1800ms
供应链 Trace 的常见陷阱:很多团队只对“用户请求”做 Trace,忽略了 kubelet 到镜像仓库的拉取链路。实际上,镜像层校验失败、签名验证超时等供应链关键故障往往发生在 kubelet 与外部仓库之间。务必使用 OpenTelemetry 的 instrumentation 机制将 containerd 和 CRI-O 的调用也纳入 Trace 上下文。

4.5 三大支柱在供应链信任边界中的协同模型

三大支柱在供应链场景中不是平行关系,而是分层递进的协同模型:

阶段 使用支柱 典型问题 输出动作
告警发现 Metrics 镜像拉取失败率 > 5% 触发告警,通知 SRE
快速定位 Logs 失败原因:签名验证失败,证书已过期 确认故障类型,确定影响范围
根因分析 Traces 验证服务响应慢,TLS 握手阶段耗时 2s 定位到具体服务实例或网络链路
修复验证 Metrics + Logs 修复后失败率回归基线,日志无新错误 确认信任边界恢复
供应链观测标签体系的核心原则:三大支柱必须共享同一套标签命名空间。例如,Metrics 中的 image_digest 标签、Logs 中的 image_digest 字段、Traces 中的 image.digest 属性,必须使用相同的值格式和语义。这是下一章构建“统一观测标签体系”的基础。