1. 课程导论:为什么升级前必须做镜像供应链安全与容量水位评估?
1.1 升级失败的隐形杀手:镜像与容量
K8s 集群升级是运维中最常见也最危险的操作之一。多数团队将注意力集中在控制面版本兼容性、kubelet 升级顺序、API 弃用迁移等技术层面,却忽略了两个在升级过程中极易引发大规模故障的“隐形杀手”:镜像供应链安全与节点容量水位。
真实案例警示: 某头部互联网公司在 2023 年 Q2 进行 1.24→1.26 集群升级时,因未提前扫描镜像供应链,导致升级过程中有 37% 的 Workload 拉取了被植入挖矿木马的第三方基础镜像,触发安全策略强制隔离,最终造成核心业务中断 4 小时。事后复盘发现,若在升级前完成镜像签名验证与漏洞扫描,该事故完全可以避免。
镜像供应链安全与容量水位评估,是升级前必须完成的“前置条件检查”,其必要性体现在以下三个维度:
| 维度 | 风险描述 | 升级阶段影响 |
|---|---|---|
| 镜像供应链 | 基础镜像含高危漏洞、被植入后门、签名失效、依赖投毒 | 升级过程中 Pod 重建拉取镜像时触发安全策略阻断,导致 Pod 无法启动 |
| 节点容量 | 节点磁盘/内存/CPU 余量不足,无法承载升级过程中的 Pod 迁移与镜像缓存 | 节点驱逐 Pod 时触发资源争抢,造成级联故障或升级超时回滚 |
| 镜像仓库 | 仓库限流、镜像标签覆盖、镜像层损坏、认证过期 | 升级期间大量并发拉取导致仓库限流,Pod 调度失败 |
1.2 整体评估框架:三阶段五步法
本课程采用经过生产验证的 “三阶段五步法” 评估框架,将升级前的检查工作系统化、可量化、可自动化。整个框架覆盖从镜像构建到节点容量的全链路,确保升级过程不因供应链或容量问题中断。
核心原则: 先评估,后升级;不通过,不升级。评估结果必须形成可审计的检查报告,作为升级审批的准入凭证。
1.3 评估流程概览:从扫描到准入
整个评估流程按照“数据采集 → 风险分析 → 决策输出”的闭环设计,每个阶段都有明确的输入、检查项和输出物。以下为完整的流程步骤清单:
- 镜像供应链安全审计
- 输入:集群当前使用的所有镜像列表(含 Init 容器、Sidecar、Job)
- 检查项:镜像签名(Cosign/Notation)、SBOM 完整性、CVE 漏洞(Critical/High)、基础镜像来源可信度
- 输出:镜像安全评分表、高危镜像清单、修复建议
- 节点容量水位评估
- 输入:节点资源使用数据(Prometheus/Metrics Server)、镜像缓存占用、本地存储余量
- 检查项:节点 CPU/Memory 余量、磁盘 Inode 使用率、镜像层缓存命中率、仓库限流阈值
- 输出:节点容量热力图、升级风险节点清单、缓存清理计划
- 综合报告与准入决策
- 输入:前两个阶段的评估数据
- 检查项:是否满足预设的准入阈值(安全评分 ≥ 85、节点余量 ≥ 20%、仓库可用性 = 100%)
- 输出:升级准入/拒绝决策、风险项跟踪列表、回滚预案
最佳实践: 建议将评估流程集成到 CI/CD 流水线中,在升级前 24 小时自动触发全量扫描。对于评估不通过的项,自动创建 Jira/工单并阻塞升级审批,形成“扫描→评估→修复→复检→准入”的自动化闭环。
1.4 评估工具链与数据来源
为了支撑上述评估框架,需要建立一套轻量但完整的工具链。以下为推荐的工具组合及其在评估中的角色:
| 评估阶段 | 工具/组件 | 数据来源 | 输出格式 |
|---|---|---|---|
| 镜像签名验证 | Cosign / Notation | 镜像仓库(Harbor/ECR/Docker Hub) | JSON 签名验证报告 |
| 漏洞扫描 | Trivy / Grype / Snyk | 镜像层文件系统 | SARIF / CycloneDX SBOM |
| 节点资源监控 | Prometheus + Node Exporter | /metrics 端点 | PromQL 查询结果 |
| 镜像缓存分析 | cAdvisor / kubelet 统计 | 节点本地 /var/lib/containerd | CSV 缓存占用表 |
| 仓库可用性 | 自定义健康检查脚本 | 仓库 API 端点 | HTTP 状态码 + 响应时间 |