在容器内运行 etcd 集群

下列指南展示如何使用 static bootstrap process 来用 rkt 和 docker 运行 etcd 。

rkt

运行单节点 etcd

下列 rkt 运行命令将在端口 2379 上暴露 etcd 客户端API,而在端口 2380上暴露伙伴API。

当配置 etcd 时使用 host IP地址。

export NODE1=192.168.1.21

信任 CoreOS App Signing Key.

sudo rkt trust --prefix coreos.com/etcd
# gpg key fingerprint is: 18AD 5014 C99E F7E3 BA5F  6CE9 50BD D3E0 FC8A 365E

运行 v3.0.6 版本的 etcd or 或者指定其他发布版本。

sudo rkt run --net=default:IP=${NODE1} coreos.com/etcd:v3.0.6 -- -name=node1 -advertise-client-urls=http://${NODE1}:2379 -initial-advertise-peer-urls=http://${NODE1}:2380 -listen-client-urls=http://0.0.0.0:2379 -listen-peer-urls=http://${NODE1}:2380 -initial-cluster=node1=http://${NODE1}:2380

列出集群成员。

etcdctl --endpoints=http://192.168.1.21:2379 member list

运行3节点集群

使用 rkt 本地搭建 3 节点的集群, 使用-initial-cluster 标记.

export NODE1=172.16.28.21
export NODE2=172.16.28.22
export NODE3=172.16.28.23

检验集群健康并可以到达。

DNS

通过被本地解析器已知的 DNS 名称指向伙伴的产品集群必须挂载 主机的 DNS 配置.

Docker

为了暴露 etcd API 到 docker host 之外的客户端, 使用容器的 host IP 地址。请见docker inspect 来获取关于如何得到IP地址的更多细节. 或者, 为 docker run 命令指定 --net=host 标记来跳过放置容器在分隔的网络栈中。

为了使用 API 版本3 来运行 etcdctl :

裸机

为了在裸机上提供 3 节点 etcd 集群,可以在 baremetal repo 中搜索有用的案例。

Last updated