

Kubernetes APIServer CRD 架构设计源码阅读 | 云原生社区
source link: https://cloudnative.to/blog/kubernetes-apiserver-crd/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。
本文研究了 CRD 部分的源码,配备源码进行进一步理解,可以加深理解,增强相关设计能力。
ResourceConfig
Default Configuration
开启的资源配置及禁用的版本
Extend
开启选型如下
Runtime Support
三者如下图所示
Storage
Custom Resource Definitions
Store 展开后如下图所示
State Transition
Landscape
SharedInformerFactory 用于创建 SharedIndexInformer,后者会周期性的使用 Clientset 连接版本为 v1beta1 或 v1 的 API Extension Services,获取到状态变更后,通知各自的 ResourceEventHandler。在此,还有一些问题需要深入挖掘:
- SharedInformerFactory 如何区分不同类型的资源状态变更
- ResourceEventHandler 是否能同时关注不同类型资源状态的变更
- 资源状态变更是如何获取到的
Clientset
Clientset 功能相对简单,将可用的 API Extension Services 进行封装,每个 RESTClient 都连接在 “Loopback” 地址上,并向不同的服务发送请求。
SharedInformerFactory
Relationship
Add Informers
Management
EstablishingController
EstablishingController 启动后,会启动一个定时执行任务,这个任务每秒检查队列里是否有新的 Key 值,如果有,则更新 Server 端对应资源状态为 Established。
sync 代码如下
CRD Handler
CRD Handler 向 SharedIndexInformer 注册事件处理,Watch 的对象类型 Update 时,则有可能是状态变为 Established 状态,需要向 EstablingController 发送。
CRD Handler 处理请求时,首先检查缓存是否包含请求对象,如果有,返回缓存对象;如果没有,则向 Server 请求,并更改缓存状态。
CRD Controller
[3] API Server
Recommend
-
10
本文研究了 Kubernetes 中 Scheduler Cache 部分的源码,通过画图表现其设计思想,希望读者能自行配备源码进行进一步理解,学会自己进行相关设计。 Nodes
-
11
大家好,我是杨鼎睿,这一次给大家带来的是 ETCD 的源码阅读。本文写就时是三部分,方便大家阅读,合成一篇,分别是 Server 篇, Storage 篇和 Utility 篇。 本文研究了 ETCD 部分的源码,配备源码进行进一步理解,可以加深理解,增强相关设计能力。...
-
10
大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。 本文研究了 API Group 部分的源码,配备源码进行进一步理解,...
-
23
大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。 本文研究了 Cacher 部分的源码,配备源码进行进一步理解,可...
-
9
大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。 本文研究了 Generic API Server 部分的源码,配备源码进行进...
-
13
大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。 本文研究了 Aggregator Server 部分的源码,配备源码进行进一...
-
3
大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。 本文研究了 Master Server 部分的源码,配备源码进行进一步理...
-
10
大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。 本文研究了 Route 部分的源码,配备源码进行进一步理解,可以...
-
6
大家好,我是杨鼎睿,这一次给大家带来的是 API Server 的源码阅读。包括之前的 etcd 源码阅读,整个 API Server 共 109 张源码及源码图,文章最后有 API Server 系列目录。欢迎大家的阅读。 本文研究了 Storage 部分的源码,配备源码进行进一步理解,可...
-
5
apiserver 核心职责 提供Kubernetes API 代理集群组件,比如Kubernetes dashboard、流式日志、kubectl exec 会话 声明式API 命令式命令行操作,比如直接 kubectl run
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK