【參考】
- Kubernetes Operator simply explained in 10 mins:https://www.youtube.com/watch?v=ha3LjlD6g7g --> 本文主要是對這個視頻的內(nèi)容的總結(jié)與學習
【本文試圖解決以下問題】
- 什么是Kubernetes Operator剔蹋?
- 為什么要使用Kubernetes Operator熟呛?
- 什么時候需要使用Kubernetes Operator?
1. 無狀態(tài)的應(yīng)用 vs 有狀態(tài)應(yīng)用
1.1 Kubernetes上無狀態(tài)的應(yīng)用
首先什么是無狀態(tài)(Stateless)的應(yīng)用?比如普通的前端UI項目或是后臺java項目(自身不存儲數(shù)據(jù))都屬于無狀態(tài)的應(yīng)用妨马。
安裝無狀態(tài)的應(yīng)用安裝通常包含編寫Deployment, ConfigMap, Service等組件的yaml术健,當一個pod宕掉后矫钓,Kubernetes通過Control loop會重新生成pod以保持正確的replica署拟,這里不需要額外的備份,因為我們的應(yīng)用是無狀態(tài)的势似。
針對無狀態(tài)的應(yīng)用拌夏,Kubernetes可以自動化管理應(yīng)用的整個生命周期僧著。
主要依賴于Kubernetes的Control loop
機制,具體可以參考別的文章介紹:https://theithollow.com/2019/09/16/kubernetes-desired-state-and-control-loops/
1.2 Kubernetes上的有狀態(tài)應(yīng)用
什么是有狀態(tài)(Stateful)應(yīng)用?如:MySQL站故,elasticsearch皆怕,mongoDB等∥髀ǎ或者別的需要存儲數(shù)據(jù)的應(yīng)用愈腾,對于有狀態(tài)的應(yīng)用涉及到多個Pod間存在數(shù)據(jù)的同步等復(fù)雜問題。
像MySQL服務(wù)我們可以安裝在Kubernetes集群外以便以傳統(tǒng)的方式進行管理岂津,但有些有狀態(tài)的應(yīng)用需要安裝在集群內(nèi)以便更好的進行監(jiān)控虱黄,如Prometheus或Grafana。
關(guān)于這塊吮成,可以參考我之前的博文《【k8s學習】Kubernetes StatefulSet介紹》:http://www.reibang.com/p/d332d6d078b5
總之橱乱,有狀態(tài)的應(yīng)用,想要實現(xiàn)其布署粱甫、管理泳叠、恢復(fù)的自動化,并不是一件容易的事情茶宵。
2. Kubernetes Operator介紹
Kubernetes Operator主要是為了更好的解決有狀態(tài)的應(yīng)用在Kubernetes中的部署危纫、管理、恢復(fù)节预。如:
- 怎么布署這些有狀態(tài)的應(yīng)用叶摄?
- 如何創(chuàng)建有狀態(tài)應(yīng)用的集群(replica>1)?
- 當應(yīng)用宕掉后如何進行恢復(fù)安拟?
另外使用Kubernetes Operator的好處是一份標準的流程,可以在不同的環(huán)境中進行使用(如dev/prod等)宵喂。
3. 怎么實現(xiàn)對有狀態(tài)的應(yīng)用進行管理的糠赦?
Kubernetes Operator的工作原理:
- 可以把Kubernetes Operator想象成定制化的Kubernetes Control loop
- Kubernetes Operator使用了
CRD
-
CRD
指Custom Resource Definitions
,即定制化的Kubernetes組件(繼承了K8s APIs)锅棕,像Deployment
拙泽,Service
,ConfigMap
都屬于標準的K8s組件裸燎,我們也可以利用CRD創(chuàng)建自己的K8s組件顾瞻。
-
- 加上有狀態(tài)的應(yīng)用專有的一些知識技術(shù)
以上這些,使有狀態(tài)應(yīng)用實現(xiàn)了生命周期的自動化德绿。
4. 誰來創(chuàng)建Kubernetes Operator荷荤?
因為有狀態(tài)的應(yīng)用管理并不是通用的退渗,所以需要各個應(yīng)用自己開發(fā)一套Operator。比如MySQL Operator可能包含只適用于MySQL的流程蕴纳,如:
- 怎么創(chuàng)建mysql集群会油?
- 怎么運行這個集群?
- 怎么同步數(shù)據(jù)古毛?
- 怎么更新等等翻翩。
具體查詢某個Operator,可以訪問官網(wǎng):https://operatorhub.io/
另外如果想要創(chuàng)建自己的Operator稻薇,可以使用OPERATOR SDK進行開發(fā)嫂冻。