Kubernetes Operator

What is Operator?

Kubernetes Operator: 以軟件定義的方式來管理運維操作。

A Site Reliability Engineer (SRE) is a person that operates an application by writing software. They are an engineer, a developer, who knows how to develop software specifically for a particular application domain. The resulting piece of software has an application's operational domain knowledge programmed into it.

Operator是管理特定應(yīng)用程序的控制器,通過擴展kubernetes api以軟件的方式幫助kubernetes用戶創(chuàng)建,配置和管理復(fù)雜有狀態(tài)的應(yīng)用程序?qū)嵗?etcd,redis,mysql,prometheus等等)。它建立在基本的Kubernetes資源和控制器概念的基礎(chǔ)上,它包含管理特定應(yīng)用程序的操作以及實現(xiàn)常見任務(wù)的自動化。

Stateless is Easy, Stateful is Hard

有了kubernetes,管理和擴展web應(yīng)用,移動后端和api服務(wù)就變得相對容易了。
why?因為這些應(yīng)用程序通常是無狀態(tài)的,可以通過基本的Kubernetes APIs就能run起來,例如通過Deployments資源,可以在沒有額外的知識的情況下擴展我們的應(yīng)用程序并可以從故障中恢復(fù)。

一個更大的挑戰(zhàn)是管理有狀態(tài)的應(yīng)用程序,如數(shù)據(jù)庫,緩存和監(jiān)控系統(tǒng)。
這些系統(tǒng)需要學(xué)習(xí)相關(guān)的知識來正確擴展,升級和重新加載配置,同時防止數(shù)據(jù)丟失或不可用。我們希望將這種特定于應(yīng)用程序的操作知識通過編碼解決,利用強大的kubernetes抽象的軟件實現(xiàn),以正確運行和管理應(yīng)用程序。

The Operator Framework

Operator Framework是一個開源項目,提供開發(fā)人員和Kubernetes運行時工具,使我們能夠加速operator的開發(fā)。operator Framework包括:

  • Operator SDK
    使開發(fā)人員能夠基于他們的專業(yè)知識構(gòu)建operator,而無需了解Kubernetes API的復(fù)雜性。
  • Operator lifecycle manager
    監(jiān)督Kubernetes集群中運行的所有operator(及其相關(guān)服務(wù))的安裝,更新和管理整個生命周期。
  • Operator Metering
    Operator Metering(未來幾個月加入):為提供專業(yè)服務(wù)的operator啟用使用情況報告。

Build with the Operator SDK

image

Operator SDK提供了build,test和package操作。最初,SDK有助于將應(yīng)用程序的業(yè)務(wù)邏輯(例如,如何擴展,升級或備份)與Kubernetes API結(jié)合起來執(zhí)行這些操作。隨著時間的推移,SDK可以讓工程師更智能地使應(yīng)用程序具有云服務(wù)的用戶體驗。
SDK中包含操作員共享的主要實踐和代碼模式,以幫助防止重新發(fā)明輪子。更多的想明白Oprator是如何通過編碼實現(xiàn)的,coreos已經(jīng)開源了兩個例子:

  • etcd Operator
    etcd operator 創(chuàng)建,配置和管理etcd集群。etcd是由coreos開源的可靠的分布式鍵值存儲系統(tǒng),用于維護分布式系統(tǒng)中的最關(guān)鍵數(shù)據(jù),是kubernetes的主要配置數(shù)據(jù)存儲。
  • Prometheus Operator
    prometheus operator創(chuàng)建,配置和管理prometheus監(jiān)控實例。prometheus是一個強大的監(jiān)控,指標(biāo)和報警系統(tǒng),也是由coreos團隊支持的云本機計算基礎(chǔ)(cncf)項目。

How is an Operator Built?

Operator構(gòu)建基于兩個重要的kubernetes概念:Resources 和 Controllers。
例如,內(nèi)置的ReplicaSet資源允許用戶設(shè)置所需數(shù)量的Pod來運行,并且Kubernetes內(nèi)的控制器通過創(chuàng)建或刪除正在運行的Pod來確保在ReplicaSet資源中設(shè)置的狀態(tài)保持為true。Kubernetes中有許多以這種方式工作的基礎(chǔ)控制器和資源,包括Services,Deployments
Daemon Sets。
以etcd Operator為例,operator是建立在基本的資源和控制器概念基礎(chǔ)上,增加了一套知識或配置,允許operator執(zhí)行普通的應(yīng)用任務(wù)。例如,在手動擴展一個etcd集群時,用戶必須執(zhí)行多個步驟:為新的etcd成員創(chuàng)建一個DNS名稱,再啟動新的etcd實例,然后使用etcd管理工具(etcdctl member add)告訴現(xiàn)有集群這個新成員加入,集群新增1個etcd實例完成。 而用etcd operator,用戶可以簡單地將etcd cluster大小規(guī)模增加1個實例。

Lifecycle of an Operator

image

構(gòu)建后,需要在Kubernetes集群上部署operator。Operator Lifecycle Manager是便于管理Kubernetes集群上operator的背板。有了它,管理員可以控制operator在哪些命名空間中可用,以及誰可以與正在運行的操作員交互。他們還可以管理運營商及其資源的整個生命周期,例如觸發(fā)對運營商及其資源的更新。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容