新聞中心
Operator 模式
Operator 是 Kubernetes 的擴展軟件,它利用 定制資源 管理應用及其組件。 Operator 遵循 Kubernetes 的理念,特別是在控制器 方面。

公司主營業(yè)務:網(wǎng)站設計、成都網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出嘉善免費做網(wǎng)站回饋大家。
初衷
Operator 模式旨在捕獲(正在管理一個或一組服務的)運維人員的關鍵目標。 負責特定應用和 service 的運維人員,在系統(tǒng)應該如何運行、如何部署以及出現(xiàn)問題時如何處理等方面有深入的了解。
在 Kubernetes 上運行工作負載的人們都喜歡通過自動化來處理重復的任務。 Operator 模式會封裝你編寫的(Kubernetes 本身提供功能以外的)任務自動化代碼。
Kubernetes 上的 Operator
Kubernetes 為自動化而生。無需任何修改,你即可以從 Kubernetes 核心中獲得許多內置的自動化功能。 你可以使用 Kubernetes 自動化部署和運行工作負載, 甚至 可以自動化 Kubernetes 自身。
Kubernetes 的 Operator 模式概念允許你在不修改 Kubernetes 自身代碼的情況下,通過為一個或多個自定義資源關聯(lián)控制器 來擴展集群的能力。 Operator 是 Kubernetes API 的客戶端,充當 自定義資源 的控制器。
Operator 示例
使用 Operator 可以自動化的事情包括:
- 按需部署應用
- 獲取/還原應用狀態(tài)的備份
- 處理應用代碼的升級以及相關改動。例如,數(shù)據(jù)庫 schema 或額外的配置設置
- 發(fā)布一個 service,要求不支持 Kubernetes API 的應用也能發(fā)現(xiàn)它
- 模擬整個或部分集群中的故障以測試其穩(wěn)定性
- 在沒有內部成員選舉程序的情況下,為分布式應用選擇首領角色
想要更詳細的了解 Operator?下面是一個示例:
- 有一個名為 SampleDB 的自定義資源,你可以將其配置到集群中。
- 一個包含 Operator 控制器部分的 Deployment,用來確保 Pod 處于運行狀態(tài)。
- Operator 代碼的容器鏡像。
- 控制器代碼,負責查詢控制平面以找出已配置的 SampleDB 資源。
- Operator 的核心是告訴 API 服務器,如何使現(xiàn)實與代碼里配置的資源匹配。
- 如果添加新的 SampleDB,Operator 將設置 PersistentVolumeClaims 以提供 持久化的數(shù)據(jù)庫存儲,設置 StatefulSet 以運行 SampleDB,并設置 Job 來處理初始配置。
- 如果你刪除它,Operator 將建立快照,然后確保 StatefulSet 和 Volume 已被刪除。
- Operator 也可以管理常規(guī)數(shù)據(jù)庫的備份。對于每個 SampleDB 資源,Operator 會確定何時創(chuàng)建(可以連接到數(shù)據(jù)庫并進行備份的)Pod。這些 Pod 將依賴于 ConfigMap 和/或具有數(shù)據(jù)庫連接詳細信息和憑據(jù)的 Secret。
- 由于 Operator 旨在為其管理的資源提供強大的自動化功能,因此它還需要一些 額外的支持性代碼。在這個示例中,代碼將檢查數(shù)據(jù)庫是否正運行在舊版本上, 如果是,則創(chuàng)建 Job 對象為你升級數(shù)據(jù)庫。
部署 Operator
部署 Operator 最常見的方法是將自定義資源及其關聯(lián)的控制器添加到你的集群中。 跟運行容器化應用一樣,控制器通常會運行在 控制平面 之外。 例如,你可以在集群中將控制器作為 Deployment 運行。
使用 Operator
部署 Operator 后,你可以對 Operator 所使用的資源執(zhí)行添加、修改或刪除操作。 按照上面的示例,你將為 Operator 本身建立一個 Deployment,然后:
kubectl get SampleDB # 查找所配置的數(shù)據(jù)庫
kubectl edit SampleDB/example-database # 手動修改某些配置可以了!Operator 會負責應用所作的更改并保持現(xiàn)有服務處于良好的狀態(tài)。
編寫你自己的 Operator
如果生態(tài)系統(tǒng)中沒可以實現(xiàn)你目標的 Operator,你可以自己編寫代碼。
你還可以使用任何支持 Kubernetes API 客戶端 的語言或運行時來實現(xiàn) Operator(即控制器)。
以下是一些庫和工具,你可用于編寫自己的云原生 Operator。
- Charmed Operator Framework
- Kopf (Kubernetes Operator Pythonic Framework)
- kubebuilder
- KubeOps (dotnet operator SDK)
- KUDO (Kubernetes 通用聲明式 Operator)
- Metacontroller,可與 Webhooks 結合使用,以實現(xiàn)自己的功能。
- Operator Framework
- shell-operator
當前文章:創(chuàng)新互聯(lián)kubernetes教程:KubernetesOperator模式
轉載注明:http://www.dlmjj.cn/article/dpdeodi.html


咨詢
建站咨詢
