26|Kubernetes HTTP请求逻辑核心功能点详解

- 深入了解
- 翻译
- 解释
- 总结

1. Kubernetes 中 HTTP 处理的核心流程包括创建资源组的 REST Storage,通过 `NewRESTStorage` 方法创建 `APIGroupInfo` 对象,保存资源的 Storage,并将其保存在 `APIGroupInfo` 的 `VersionedResourcesStorageMap` 字段中。 2. Kubernetes 包含了请求处理策略,如资源创建请求时会执行 `rest.BeforeCreate` 函数,调用了 `RESTCreateStrategy` 接口中定义的方法,以及自定义的创建逻辑可以通过重写 `Create` 方法来实现。 3. 在实际业务开发中,可以通过重写 `Create` 方法来实现自定义的创建逻辑,例如在 `pkg/registry/apps/deployment/storage/storage.go` 文件中给 `REST`新增一个 `Create`方法来实现自定义的创建逻辑. 4. 本节课通过 Deployment 资源的创建请求为例,拆解了 kube-apiserver 从接收 HTTP 请求到数据最终落盘 etcd 的完整链路。 5. 说明了 `StorageProvider` 如何为 apps 资源组生成 `VersionedResourcesStorageMap`,使不同版本、不同资源均能找到各自的 REST 实现。 6. 聚焦 `RESTCreateStrategy`,剖析 `rest.BeforeCreate` 函数在对象持久化前所做的通用校验与规范化处理。 7. 展示了 `genericregistry.Store` 如何为 Deployment 绑定 `Create`/`Update`/`Delete` 等多种 Strategy,保证各类操作的一致行为。 8. 指出在真实业务场景下可通过嵌入式组合与方法覆写,为特定资源自定义增删改查逻辑。 9. 整体思路:用分层解耦实现策略可插拔、存储可扩展、版本可多态,体现了 Kubernetes API 服务器的高度模块化能力。 10. 课后练习包括代码走读和自定义扩展,以 DaemonSet 为对象,定位并梳理其创建调用栈,并在注释中注明关键函数的作用。自定义扩展要求在创建 Deployment 时自动为所有镜像标签追加后缀 `-verified`,并保证现有校验流程不受影
《Kubernetes 源码剖析与实战》,新⼈⾸单¥68