如何用K8S源码分析GenericAPIServer

本篇文章给大家分享的是有关如何用K8S源码分析GenericAPIServer,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

API Server对外提供的是RESTful接口,GenericAPIServer结构主要解决的就是URI路由的问题,即把URI映射到对应的处理逻辑。可以把GenericAPIServer理解为一个微型的mvc框架,它是整个API Server的骨架。

GenericAPIServer相关的代码在/staging/src/k8s.io/apiserver/pkg下(不是特别明白为啥是在/staging目录,而不是直接在/pkg下)。

核心结构

核心的类关系如下图:

如何用K8S源码分析GenericAPIServer

最关键的三种结构简单解释如下:

Config相关 - 构造配置类。通过Config.Complete(...)方法获得一个CompletedConfig实例,再在后者上调用New()方法就可以获得一个GenericAPIServer的实例指针

GenericAPIServer & Handler - GenericAPIServer本身包括http server相关的所有参数,当中最重要的是Handler field,用于实际处理业务逻辑

Handler是一个指向APIServerHandler的指针,APIServerHandler结构提供了ServeHTTP()方法,能够直接提供给http.Server类生成http service

APIServerHandler中的FullHandlerChain结构是最终装配完成的http.Handler,是所有handle逻辑的入口

所有内部资源(Pods/Deployments)的访问路径都注册到GoRestfulContainer结构中,外部访问方式(如通过API Server的proxy功能访问node)注册到NonGoRestMux中

Director是一个内部的dispatcher,在GoRestfulContainer和NonGoRestfulMux间执行路由

API Group - 类似于spring mvc中的RequestMapping结构,代表一个URI资源路径。每一个内部资源(如Pods/Deployments)只要实现了rest.Storage等系列接口,就可以通过构造APIGroupInfo在GenericAPIServer上暴露出来

综上所述,通过Config结构来创建并初始化GenericAPIServer,并把APIGroupInfo install到GenericAPIServer上就可以实现http接口的暴露。

初始化流程

在APIServerHandler构建过程中会调用DefaultHandlerChain函数来加入认的处理handler。

以上就是如何用K8S源码分析GenericAPIServer,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程之家行业资讯频道。

相关文章

今天小编给大家分享一下excel图案样式如何设置的相关知识点,...
这篇文章主要讲解了“win10设置过的壁纸如何删除”,文中的讲...
这篇“Xmanager怎么显示远程linux程序的图像”文章的知识点大...
今天小编给大家分享一下xmanager怎么连接linux的相关知识点,...
这篇“如何重置Linux云服务器的远程密码”文章的知识点大部分...
本篇内容介绍了“Linux云服务器手动配置DNS的方法是什么”的...