2. Knative核心概念:Service、Revision、Configuration、Route的关系与生命周期
Knative Serving 的资源模型围绕四个核心抽象构建:Service、Revision、Configuration 和 Route。理解它们之间的关系与生命周期,是进行容量规划与网络性能测试的前提。
2.1 四类资源的核心职责
| 资源 | 职责 | 关键属性 |
|---|---|---|
| Service | 用户入口,自动管理 Route 与 Configuration 的生命周期 | 自动创建最新 Revision、流量全切、支持手动流量拆分 |
| Configuration | 描述期望的部署配置(镜像、环境变量、资源请求/限制) | 每次变更生成新的 Revision,维护修订历史 |
| Revision | 不可变的快照,代表某一时刻的代码+配置 | 自动扩缩容至零、唯一标识、基于 Configuration 生成 |
| Route | 流量路由规则,将请求映射到一个或多个 Revision | 支持灰度、蓝绿、按标签路由、默认指向 latest Revision |
实践要点:在容量规划中,Revision 是资源消耗的计量单元,Route 是流量分配的控制面。性能测试时需明确当前流量指向哪个 Revision,避免误测已冻结的旧版本。
2.2 资源关系与生命周期流程
下图展示了 Knative Service 创建、更新、流量切换过程中四个核心资源的交互关系:
2.3 典型生命周期场景
场景一:首次部署
- 用户创建
Service对象(YAML 中包含镜像、端口、资源限制等)。 - Knative 自动创建
Configuration和Route。 Configuration生成第一个Revision(v1),启动 Pod。Route将流量 100% 指向 v1,服务对外可用。
场景二:配置更新(新版本发布)
- 修改
Service的镜像版本或环境变量。 Configuration检测到变更,生成新的Revision(v2)。- v2 启动并完成就绪检查;v1 保持运行。
Route默认将流量全切至 v2;v1 保留但缩容至零(取决于minScale配置)。
场景三:流量灰度与回滚
- 手动修改
Route的traffic字段,例如 v1 占 90%,v2 占 10%。 - 观察 v2 的请求延迟、错误率、资源使用。
- 若 v2 异常,将流量 100% 切回 v1;若正常,逐步提升 v2 比例至 100%。
- 旧 Revision 保留在历史中,可通过 Route 随时召回。
容量规划关联:灰度期间 v1 和 v2 同时运行,资源需求为两者之和。测试时需分别测量每个 Revision 的 Pod 启动时间、CPU/内存基线,避免因并发 Revision 导致节点资源超分。
2.4 资源对象关系速查表
| 操作 | Service | Configuration | Revision | Route |
|---|---|---|---|---|
| 创建 Service | 创建 | 自动创建 | 自动生成 v1 | 自动创建 |
| 更新镜像/配置 | 更新 | 更新 | 生成 v2 | 自动切流量 |
| 手动调整流量 | 不变 | 不变 | 不变 | 更新流量比例 |
| 回滚到旧版本 | 更新引用 | 回退配置 | 复用旧 Revision | 切流量至旧 Revision |
| 删除 Service | 删除 | 级联删除 | 级联删除 | 级联删除 |
2.5 生命周期中的关键状态
每个 Revision 在生命周期中经历以下状态,直接影响容量规划与网络测试:
- Building:镜像拉取、容器创建,此时无流量接入。
- Deploying:Pod 启动中,等待就绪探针通过。
- Ready:Revision 可接收流量,自动扩缩容机制生效。
- Active:有流量接入,Pod 保持运行。
- Reserved:无流量但保留 Pod(配置了
minScale > 0)。 - Retired:无流量且缩容至零,仅保留元数据。
测试注意:从 Retired 状态冷启动到 Ready 状态通常需要 5~15 秒(取决于镜像大小与节点资源)。在 Cilium 网络性能测试中,需区分冷启动请求与稳态请求的延迟数据,否则会严重拉高 P99 延迟指标。
2.6 核心概念在容量规划中的映射
将 Knative 抽象概念映射到实际资源维度,便于后续测试指标设计:
| Knative 概念 | 容量规划关注点 | 网络测试关注点 |
|---|---|---|
| Service | 整体 QPS 目标、SLA 定义 | 入口网关吞吐、连接数 |
| Configuration | 资源模板(request/limit) | Pod 启动并发数 |
| Revision | 每个版本的资源需求、副本数 | Pod IP 变化频率、Cilium 策略更新 |
| Route | 流量比例、灰度策略 | 路由规则生效延迟、连接迁移 |