國美金融貸款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註冊進來。

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