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

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


咨詢(xún)
建站咨詢(xún)
