Kubernetes 源码剖析与实战
孔令飞
前腾讯云专家工程师
1343 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已更新 28 讲/共 55 讲
Kubernetes 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

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

你好,我是孔令飞。
上一节课,我介绍了 Kubernetes 中 HTTP 处理的核心流程,其中还有很多重要的细节功能需要我们了解。
我们在定义一个资源的存储层代码时,分别创建了以下 3 个核心源码文件(这里以 apps资源组的 Deployment 为例来介绍):
pkg/registry/apps/rest/storage_apps.go:提供了创建 APIGroupInfo 类型实例的方法,APIGroupInfo 类型中的各个字段,用来安装 apps 资源组下所有版本、所有资源的 REST 路由。
pkg/registry/apps/deployment/strategy.go:定义了 deploymentStrategy 结构体,该结构体中的方法,可以在更新资源的时候被调用。也就是说,deploymentStrategy 结构体中的方法,主要负责定义与 Kubernetes 的 Deployment 相关的更新策略。
pkg/registry/apps/deployment/storage/storage.go:该文件主要用于实现与 Deployment 资源相关的存储层的功能。这个文件定义了如何将 Deployment 对象持久化到存储后端(如 etcd)。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

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
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)