1.1 Knative 概述:发展历史、核心组件与典型应用场景

Knative 是 Google 联合 Pivotal、IBM、Red Hat 等公司在 2018 年 7 月开源的基于 Kubernetes 的 Serverless 编排框架。它旨在将 Serverless 工作负载的部署、扩缩容、事件驱动等能力标准化,让开发者无需关心底层基础设施,即可构建可弹性伸缩的云原生应用。

1.1.1 发展历史与演进路线

时间 里程碑 关键变化
2018.07 Knative v0.1 发布 提出 Serving 与 Eventing 两大核心模块,基于 Istio 实现网络与流量管理
2019.11 进入 CNCF Incubating 社区治理成熟,API 版本稳定为 v1,开始支持 Kourier 等轻量级网络层
2021.03 Knative 1.0 正式发布 生产就绪声明,Serving API 达到 v1 稳定,Eventing 进入 v1beta1
2022-至今 CNCF Graduated + 生态扩展 成为 CNCF 毕业项目,支持 Cilium 作为网络层,引入多租户、函数级扩缩容等高级特性
关键认知: Knative 并非一个独立平台,而是构建在 Kubernetes 之上的抽象层。它通过 CRD(Custom Resource Definition)和控制器模式,将 Serverless 能力以声明式 API 的形式暴露给用户。

1.1.2 核心组件:Serving 与 Eventing

Knative 由两个核心子项目组成,分别解决“如何运行无状态服务”和“如何连接事件源与消费者”的问题。

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

  • Service(ksvc): 用户面向的顶层资源,自动管理 Configuration 和 Route 的生命周期。
  • Configuration(config): 维护服务的期望状态(镜像、环境变量、资源限制等),每次更新生成一个新的 Revision。
  • Revision(rev): 服务的不可变快照,包含代码和配置的特定版本。
  • Route: 流量路由规则,支持按百分比分配流量到不同 Revision,实现灰度发布和回滚。

Eventing:事件驱动架构

  • Broker: 事件网格的中央枢纽,负责接收和转发事件。
  • Trigger: 定义事件过滤规则,将 Broker 中的事件路由到特定的消费者(Sink)。
  • Source: 事件源,如 ApiServerSource、KafkaSource、SinkBinding 等,负责将外部事件引入 Knative 集群。
  • Channel & Subscription: 提供更灵活的事件传递模型,支持点对点、发布/订阅等模式。
Knative Serving 核心资源关系图 Knative Serving 核心资源关系图 用户 / kubectl apply Service (ksvc) 管理 Configuration + Route Configuration 期望状态(镜像、环境变量) Route 流量分配规则 Revision (rev) 不可变快照(v1, v2, ...) 流量路由示例 rev-v1: 90% | rev-v2: 10% 支持灰度发布与回滚

1.1.3 典型应用场景

场景 描述 Knative 优势
事件驱动数据处理 从 Kafka、CloudEvents 等源接收事件,触发数据处理函数(如日志清洗、图片转码) 自动扩缩容到零,事件驱动无需常驻 Pod,降低资源成本
CI/CD 流水线任务 代码提交后自动触发构建、测试、部署流水线 基于 Eventing 的事件链编排,Serving 提供蓝绿部署和流量切换
微服务 API 网关 将 Knative Service 作为无状态 API 后端,结合自定义域名和 TLS 证书 内置 Revision 管理,支持按请求并发数自动扩缩容,避免资源浪费
AI/ML 推理服务 部署模型推理端点,根据请求量动态调整 GPU/CPU 资源 支持 GPU 资源隔离,冷启动优化(预留 Pod),与 KFServing 集成
Webhook 与回调处理 接收外部系统(GitHub、Stripe)的 Webhook 事件,执行业务逻辑 事件源丰富,Trigger 过滤规则灵活,无需维护常驻服务
Knative Eventing 事件流架构图 Knative Eventing 事件流架构图 事件源 (Source) Kafka / ApiServer / Ping Broker 事件网格枢纽 接收 + 过滤 + 转发 Trigger 过滤规则 type: "order.created" Sink (Knative Service) 事件消费者:处理订单逻辑 事件流示例 1. Kafka 产生 "order.created" 事件 2. Broker 接收,Trigger 匹配过滤 3. 转发到订单处理 Service Channel + Subscription 模式 支持点对点、发布/订阅 可配置多个 Subscriber 实现事件扇出与扇入
课程重点: 在后续章节中,我们将深入探讨 Knative Serving 的容量参数配置(如 concurrency-target、container-concurrency、scale-to-zero 参数)以及 Cilium 作为网络层时可能出现的性能瓶颈诊断方法。理解本节的基础架构是后续调优的前提。