作为k8s最重要的一环,etcd部署问题必须第一优先级解决,部署方案需要满足以下要求:
- 集群独占,etcd集群跟某个具体的k8s集群同生命周期
- 集群规格可定制,包括:实例数、实例规格、PV
- 集群高可用,多实例、备份、恢复等
operator将维护复杂有状态应用的领域知识放到软件中,让运维变得更简单
operator是对kubernetes的一种扩展,通过CRD+自定义Controller方式实现
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,截止目前共有179个,etcd-operator也被搜集在其中,本文讲述部署etcd-operator并创建etcd集群的过程
部署etcd-operator
按照etcd-operator的指导,通过OperatorLifecycleManager来部署etcd-operator,我在k8s 1.20和k8s 1.17两个大版本上尝试多次,出现比较诡异的问题是olm和etcd-operator各组件正常运行,创建EtcdCluster资源,没有任何反应:
- etcd集群的pod等资源未创建
- etcd-operator只有选主的日志,olm组件日志正常
定位无果,尝试helm部署etcd-operator后成功:
创建EtcdCluster
apiVersion: etcd.database.coreos.com/v1beta2 kind: EtcdCluster metadata: name: example spec: size: 3 version: 3.2.13 |