Etcd是一个开源的分布式键值存储,它由CoreOS团队开发,现在由Cloud Native Computing Foundation负责管理。这个词的发音是“et-cee-dee”,表示在多台机器上分发Unix系统的“/etc”目录,其中包含了大量的全局配置文件。它是许多分布式系统的主干,为跨服务器集群存储数据提供可靠的方式。它适用于各种操作系统,包括Linux、BSD和OS X。
Etcd具有下面这些属性:
完全复制:集群中的每个节点都可以使用完整的存档
高可用性:Etcd可用于避免硬件的单点故障或网络问题
一致性:每次读取都会返回跨多主机的最新写入
简单:包括一个定义良好、面向用户的API(gRPC)
安全:实现了带有可选的客户端证书身份验证的自动化TLS
快速:每秒10000次写入的基准速度
可靠:使用Raft算法实现了存储的合理分布
自从2014年成为Kubernetes的一部分以来,Etcd社区呈现指数级的增长。CoreOS、谷歌、Redhat、IBM、思科、华为等等均是Etcd的贡献成员。其中AWS、谷歌云平台和Azure等大型云提供商成功在生产环境中使用了Etcd。
Etcd在Kubernetes中的工作是为分布式系统安全存储关键数据。它最著名的是Kubernetes的主数据存储,用于存储配置数据、状态和元数据。由于Kubernetes通常运行在几台机器的集群上,因此它是一个分布式系统,需要Etcd这样的分布式数据存储。内网部署同一网段情况下访问很方便。
但当集群基于云部署的时候客户端多要跨网络访问集群。今天,我们会专门为大家介绍两个跨网络访问方案:
方案一:每个Etcd节点拥有公网ip,通过指定--advertise-client-urls 参数通过公网IP广播地址
方案二:Etcd节点无公网ip,通过网关及ssh tunnel转发请求
具体实施可参考以