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

48|通过API接口的定义流程学习Kubernetes API Server

你好,我是孔令飞。
在 Kubernetes API Server 的设计中,值得我们去了解、学习的功能和设计比较多。为了能够给你清晰地介绍 Kubernetes API Server 中的核心机制,这节课我以 Deployment 资源的添加流程为主线,来给你介绍下定义过程中涉及到的核心 API Server 机制及其实现。

Kubernetes 资源定义流程

Kubernetes 中有很多内置资源,随着版本的迭代有很多新的资源类型被集成到 Kubernetes 源码中。那么如何给 Kubernetes 添加一个新的资源类型?流程和细节又是什么呢?
Kubernetes 新资源添加流程如下:
上述流程介绍了,Kuberentes 添加一个新资源的详细流程。在实际的 Kubernetes 开发中,有些流程可能是不需要的,例如:如果你新添加一个资源,这个资源的创建参数可能不需要设置默认值,或者这个资源现在及未来只有一个版本,不需要进行版本转换。为了能够给你详细介绍添加新资源涉及的 Kubernetes 知识,这里,我会假设每一步都需要,并且会详细介绍每一步。
接下来,我们来看下 Kubernetes 具体是如何添加一个 Deployment 资源的。
提示:Kubernetes 支持自定义资源(CRD),添加一个自定义资源非常简便快捷,但隐藏了很多实现细节,不利于了解 Kubernetes 的实现机制。所以,这里,我介绍 Kubernetes 内置资源的添加流程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Kubernetes 中添加新资源的详细流程,包括确定资源组、资源版本、资源类型的名字,以及版本化 API 定义和内部版本定义的步骤。 2. 定义新的 Kubernetes 资源时,需要遵循 Kubernetes 的规范,包括命名规范和文件路径规范。 3. 在定义资源的 Go 结构体时,需要使用特定的注释标签,如 `// +genclient`、`// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object`,以及 `// +optional` 注释来标识字段的可选性。 4. Kubernetes 的代码生成器会根据注释标签生成对应的代码,如生成 Go SDK、深度拷贝方法以及 API 对象的生命周期状态标记。 5. 设置资源字段的默认值需要在 `defaults.go` 文件中定义,默认值函数的命名格式为 `func SetDefaults_XXX(obj *appsv1beta1.XXX)`,并在对应的测试文件中添加测试用例。 6. Kubernetes 的代码生成器可以作为业务开发的参考,以提高开发效率。 7. 在定义资源类型时,可以根据需要添加需要的 `// +` 标签,来生成不同的代码,通常需要添加 `// +genclient` 和 `// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object` 标签。 8. 内部 API 注册和版本化 API 注册的逻辑相似,但有不同的版本号和结构体类型。 9. 生成代码的最后一步是执行命令来生成各种代码,包括 Go SDK、深度拷贝方法、API对象的生命周期状态标记等。 10. 课程总结了向 Kubernetes 主线代码中新增 Deployment 资源的五大步骤,展示了 Kubernetes 通过代码生成与 Scheme 注册把“声明式 API + 多版本演进”落到工程实现的核心机制。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《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
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)