etcd 非云环境中Kubernetes的配置和运行 (非etc通道)

etcd 非云环境中Kubernetes的配置和运行 (非etc通道)

etcd 是一种为集群内各机器提供可靠数据存储的分布式键值存储。etcd 开源提供在 GitHub 上,它很好地解决了网络分区期间领导者的选举问题,可容忍包括领导者节点在内的节点故障。

etcd 以驻留内存进程形式运行在集群中的每台机器上,提供动态配置的记录,支持以简单方式在集群成员间共享多种配置数据。

etcd 以键值方式存储数据,它是分布式的,支持自动复制和领导者自动选举产生。对存储数据的所有更改,会自动反映到整个集群。

etcd 还提供发现服务,支持“已部署的”应用向集群所有成员广播其所提供的服务。

etcd 使用基于 HTTP 的 JSON 方式通过 API 调用实现通信。API 可直接通过 curl 或 wget 等方式使用,也可以通过 etcdctl 间接使用。

容错能力

参考资料:src="https://static001.infoq.cn/resource/image/1a/4d/1a835ec49b837d2ff8b2161747f36d4d.png"/>

复制能力

参考文献:top="1926">活动副本

非活动副本

Raft 共识

参考链接:top="2594">什么是分布式共识算法?

一个用于概念理解的小比喻

上面简单比喻了 Raft 算法将事务提交到日志的做法。所有请求均由领导者(即国王)处理,并且仅在得到多数智者(集群中的其他节点)赞成后才能提交。

这大致说明了 Raft 算法中时如何进行领导者选举的。

这部分故事比喻了发生网络分区的情况。这时集群被拆分,每个新集群都有其自己的领导者和节点。冲突的请求可由各个的集群在不同的时间处理。当集群再次合并时,需要给出解决冲突值的方法。在 Raft 中,引入了 Term 概念解决分区一致性问题。

算法使用场合

etcd 如何适用于 Kubernetes 集群?

etcd 存储 kubernetes 的设置、状态和元数据。考虑到 Kubernetes 是一种分布式系统,使用分布式数据库是非常必要的。正如前文所阐释的,etcd 是一个具有高可用性和可扩展性的分布式数据库。

原文链接:

Kubernetes Journey — Up and running out of the cloud — etcd

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。