etcd Operator #
$ git clone https://github.com/coreos/etcd-operator
# 因为,Etcd Operator 需要访问 Kubernetes 的 APIServer 来创建对象
# 为 Etcd Operator 创建 RBAC 规则
$ example/rbac/create_role.sh
Etcd Operator 本身,其实就是一个 Deployment
而一旦 Etcd Operator 的 Pod 进入了 Running 状态,你就会发现,有一个 CRD 被自动创建了出来
这个 CRD 名叫 etcdclusters.etcd.database.coreos.com
实际上是在 Kubernetes 里添加了一个名叫 EtcdCluster 的自定义资源类型(CRD)。
而 Etcd Operator 本身,就是这个 CRD 对应的自定义控制器。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: etcd-operator
spec:
replicas: 1
template:
metadata:
labels:
name: etcd-operator
spec:
containers:
- name: etcd-operator
image: quay.io/coreos/etcd-operator:v0.9.2
command:
- etcd-operator
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
当 Etcd Operator 部署好之后,接下来在这个 Kubernetes 里创建一个 Etcd 集群的工作就非常简单了。
你只需要编写一个 EtcdCluster 的 YAML 文件,然后把它提交给 Kubernetes
$ kubectl apply -f example/example-etcd-cluster.yaml
example-etcd-cluster.yaml
定义的是 EtcdCluster 这个 CRD 的一个具体实例,
也就是一个 Custom Resource(CR)
EtcdCluster 的 spec 字段非常简单。其中,size=3 指定了它所描述的 Etcd 集群的节点个数。 而 version=“3.2.13”,则指定了 Etcd 的版本,仅此而已。
而真正把这样一个 Etcd 集群创建出来的逻辑,就是 Etcd Operator 要实现的主要工作
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdCluster"
metadata:
name: "example-etcd-cluster"
spec:
size: 3
version: "3.2.13"
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。