kube-apiserver调用流程
2020-09-16 10:51:39 9 举报
k8s kube-apiserver
作者其他创作
大纲/内容
restfulCreateNamedResource
InstallAPIGroup
newETCD3Storage
container.Add(ws)
DefaultAPIResourceConfigSource
OpenAPI/Swagger配置
server.Serve
NewSharedInformerFactory
DefaultBuildHandlerChain
NewDefaultAPIGroupInfo
收到退出信号,完成收尾工作
NewContainer
DecoderToVersion
import api/legacyscheme
NewStorageFactoryConfig
http.Server
restStorageMap := map[string]rest.Storage
创建KubeAPIServer
GoRestfulContainer.Add
创建AggregatorServer
POST对应的操作,将数据写入Etcd
CreateKubeAPIServer
创建后端存储,返回RESTStorage对象
SecureServingInfo.Serve
NewRawStorage
decoder.Decode
保存了path与restStorage的对应关系
Admission准入控制
所有的配置信息都保存都到这
installer.Install()
4. 从Storage到Restful的映射
GenericAPIServer
registerResourceHandlers
NewREST
解码操作
GenericConfig.New
NewLegacyRESTStorage
BuildInsecureHandlerChain
main
BuildAuthorizer
factory.Create
NewStorage
buildGenericConfig
RunPreShutdownHooks
1. 判断实现了哪些Rest接口
createAggregatorConfig
初始化go-restful框架的container
createAggregatorServer
CreateKubeAPIServerConfig
StorageFactoryRestOptionsFactory
各server 的初始化
http.Server
APIAggregator
生成各种资源对应的storage
5. 初始化handler
DefaultOpenAPIConfig
Complete(s)
APIGroupInfo
标准api的注册到container
master.Config
GetRESTOptions
Cobra命令行参数解析
handlers.RequestScope
installAPIResources
路由注册
发送Redy信号
insecureServingInfo.Serve
找到合适的编解码器
InstallLegacyAPIGroup
这个方法太长了:800行
NewWithDelegate
信号量和channel绑定
NewStatusREST
2. 为Resource添加Action
BuildHandlerChainFunc
设置启用、禁用GV
InstallREST
SharedInformerFactory初始化
installAPI
NewAPIServerHandler
实现Storage到Router的转换,将路由注册到webservice
ws.POST(action.Path).To(handler)
NewRESTStorage
admission.NewAttributesRecord
开始
NewDiscoveryController
APIServerHandler{handlerChainBuilder}
storage.(rest.Creater)
创建ApiExtensionsServer
createAPIExtensionsConfig
createHandler
createAPIExtensionsServer
3. 根据Action创建Router
将webservice添加到container
实例化认证器
创建apiserver通用配置
Run()
systemd.SdNotify
SetupSignalHandler
Etcd配置
NonBlockingRun
PrepareRun()
6. Router与Handler进行绑定
服务启动前的初始化工作,包括健康检查存活检查OpenAPI路由注册
<-stoppedCh
completedOptions.Validate()
finishRequest
InstallAPIs
注册所有的api组信息
资源注册表的注册
资源注册
初始化默认参数
NewConfig
RunServer
启动http服务
RunPostStartHooks
preparedGenericAPIServer.Run
prepared.Run(stopCh)
创建Etcd3客户端
CustomResourceDefinitions
routes.Index{}.Install
NewCustomResourceDefinitionHandler
初始化http请求的处理器
构造filter,实现权限相关功能
StorageWithCacher
NegotiateInputSerializer
找到合适的SerializeInfo
app.NewAPIServerCommand()
InstallLegacyAPI
InstallAPIGroups
Master
CreateNamedResource
NewServerRunOptions()
遍历所有的provider,获取api组信息
APIInstaller
newWebService
CreateServerChain()
CreateNodeDialer
7. 添加到路由中
遗留api的注册到container
command.Execute()
CompleteWithOptions
0 条评论
回复 删除
下一页