k8s源碼分析-----EndpointController

來源:互聯網
上載者:User



轉自本人空間 http://user.qzone.qq.com/29185807/blog/1459325937 一、controller manager建立endpointController

代碼在k8s.io\kubernetes\cmd\kube-controller-manager\controller-manager.go main函數路口



代碼k8s.io\kubernetes\cmd\kube-controller-manager\app\controllermanager.go Run函數


構建endpointcontroller

 


二、endpointcontroller初始化 EndpointController結構體

代碼k8s.io\kubernetes\pkg\controller\endpoint\endpoints_controller.go


1、client

       就是kubeClient,與apiserver串連的介面部分。用於service的list和watch的擷取,pod的list和watch的擷取

2、serviceStore與serviceController

       serviceStore,service資訊的儲存

       serviceController,service資訊的生產者

3、podStore與podController

       podStore,pod資訊的儲存

       podController,pod資訊的生產者

4、queue

       處理隊列

  初始化

代碼k8s.io\kubernetes\pkg\controller\endpoint\endpoints_controller.go

 


從上面的代碼可以到,結構體裡的各個成員進行了初始化。


1、client

       就是kubeClient,與apiserver串連的介面部分。用於service的list和watch的擷取,pod的list和watch的擷取

2、serviceStore與serviceController

       初始化為framework.NewInformer

       並將service的list和watch擷取介面傳入

3、podStore與podController

       初始化為framework.NewInformer

       並將pod的list和watch擷取介面傳入

4、queue

       就是一個隊列(簡單,所以不做分析)

 

繼續看Run函數



 

三、serviceControllerpodController工作流程


初始化流程

代碼在k8s.io\kubernetes\pkg\controller\framework\ controller.go



上面的初始化幾個地方比較重要


1、clientState也就是Store(serviceStore,podStore)

       其傳入的keyfunc為代碼在k8s.io\kubernetes\pkg\controller\framework\ controller.go


代碼在k8s.io\kubernetes\pkg\client\cache\delta.go



2、cfg是後續很重要的配置資訊


3、NewDeltaFIFO中傳入的keyfunc

       代碼在k8s.io\kubernetes\pkg\client\cache\store.go


我們回到工作流程中 代碼k8s.io\kubernetes\pkg\controller\framework\ controller.go,


從上面的代碼來看,listerwatcher真正啟動並執行還在下層的reflector

  下層reflector工作流程

代碼在k8s.io\kubernetes\pkg\client\cache\reflector.go






入口ListAndWatch

 

我們看看list返回的是什麼


我們以service的list為例

代碼在k8s.io\kubernetes\pkg\client\unversioned\ services.go


代碼在k8s.io\kubernetes\pkg\api\typess.go


在此處插入一下對於list結果的處理



再插入下fifo的處理

代碼在k8s.io\kubernetes\pkg\client\cache\fifo.go


 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.