Kubernetes 源码剖析与实战
孔令飞
前腾讯云专家工程师
1173 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已更新 19 讲/共 55 讲
第四章 · Kubernetes API Server 核心设计 (3讲)
Kubernetes 源码剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

17 | Kubernetes如何设计REST资源?

你好,我是孔令飞。
上一节课,我们详细讲了 Kubernetes 的应用构建模型,Kubernetes 中的核心组件基本都是基于它来构建的。这一节课,我们来聊聊 kube-apiserver。
kube-apiserver 是 Kubernetes 最核心、实现最复杂的组件,其他组件也都依赖它运行。接下来,我就结合 RESTful API 服务器的开发流程为你讲解 kube-apiserver 具体是如何设计 REST 资源的,帮你理解 kube-apiserver 的源码及其实现。

RESTful API 服务器开发流程

kube-apiserver 本质上是一个提供了 REST 接口的 Web 服务,在开发 Web 服务时,通常我们会以如下步骤进行开发:
首先,我们会根据项目功能定义 API 接口,将功能抽象成指定的 REST 资源,并给每一个资源指定请求路径和请求参数:
请求路径:请求路径是一个标准的 HTTP 请求路径,如创建 Pod 请求路径为 POST /api/v1/namespaces/{namespace}/pods
请求参数:HTTP 请求方法不同,参数的位置也不同,如:对于 POST、PUT 类请求,请求参数在请求 Body 中指定。GET、DELETE 类请求,请求参数在请求 Query 中指定。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Kubernetes 中的 kube-apiserver 是一个提供了 REST 接口的 Web 服务,它集成了 75 种 REST 资源及操作,而 Kubernetes 会从代码层面来确保开发者的资源定义都是符合规范的,并且请求方法、请求路径等都是基于规范化的资源自动生成,不需要开发者手动指定。 2. Kubernetes 中的 REST 资源操作类型不仅支持常见的 `GET`、`PUT`、`POST`、`DELETE` 四种 HTTP 请求方法,还支持 `DeleteCollection`、`Patch`、`Watch` 等操作类型,这使得 Kubernetes 能够更灵活地处理资源对象的操作。 3. Kubernetes 中的资源组(APIGroup)是对 REST 资源按其功能类别进行的逻辑划分,具有相同功能类别的 Kubernetes REST 资源会被划分到同一个资源组中,这是 Kubernetes 中一个非常重要的概念,承担了更多的功能。 4. Kubernetes 的 kube-apiserver 通过自动化 REST 接口生成机制,确保所有 API 都符合 REST 规范,这种刚性的资源规范设计能够保证 Kubernetes 中所有 API 都符合 REST 规范。 5. Kubernetes 中的 HTTP 请求路径很多时候是由资源组、资源版本、资源类型共同构建的,kube-apiserver 会根据资源组、资源版本、资源类型自动构建出资源的请求路径。 6. Kubernetes 的资源定义是规范化、标准化的,使得 Kubernetes 可以基于这些规范化的定义做很多通用的处理,如根据 `TypeMeta`字段构建出资源的请求路径,对所有资源执行垃圾回收逻辑等。 7. Kubernetes 支持资源版本转换,能够将旧版本的 API 资源数据转换为新版本的 API 资源数据,这种能力为企业应用的功能迭代提供了支持。 8. Kubernetes 中的资源参数默认值设置和参数校验方式都是统一、规范的,这极大地提高了接口的开发效率,降低了接口的维护成本。 9. Kubernetes 大量使用代码生成技术,通过规范化的资源定义和资源处理逻辑,可以一键生成所需的代码,如版本化的 Go SDK、版本转换函数、默认值设置函数等。 10. Kubernetes RESTful 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
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)