1. 程式人生 > >k8s中,通過程式碼生成工具生成的controller中加入控制邏輯

k8s中,通過程式碼生成工具生成的controller中加入控制邏輯

摘自http://www.infoq.com/cn/articles/kubernetes-status-management-and-extension

前文自動生成的程式碼中為Bee生成了預設的BeeController,如圖1.2.2所示。

當監聽到建立或更新Bee狀態的時候,可以通過實現Reconcile中的邏輯來處理對Bee的額外擴充套件,現在來把Controller部署到叢集中去。

將前面寫入的Bee全部刪除後重新寫入,可以看到Controller列印了兩條日誌分別為寫入的Bee.Name,如圖1.2.3所示。

此處提到的Reconcile介面只能響應存在狀態修改的場景,是一種無狀態的擴充套件模式,如果需要響應刪除,可以利用後文介紹的Informer介面來實現,此處不贅述,只給一個簡單例子(如圖1.2.4)。有趣的是,BeeController部署到叢集裡面,沒有進行額外配置就可以連線到對應的APIServer正常運轉了,它是如何自動與前文部署的API Server建立連線呢?這在後文“API聚合層”中會具體介紹,此處亦不贅述。

注意刪除了前面寫入的v1alpha1.Bee和v1alpha2.Bee兩個版本的Bee,但實際上BeeController是利用v1alpha1客戶端監聽Bee的刪除事件,顯然v1alpha1的Informer也可以感知到所有版本Bee的變化,這其實就是相容性設計的美妙之處了,不贅述。