2. Knative 核心概念:Serving 与 Eventing 组件介绍

Knative 在 Kubernetes 之上抽象出两大核心组件:Serving(无服务器工作负载管理)与 Eventing(事件驱动基础设施)。理解这两个组件的资源模型是进行容量规划的前提。

2.1 Knative Serving:自动扩缩容与流量管理

Serving 负责将容器化应用以无服务器方式运行,核心能力包括:

  • 自动扩缩容至零:无请求时 Pod 数降为 0,有请求时快速启动。
  • 流量灰度与版本管理:支持蓝绿部署、金丝雀发布。
  • 内置监控与自动伸缩:基于并发数(Concurrency)或 RPS 自动调整副本数。

2.2 Serving 资源模型:Revision、Configuration、Route、Service

Serving 定义了四个核心 CRD(自定义资源),它们之间存在明确的层级关系:

资源 缩写 职责 关键属性
Revision rev 不可变的快照,记录代码 + 配置的某个版本 容器镜像、环境变量、资源 requests/limits、并发数限制
Configuration config 管理 Revision 的期望状态,每次更新生成新 Revision 最新就绪 Revision 名称、当前 Revision 列表
Route route 流量分发规则,将请求路由到指定 Revision 流量百分比分配、URL 映射、标签选择
Service ksvc 顶层抽象,自动管理 Configuration 和 Route 对外暴露 URL、自动创建 Revision 和流量规则
容量规划要点: Revision 的 containerConcurrency(硬限制)和 requestsPerSecond(软限制)直接影响扩缩容阈值,是规划最小/最大副本数的核心参数。
Knative Serving 资源模型层级关系 Service (ksvc) Configuration Route Revision (最新) Revision (v1, v2, v3...) 说明:Service 同时管理 Configuration 和 Route。 Configuration 每次变更生成新 Revision;Route 将流量按比例分发到不同 Revision。

2.3 Knative Eventing:事件驱动解耦

Eventing 提供事件生产、中转、消费的完整基础设施,核心概念包括:

  • Event Source:事件源,如 Kafka、S3、GitHub Webhook、定时器。
  • Broker:事件代理,负责接收事件并路由到对应的 Trigger。
  • Trigger:事件触发器,定义过滤规则(事件类型、来源)并将事件转发给特定 Service。
  • Channel & Subscription:底层事件通道与订阅机制,支持点对点或发布/订阅模式。
容量规划提示: Eventing 的 Broker 和 Channel 通常需要预留一定的缓冲容量(如 Kafka 分区数、内存队列大小),避免事件积压导致背压(Backpressure)影响 Serving 层扩缩容决策。

2.4 Eventing 典型事件流

一个完整的事件驱动流程如下:

  1. 事件源(如 KafkaSource)从外部系统拉取事件。
  2. 事件被发送到 Broker(默认使用 InMemoryChannel 或 KafkaChannel)。
  3. Trigger 根据事件类型/来源过滤,将匹配的事件转发到对应的 Knative Service。
  4. Knative Service 的 Revision 接收事件并处理,处理过程中可能触发自动扩缩容。
Knative Eventing 事件流架构 Event Source Kafka / S3 / CronJob Broker 事件路由中枢 Trigger Knative Service Revision 处理 事件流:Source → Broker → Trigger → Service Trigger 可基于事件类型(type)和来源(source)做精确过滤,避免无关事件触发扩缩容。

2.5 Serving 与 Eventing 的协同关系

在容量规划实践中,Serving 和 Eventing 并非孤立工作:

  • Eventing 的 事件速率 直接影响 Serving 的扩缩容频率和幅度。
  • Serving 的 冷启动延迟 会影响事件处理的最大吞吐量。
  • Eventing 的 背压机制(如 Kafka 消费者滞后)会反向调节事件注入速率,形成闭环。
常见误区: 只关注 Serving 的扩缩容策略而忽略 Eventing 的事件缓冲能力,可能导致突发流量下事件丢失或 Broker 内存溢出。容量规划必须同时考虑两个组件的资源边界。

2.6 核心资源模型对比总结

维度 Serving Eventing
核心资源 Service, Configuration, Route, Revision Broker, Trigger, Channel, Subscription, Source
扩缩容依据 并发数、RPS、CPU 利用率 事件积压量、消费者滞后
状态管理 无状态为主,Revision 不可变 有状态(Channel 需持久化)
容量规划关注点 最小/最大副本数、并发限制、冷启动资源 缓冲区大小、分区数、事件 TTL