官方学习文档: https://coreos.com/operators/etcd/docs/0.9.0/user/client_service.html
部署Etcd Operator
先将代码拉下来
1 | git clone https://github.com/coreos/etcd-operator |
备份数据
1 | example/rbac/create_role.sh |
Install etcd operator
1 | kubectl create -f example/deployment.yaml |
这时它会创建自定义资源 , 我们可以看下这个自定义资源
1 | kubectl get customresourcedefinitions |
使用describe 命令看到它的细节
1 | kubectl describe crd etcdclusters.etcd.database.coreos.com |
在上述步骤做完以后, 相当于我们在kubernetes集群中添加一个EtcdCluster的自定义资源类型 , 而Etcd Operator就是这个自定义资源类型对应的自定义控制器
部署好Etcd Operator之后 , 我们可以启动一个集群了
1 | kubectl create -f example/example-etcd-cluster.yaml |
从集群中访问这个服务:
1 | kubectl run --rm -i --tty fun --image quay.io/coreos/etcd --restart=Never -- /bin/sh |
如果从与etcd群集不同的命名空间访问此服务,请使用完全限定的域名(FQDN)
http://<cluster-name>-client.<cluster-namespace>.svc.cluster.local:2379
.
这个 example-etcd-cluster.yaml 文件里描述的,是一个 3 个节点的 Etcd 集 , 我们查看这个pod的话发现创建的就是3个
集群数据备份
1 | kubectl create -f example/etcd-backup-operator/deployment.yaml |
具体aws的备份看官方文档, 里面列出了很详细的步骤
https://coreos.com/operators/etcd/docs/0.9.0/user/walkthrough/backup-operator.html
总结
启动是3个etcd , 是因为在example-etcd-cluster.yaml中定义了3个
Operator 的工作原理,实际上是利用了 Kubernetes 的自定义 API 资源(CRD),来描述我们
想要部署的“有状态应用”;然后在自定义控制器里,根据自定义 API 对象的变化,来完成具体的部署和运维工作
所以Etcd Operator和之前自己写的自定义控制器没有什么两样