3

这是来自Kubernetes 文档

一致高度可用的键值存储,用作 Kubernetes 的所有集群数据的后备存储。

Kubernetes 内部是否有单独的机制来提高 ETCD 的可用性?或者说,ETCD 是否使用了允许这种超能力的 Raft 的修改版本?

4

1 回答 1

4

当涉及到 etcd 细节时,最好使用官方的 etcd 文档

etcd是一种高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它在网络分区期间优雅地处理领导者选举,并且可以容忍机器故障,即使在领导者节点中也是如此。

这里没有提到这是高可用性。至于容错,你会在这里找到一个关于这个主题的非常好的段落:

只要可以建立成员仲裁,etcd 集群就会运行。如果由于短暂的网络故障(例如,分区)导致仲裁丢失,一旦网络恢复并恢复仲裁,etcd 会自动安全地恢复;Raft 强制执行集群一致性。对于掉电,etcd 将 Raft 日志持久化到磁盘;etcd 将日志重播到故障点并恢复集群参与。对于永久性硬件故障,可以通过运行时重新配置将节点从集群中移除 。

建议集群中有奇数个成员。奇数大小的集群容忍的故障数量与偶数大小的集群相同,但节点更少。

您还可以找到关于理解 etcd的非常好的文章:

etcd 是一个强一致性系统。它为事务提供了可线性化的读写和可序列化的隔离。更具体地说,就PACELC定理而言,它是 CAP 定理中表达的思想的扩展,它是一个 CP/EC 系统。它针对正常情况下的延迟一致性和分区情况下的可用性一致性进行了优化。

再看这张图:在此处输入图像描述

于 2021-12-15T11:59:08.440 回答