您现在的位置是:主页 > 数据库技术 > 数据库技术

kubernetes代码阅读apiserver的示例分析

IDCBT2021-12-24服务器技术人已围观

简介这篇文章主要介绍了kubernetes代码阅读apiserver的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

这篇文章主要介绍了kubernetes代码阅读apiserver的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

apiserver是整个kubernetes的核心模块,做的事情多,代码量也较大。市面上已经有不少apiserver代码解读的文章了,但问题在于,由于k8s的代码变化很快,想写一篇长久能用的未必能做到。所以,我参照了《Kubernetes权威指南》和浙大SEL实验室的一些文章,先把我看到的东西记下来,待后观是否有用。

kubernetes源代码版本1.2.0

代码阅读方法

先简单讲讲整个代码的目录结构

目录说明api输出接口文档用build构建脚本cluster适配不同I层的云,例如亚马逊AWS,微软Azure,谷歌GCE的集群启动脚本cmd所有的二进制可执行文件入口代码,例如apiserver/scheduler/kubeletcontrib项目贡献者docs文档,包括了用户文档、管理员文档、设计、新功能提议example使用案例Godeps项目中依赖使用的Go第三方包,例如docker客户端SDK,rest等hack工具箱,各种编译、构建、测试、校验的脚本都在这里面hooksgit提交前后触发的脚本pkg项目代码主目录,cmd的只是个入口,这里是所有的具体实现plugin插件,k8s认为调度器是插件的一部分,所以调度器的代码在这里release应该是Google发版本用的?test测试相关的工具third_party一些第三方工具,应该不是强依赖的?wwwUI,不过已经被移动到新项目了

可以看到,关键实现代码都放在pkg这个目录下。对于apiserver这种跨度很广的组件而言,唯一有效的阅读方式估计就是

    遍历pkg下所有的目录,概览大概知道这个目录是干啥的

    从cmd这个入口来看apiserver的代码,然后一点点由浅入深,看apiserver的大致实现

    分特性,看具体某个大的特性是怎么实现的,例如安全,例如和etcd存储对接

    在上面这几步的过程中可以看看别人的代码阅读文档,能有效的节省时间

0. apiserver主要实现了什么?

apiserver是k8s系统中所有对象的增删查改盯的http/restful式服务端,其中盯是指watch操作。数据最终存储在分布式一致的etcd存储内,apiserver本身是无状态的,提供了这些数据访问的认证鉴权、缓存、api版本适配转换等一系列的功能。

    restful服务入门

    对于http服务和使用go语言实现方式,可以看go-restful的文档和例子,对这个有基本的了解,这个文档对入门者和一知半解者极为有效!

    1. 对象的数据结构

    古人有言,程序就是算法+数据结构,搞懂了数据结构,整个程序的处理过程就明白了一半。对于apiserver的任何一个api请求来说,上图说明了所有的数据结构关系。

    标签:

    很赞哦! ()

本栏推荐