且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.3 Controller-runtime 模块分析(三)

更新时间:2022-01-31 08:17:47

1. 流程

 

Controller-runtime 流程如图 3-3 所示。


带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.3 Controller-runtime 模块分析(三)

 

 

图 3—3Controiier—runtme流程

以使用 Controller-runtime开发的 PodController为例,Controller的整体流程如下。

(1)   Source通过 KubernetesAPIServer监听 Pod对象,提供 Pod的事件(见代码清单3-23)。

&source.KindSource{&v1.Pod{}}->(Podfoo/barCreateEvent)

 

(2)    EventHandler根据Pod事件,将reconcile.Request加入队列(见代码清单3-24

&handler.EnqueueRequestForObject{}->(reconcile.Request{types.NamespaceName{Name:

"foo",Namespace:"bar"}})

 

(3)     从队列中获取reconcile.Request,并调用Reconciler进行同步(见代码清单3-25

Reconciler(reconcile.Request{types.NamespaceName{Name:"foo",Namespace:"bar"}})

 

其中,Controller的启动由 Manager控制。