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 创建、更新、流量切换过程中四个核心资源的交互关系:

Knative Service 资源关系与生命周期 Service (ksvc) Configuration Route Revision v1 Revision v2 Revision v3 管理 管理 生成 生成 生成 流量路由 生命周期说明: 1. 用户创建/更新 Service → 自动更新 Configuration 生成新 Revision 2. Route 默认将 100% 流量指向最新 Revision(latest ready revision) 3. 手动调整 Route 流量比例 → 实现灰度发布、蓝绿部署、A/B 测试 4. 旧 Revision 保留但可缩容至零,不占用资源,仅保留历史快照

2.3 典型生命周期场景

场景一:首次部署

  1. 用户创建 Service 对象(YAML 中包含镜像、端口、资源限制等)。
  2. Knative 自动创建 Configuration 和 Route。
  3. Configuration 生成第一个 Revision(v1),启动 Pod。
  4. Route 将流量 100% 指向 v1,服务对外可用。

场景二:配置更新(新版本发布)

  1. 修改 Service 的镜像版本或环境变量。
  2. Configuration 检测到变更,生成新的 Revision(v2)。
  3. v2 启动并完成就绪检查;v1 保持运行。
  4. Route 默认将流量全切至 v2;v1 保留但缩容至零(取决于 minScale 配置)。

场景三:流量灰度与回滚

  1. 手动修改 Route 的 traffic 字段,例如 v1 占 90%,v2 占 10%。
  2. 观察 v2 的请求延迟、错误率、资源使用。
  3. 若 v2 异常,将流量 100% 切回 v1;若正常,逐步提升 v2 比例至 100%。
  4. 旧 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 流量比例、灰度策略 路由规则生效延迟、连接迁移