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): 负责流量路由、负载均衡和请求排队。
架构要点: 自动扩缩容器是连接控制面与数据面的核心决策引擎。它根据实时指标驱动数据面 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 应用提供状态管理、服务调用、发布订阅等能力 | 毕业项目 |
选型提示: 本课程将主要围绕 Knative 和 KEDA 展开。Knative 提供了完整的 Serverless 工作负载管理能力,而 KEDA 则提供了更灵活、事件驱动的自动扩缩容策略。两者结合,是实现精细化成本优化的理想组合。
1.4 本章小结
通过本章的学习,我们明确了以下核心认知:
- Serverless 已从 FaaS 演进为涵盖容器、工作流和数据库的广义模型。
- Kubernetes 原生 Serverless 架构通过控制面、自动扩缩容器和数据面的分层设计,实现了零闲置与按需付费。
- CNCF 生态中的 Knative、KEDA、Dapr 等项目,为构建生产级 Serverless 平台提供了丰富的技术选择。