1 Operator 深入实践
在本节中,我们将重点关注 etcd-cluster-operator,用于管理 Kubernetes 内部的 etcd。简单地说,etcd 是一个分布式键值数据存储系统,它有能力管理自己的稳定性,只要:
- 每个 etcd 实例都有一个用于计算、网络和存储的独立故障域。
- 每个 etcd 实例都有一个唯一的网络名称。
- 每个 etcd 实例都可以连接到其他实例。
- 每个 etcd 实例都知道其他实例的存在。
此外:
- etcd 集群的增长或缩小需要使用 etcd 管理 API 进行特定的操作,在添加或删除实例之前声明集群要发生的变化。
- 可以使用 etcd 管理 API 上的“快照”端点进行备份。通过 gRPC 调用它,你将得到一个备份文件。
- 使用 etcdctl 工具操作备份文件和 etcd 主机上的数据目录来实现恢复。这在真实的机器上很容易,但在 Kubernetes 上需要做一些协调。
正如你所看到的,这比 Kubernetes StatefulSet 能做更多的事情,所以我们使用 Operator。我们不会深入讨论 etcd-cluster-operator 的机制,但在本文的其余部分,我们都将引用这个 Operator 示例。