1. 课程导论:CRI 概念、容器运行时治理背景、发布包完整性的重要性
1.1 什么是 CRI?—— 容器运行时接口的核心定位
CRI(Container Runtime Interface,容器运行时接口)是 Kubernetes 在 1.5 版本引入的插件化协议,用于解耦 kubelet 与底层容器运行时。它定义了 gRPC 接口规范,使任意符合 CRI 标准的运行时(如 containerd、CRI-O、Docker Engine 通过 dockershim 桥接)都能无缝接入 Kubernetes 集群。
CRI 的核心价值: 将容器生命周期管理(创建、启动、停止、删除)与镜像管理(拉取、推送、列出)抽象为标准接口,实现运行时无关性。
1.2 容器运行时治理背景:为什么需要治理?
随着 Kubernetes 成为云原生基础设施的事实标准,容器运行时从单一的 Docker 演变为多运行时并存的局面。这种多样性带来了治理挑战:
- 安全漏洞频发: 运行时组件(runc、containerd)曾出现 CVE-2019-5736、CVE-2024-21626 等高危漏洞,直接影响集群安全。
- 版本碎片化: 同一集群内可能混用不同版本的 containerd 或 CRI-O,导致行为不一致、排障困难。
- 配置漂移: 节点级运行时配置(如 seccomp 策略、cgroup 驱动)缺乏统一管控,易出现合规违规。
- 生命周期脱节: 运行时升级、回滚、退役等操作缺少标准化流程,容易引发生产事故。
| 治理维度 | 问题表现 | 影响范围 |
|---|---|---|
| 安全合规 | 运行时漏洞未及时修复、默认配置不安全 | 集群级安全风险 |
| 版本管理 | 节点间运行时版本不一致、API 兼容性断裂 | Pod 调度失败、行为异常 |
| 配置一致性 | cgroup 驱动、日志轮转、镜像加速器配置漂移 | 节点健康检查不一致 |
| 运维流程 | 升级/回滚无标准化、缺少灰度验证 | 变更引发大面积故障 |
治理目标: 通过 CRI 校验机制,对容器运行时的版本、配置、安全策略进行持续验证,确保集群生命周期中运行时状态始终符合预期。
1.3 发布包完整性的重要性:从源头保障可信
容器运行时的发布包(二进制、镜像、配置文件)是集群基础设施的“原材料”。如果发布包在构建、分发、部署过程中被篡改或损坏,后续所有治理措施都将失去根基。
完整性校验的核心场景:
- 供应链安全: 防止恶意注入(如挖矿程序、后门)进入运行时二进制。
- 部署一致性: 确保集群所有节点使用相同哈希值的发布包,消除“幽灵差异”。
- 回滚可信: 回滚操作依赖历史发布包的完整性,避免回滚到被篡改的版本。
- 审计追溯: 完整性校验日志可作为合规审计的证据链。
1.4 三者关系:CRI 校验 × 运行时治理 × 发布包完整性
本课程的核心逻辑是:以 CRI 校验为技术手段,以 容器运行时治理为管理目标,以 发布包完整性为信任基石,构建覆盖集群全生命周期的运维体系。
关键认知: 没有发布包完整性,运行时治理就是“沙上建塔”;没有 CRI 校验,治理就缺乏自动化抓手;没有治理框架,校验和完整性就沦为孤立的工具。