国美金融贷款Kube-apiserver源码分析(国美金融贷款)

       国美金融贷款prepared.Run(stopCh)中调用的staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go中的 func (s preparedGenericAPIServer) Run()函数,进而又调用func (s preparedGenericAPIServer) NonBlockingRun()函数。国美金融贷款这个函数里面使用preparedGenericAPIServer.Handler启动了http server。这个Handler实现了http.Handler接口。

        国美金融贷款这个handlerChainBuilder函数实际是下面这个函数DefaultBuildHandlerChain,包含了kube-apiserver所有的handlers。 NewAPIServerHandler会调用handlerChainBuilder 函数,进而调用DefaultBuildHandlerChain构建一个apiServerHandler 赋值给GenericAPIServer的Handler。这个GenericAPIServer.Handler就是kube-apisever启动时使用的handler。
这个handler链每一个handler会在处理完自己的逻辑之后,显示调用上一个handler,大概逻辑如下, handler3 处理完自己的逻辑最后调用handler2,依次类推。国美金融贷款每加入一个handler都必须遵循这样的逻辑显示调用上一个handler,否则这个链就断了。

        国美金融贷款kubeAPIServerConfig.Complete().New()函数如下。国美金融贷款函数中先是调用GenericConfig.New创建一个GenericAPIServer对象,GenericConfig.New代码在前面分析Handler链的第一个代码块,里面初始化了GenericAPIServer.Handler作为kube-apiserver的handler入口。前面也提到 director.ServeHTTP会调用goRestfulContainer注册的WebService进行分发请求,这里的InstallLegacyAPI就是把api/v1里的核心对象(Node、Pod等)的RESTStorage接口封装成WebService注册进来。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章