Kubernetes 開發(fā)云控制器管理器

2022-06-08 09:36 更新

開發(fā)云控制器管理器

FEATURE STATE: Kubernetes v1.11 [beta]

?cloud-controller-manager? 是指嵌入特定云的控制邏輯之 控制平面組件。 ?cloud-controller-manager? 允許你將你的集群連接到云提供商的 API 之上, 并將與該云平臺交互的組件同與你的集群交互的組件分離開來。

通過分離 Kubernetes 和底層云基礎(chǔ)設(shè)置之間的互操作性邏輯, ?cloud-controller-manager? 組件使云提供商能夠以不同于 Kubernetes 主項目的 步調(diào)發(fā)布新特征。

背景

由于云驅(qū)動的開發(fā)和發(fā)布與 Kubernetes 項目本身步調(diào)不同,將特定于云環(huán)境的代碼抽象到 ?cloud-controller-manager? 二進(jìn)制組件有助于云廠商獨(dú)立于 Kubernetes 核心代碼推進(jìn)其驅(qū)動開發(fā)。

Kubernetes 項目提供 cloud-controller-manager 的框架代碼,其中包含 Go 語言的接口, 便于你(或者你的云驅(qū)動提供者)接駁你自己的實現(xiàn)。這意味著每個云驅(qū)動可以通過從 Kubernetes 核心代碼導(dǎo)入軟件包來實現(xiàn)一個 cloud-controller-manager; 每個云驅(qū)動會通過調(diào)用 ?cloudprovider.RegisterCloudProvider? 接口來注冊其自身實現(xiàn)代碼, 從而更新一個用來記錄可用云驅(qū)動的全局變量。

開發(fā)

樹外(Out of Tree)

要為你的云環(huán)境構(gòu)建一個樹外(Out-of-Tree)云控制器管理器:

  1. 使用滿足 cloudprovider.Interface 接口的實現(xiàn)來創(chuàng)建一個 Go 語言包。
  2. 使用來自 Kubernetes 核心代碼庫的 cloud-controller-manager 中的 main.go 作為 main.go 的模板。如上所述,唯一的區(qū)別應(yīng)該是將導(dǎo)入的云包不同。
  3. 在 ?main.go? 中導(dǎo)入你的云包,確保你的包有一個 ?init ?塊來運(yùn)行 cloudprovider.RegisterCloudProvider。

很多云驅(qū)動都將其控制器管理器代碼以開源代碼的形式公開。 如果你在開發(fā)一個新的 cloud-controller-manager,你可以選擇某個樹外(Out-of-Tree) 云控制器管理器作為出發(fā)點。

樹內(nèi)(In Tree)

對于樹內(nèi)(In-Tree)驅(qū)動,你可以將樹內(nèi)云控制器管理器作為集群中的 DaemonSet 來運(yùn)行。 


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號