https://coreos.com/blog/introducing-operators.html
Site Reliability Engineer(SRE)是通過編寫軟件來運行應用程序的人員。 他們是工程師,開發人員,知道如何專門為特定應用領域開發軟件。 由此產生的軟件具有編程到其中的應用程序的操作領域知識。
我們的團隊一直忙於Kubernetes社區設計和實現這一概念,以便在Kubernetes上可靠地創建,配置和管理復雜的應用程序實例。
我們將這類新的軟件稱為Operators。 Operator是一個特定於應用程序的控制器,它擴展了Kubernetes API,以代表Kubernetes用戶創建,配置和管理復雜有狀態應用程序的實例。 它建立在基本的Kubernetes resource and controller概念的基礎上,但包括域或特定於應用程序的知識,以自動執行常見任務。
Stateless is Easy, Stateful is Hard
使用Kubernetes,開箱即用地管理和擴展Web應用程序,移動后端和API服務相對容易。為什么?由於這些應用程序通常是無狀態的,因此基本的Kubernetes API(如deployments)可以在沒有其他知識的情況下從故障中擴展和恢復。
更大的挑戰是管理有狀態的應用程序,如數據庫,緩存和監控系統。這些系統需要應用領域知識才能正確擴展,升級和重新配置,同時防止數據丟失或不可用。我們希望將這種特定於應用程序的操作知識編碼到軟件中,利用功能強大的Kubernetes抽象來正確運行和管理應用程序。
一個operator是對該領域知識進行編碼並通過第三方資源機制擴展Kubernetes API的軟件,使用戶能夠創建,配置和管理應用程序。與Kubernetes的內置資源一樣,operator不僅管理應用程序的單個實例,而是管理群集中的多個實例。
為了演示運行代碼中的Operator概念,我們今天有兩個具體的例子要宣布為開源項目:
etcd Operator創建,配置和管理etcd集群。 etcd是由CoreOS引入的可靠的分布式鍵值存儲,用於維護分布式系統中最關鍵的數據,是Kubernetes本身的主要配置數據存儲。
https://coreos.com/blog/introducing-the-etcd-operator.html
Prometheus Operator創建,配置和管理Prometheus監控實例。 Prometheus是一個功能強大的監控,指標和警報工具,以及CoreOS團隊支持的Cloud Native Computing Foundation(CNCF)項目。
https://coreos.com/blog/the-prometheus-operator.html
operators基於兩個核心的Kubernetes概念:Resources和Controllers。 例如,內置的ReplicaSet資源允許用戶設置要運行的所需數量的Pod,而Kubernetes中的controllers通過創建或刪除正在運行的Pod來確保ReplicaSet資源中設置的所需狀態保持為真。 Kubernetes中有許多以這種方式工作的基本controllers和resources,包括Service,Deployments和Daemon Sets。
Example 1a: A single pod is running, and the user updates the desired Pod count to 3.
Example 1b: A few moments later and controllers inside of Kubernetes have created new Pods to meet the user's request.
operator基於Kubernetes的基本資源和控制器概念,並添加一組知識或配置,允許操作員執行常見的應用程序任務。 例如,當手動擴展etcd集群時,用戶必須執行許多步驟:為新的etcd成員創建DNS名稱,啟動新的etcd實例,然后使用etcd管理工具(etcdctl成員添加)來告訴 關於這個新成員的現有集群。 而使用etcd operator,用戶可以簡單地將etcd簇大小字段增加1。
Example 2: A backup is triggered by a user with kubectl
operator可能處理的復雜管理任務的其他示例包括應用程序升級的安全協調,備份到異地存儲的配置,通過本機Kubernetes API的服務發現,應用程序TLS證書配置和災難恢復。
