更新时间:2022-01-31 08:17:47
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控制。
带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.2 Kubebuilder 模块分析(一)
带你读《云原生应用开发 Operator原理与实践》第二章 Operator 原理2.3 Kube-APIServer 介绍(三)
带你读《云原生应用开发 Operator原理与实践》第二章 Operator 原理2.3 Kube-APIServer 介绍(三)
带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.3 Controller-runtime 模块分析(六)
带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.3 Controller-runtime 模块分析(四)
带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.2 Kubebuilder 模块分析(四)
带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.2 Kubebuilder 模块分析(三)