作為k8s最重要的一(yi)環,etcd部(bu)署(shu)問題必須第一(yi)優先級解決,部(bu)署(shu)方(fang)案需要滿足以下要求:
- 集群獨占,etcd集群跟某個具體的k8s集群同生命周期
- 集群規格可定制,包括:實例數、實例規格、PV
- 集群高可用,多實例、備份、恢復等
operator將維護復(fu)雜有狀(zhuang)態(tai)應用的領域知識放到軟件中,讓運維變得(de)更簡(jian)單
operator是對kubernetes的一種擴展,通過CRD+自定義Controller方式實(shi)現(xian)
The etcd operator manages etcd clusters deployed to Kubernetes and automates tasks related to operating an etcd cluster.
-
Create and Destroy
-
Resize
-
Failover
-
Rolling upgrade
-
Backup and Restore
operatorhub.io歸檔了很多開源的operator,截止目前共(gong)有179個,etcd-operator也被搜集(ji)在其中,本文講述部署etcd-operator并創(chuang)建(jian)etcd集(ji)群的過程
部署etcd-operator
按照etcd-operator的(de)指導,通(tong)過(guo)OperatorLifecycleManager來部署etcd-operator,我(wo)在k8s 1.20和k8s 1.17兩(liang)個(ge)大版本上嘗試多次,出現(xian)比較詭異的(de)問題是olm和etcd-operator各組件正常運行(xing),創建EtcdCluster資(zi)源,沒有任何(he)反應(ying):
- etcd集群的pod等資源未創建
- etcd-operator只有選主的日志,olm組件日志正常
定位無果,嘗試(shi)helm部署etcd-operator后成功:

創建EtcdCluster
apiVersion: etcd.database.coreos.com/v1beta2 kind: EtcdCluster metadata: name: example spec: size: 3 version: 3.2.13 |
