【原创】k8s源码分析----apiserver之APIGroupVersion
2016-03-25 16:20
393 查看
【原创】k8s源码分析----apiserver之APIGroupVersion
本文中转载自本人空间:http://user.qzone.qq.com/29185807/blog/1458892866
前面3篇文章,主要是根据程序处理流程进行跳转分析。经过这些流程的跳转分析,拨开乌云终见日。
我们剥掉那些不重要的部分,直接进入主要框架。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/f41a8dffdd43d644dcea10c739755dde)
生成了一个default的apigroupversion
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/20c576451b710f247000d19eab6ab059)
下面进入到整个框架中最重要的数据结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/97851b4636c0524da69e2c8f86862037)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/f8ab66034aeba6cff21e07f15f2e943f)
2、Codec,主要是一个编码,解码的接口 (在k8s.io\kubernetes\pkg\runtime)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/28132be9304612174395a4da3a3f3bd9)
3、typer (在k8s.io\kubernetes\pkg\runtime)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/edb05b9b8a34d0f6e96b2dc19bf82cc6)
4、Creater (在k8s.io\kubernetes\pkg\runtime)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/ed242316fff4ab44fbbd376bcfa347e8)
5、Convertor,不同版本之间的转换 (在k8s.io\kubernetes\pkg\runtime)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/3225c8fbad3877480e3d4feb4659601c)
6、Linker (在k8s.io\kubernetes\pkg\runtime)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/6a351ff9599561d895abd0569e3fbbcf)
7、剩余的暂时不做分析
主要流程
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/0b6e4af2a6235a21724cd4dce724a657)
下面根据主要流程,分解步骤
1、初始化installer
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/d17dff8168b2bdc05f968cf729502063)
2、new webservice
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/d33ae57d0bfc46bc9130ac150c216298)
3、开始注册
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/1f8110742986c3978672a25fe9dd5a68)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/91a2fab1e40f1dafcbe25fc4be9c9097)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/d766dc7736e911e8dd17a6aeb8d0b6f8)
插一张mapping的结构体
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/12332f108e0a16fef44f6641c0c25a75)
插一张restscope的interface
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/cd145583c8d87c48e69e333ff701ec3f)
我们继续
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/7fc4e6056307426953338dbcb7c58370)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/5d00c22f7b7b8283f956472c7122f2bf)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/ea01d6c1390c4eb6b8a80b62d72576b7)
继续跳过其中一些代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/920309e5957c518e770c5b9b7e2b4732)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/e519b438afb6286a9bb8fe1e122a5414)
到此所有过程。
我们再追踪进去get的处理过程
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/e1b8233bae65daec86537278a25f49ab)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/429d8864e173fa22b0d13fa8189c3c60)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/9eea696ba097f4ad052841a0ecaad148)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/26/3ccc50b2e3a95e027d2f85916619f293)
从这个流程再加上之前的3篇文章,那么主要的处理流程,已经比较清晰了。那么剩下的就是mapper,codec,typer,Creater,convertor,linker等这些接口的实现的分析了。
龚浩华
qq 月牙寂 29185807
2016年3月25日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
本文中转载自本人空间:http://user.qzone.qq.com/29185807/blog/1458892866
前面3篇文章,主要是根据程序处理流程进行跳转分析。经过这些流程的跳转分析,拨开乌云终见日。
我们剥掉那些不重要的部分,直接进入主要框架。
APIGroupVersion
在master中,api v1的初始化生成了一个default的apigroupversion
下面进入到整个框架中最重要的数据结构
一、主要数据结构
1、mapper,其最重要的东西是里面的RESTMapping函数(在k8s.io\kubernetes\pkg\api\meta)2、Codec,主要是一个编码,解码的接口 (在k8s.io\kubernetes\pkg\runtime)
3、typer (在k8s.io\kubernetes\pkg\runtime)
4、Creater (在k8s.io\kubernetes\pkg\runtime)
5、Convertor,不同版本之间的转换 (在k8s.io\kubernetes\pkg\runtime)
6、Linker (在k8s.io\kubernetes\pkg\runtime)
7、剩余的暂时不做分析
二、主要的工作流程
k8s.io\kubernetes\pkg\apiserver\apiserver.go主要流程
下面根据主要流程,分解步骤
1、初始化installer
2、new webservice
3、开始注册
插一张mapping的结构体
插一张restscope的interface
我们继续
继续跳过其中一些代码
到此所有过程。
我们再追踪进去get的处理过程
从这个流程再加上之前的3篇文章,那么主要的处理流程,已经比较清晰了。那么剩下的就是mapper,codec,typer,Creater,convertor,linker等这些接口的实现的分析了。
龚浩华
qq 月牙寂 29185807
2016年3月25日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
相关文章推荐
- 汉字验证码算法
- 下载Android源码
- ACM ProblemB
- iOS 图片模糊处理和自动获取图片尺寸
- 配置HTTPCookie
- iOS知识树,知识点(包括对象、Block、消息转发、GCD、运行时、runloop、动画、Push、KVO、tableview,UIViewController、提交AppStore)
- mybatis mapper association collection
- 流水账记一下这一年多
- ASP.NET使用EF时的seed方法以及初始数据的构造
- Android 特色开发,使用传感器
- DNS解析与域名服务安全防护策略
- 创建你的第一个Cordova App
- UUID
- Windows批处理命令教程
- 联合体union
- 待学习 构建灵活的界面
- 四大组件之BroadcastReceiver
- C#设备处理类操作
- HDU 2845 Beans (DP)
- 土豆美白