1. Serverless 与 Kubernetes:概念演进与生态全景

本章作为课程的开篇,旨在为学员建立统一的认知基础。我们将从 Serverless 概念的演进脉络出发,剖析 Kubernetes 原生 Serverless 架构的核心设计,并梳理 CNCF Landscape 中与 Serverless 相关的关键项目。理解这些基础概念,是后续深入探讨节点自动扩缩容与成本优化的前提。

1.1 Serverless 概念的演进:从 FaaS 到广义 Serverless

Serverless 并非一个单一的技术,而是一种云原生计算模型。其核心理念是让开发者专注于业务逻辑,而无需关心底层服务器的运维、容量规划和扩缩容。这个概念经历了从狭义到广义的演进。

阶段 核心特征 代表产品/项目 开发者关注点
第一阶段:FaaS 时代 事件驱动、短生命周期、无状态函数 AWS Lambda, Google Cloud Functions 单个函数代码、事件源配置
第二阶段:BaaS 融合 FaaS + 后端服务(数据库、消息队列、存储) AWS Lambda + DynamoDB, Firebase 函数与托管服务的集成
第三阶段:广义 Serverless Serverless 容器、Serverless 工作流、Serverless 数据库 Knative, AWS Fargate, Azure Container Apps 应用架构、成本、运维自动化
课程视角: 本课程聚焦于第三阶段——广义 Serverless,特别是基于 Kubernetes 构建的 Serverless 容器平台。我们关注的是如何通过自动扩缩容实现“按需付费”的成本模型,而非仅仅局限于 FaaS 函数。

1.2 Kubernetes 原生 Serverless 架构

Kubernetes 本身提供了强大的编排能力,但并非原生 Serverless。Kubernetes 原生 Serverless 架构的目标是在 K8s 之上构建一层抽象,使其具备 Serverless 的核心特性:零闲置成本、自动扩缩容到零、按使用量计费。

其核心架构通常包含以下组件:

  • 控制面(Control Plane): 负责接收请求、路由、管理应用版本和流量策略。
  • 数据面(Data Plane): 负责实际运行用户工作负载的 Pod 实例。
  • 自动扩缩容器(Autoscaler): 核心组件,根据并发请求数、CPU/内存指标或自定义指标,动态调整 Pod 副本数,甚至缩容到零。
  • 网络代理(Proxy): 负责流量路由、负载均衡和请求排队。
Kubernetes 原生 Serverless 架构 控制面 (Control Plane) • 请求入口 (Ingress/Gateway) • 路由与版本管理 • 配置与修订管理 • 服务网格集成 自动扩缩容器 • 并发请求数 (RPS) • CPU / 内存指标 • 自定义指标 (KEDA) • 缩容到零策略 数据面 (Data Plane) • 用户 Pod 实例 • 请求代理 (Proxy) • 冷启动优化 • 资源隔离 底层 Kubernetes 集群 • 节点池管理 (Node Auto-scaling) • 集群联邦与多可用区 • 容器运行时 (containerd, CRI-O) • 存储与网络插件 (CSI, CNI)
架构要点: 自动扩缩容器是连接控制面与数据面的核心决策引擎。它根据实时指标驱动数据面 Pod 数量的变化,而底层 K8s 集群则负责提供计算资源。这种分层设计使得 Serverless 能力可以无缝叠加在现有 K8s 基础设施之上。

1.3 CNCF Landscape 中的 Serverless 项目

CNCF(Cloud Native Computing Foundation)的云原生全景图中,Serverless 是一个重要的类别。了解这些项目有助于我们选择合适的技术栈。以下是几个关键项目及其定位:

项目名称 类型 核心能力 成熟度
Knative Kubernetes 原生 Serverless 框架 基于 K8s 的构建、部署、自动扩缩容(包括缩容到零)、流量管理 孵化项目
KEDA 事件驱动自动扩缩容器 基于事件源(Kafka, RabbitMQ, Prometheus 等)驱动 HPA 进行扩缩容 孵化项目
OpenFunction FaaS 平台 支持同步/异步函数、Dapr 集成、事件驱动 沙箱项目
OpenWhisk 分布式 FaaS 平台 多语言支持、动作序列、规则触发 沙箱项目
Dapr 分布式应用运行时 为 Serverless 应用提供状态管理、服务调用、发布订阅等能力 毕业项目
CNCF Landscape 中的 Serverless 项目关系 Knative (Serving + Eventing) Kubernetes 原生 Serverless 核心框架 KEDA 事件驱动自动扩缩容 Dapr 分布式应用运行时 (状态、消息、绑定) OpenFunction FaaS 平台 OpenWhisk 分布式 FaaS 平台 说明:箭头表示“依赖/扩展”关系。Knative 是核心,KEDA 和 Dapr 为其提供扩展能力,OpenFunction 和 OpenWhisk 则构建在更底层之上。
选型提示: 本课程将主要围绕 Knative 和 KEDA 展开。Knative 提供了完整的 Serverless 工作负载管理能力,而 KEDA 则提供了更灵活、事件驱动的自动扩缩容策略。两者结合,是实现精细化成本优化的理想组合。

1.4 本章小结

通过本章的学习,我们明确了以下核心认知:

  • Serverless 已从 FaaS 演进为涵盖容器、工作流和数据库的广义模型。
  • Kubernetes 原生 Serverless 架构通过控制面、自动扩缩容器和数据面的分层设计,实现了零闲置与按需付费。
  • CNCF 生态中的 Knative、KEDA、Dapr 等项目,为构建生产级 Serverless 平台提供了丰富的技术选择。