1. 流程
Controller-runtime 流程如图 3-3 所示。
图 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控制。