# 创建高可用 etcd 集群 kuberntes 系统使用 etcd 存储所有数据,本文档介绍部署一个三节点高可用 etcd 集群的步骤,这三个节点复用 kubernetes master 机器,分别命名为`sz-pg-oam-docker-test-001.tendcloud.com`、`sz-pg-oam-docker-test-002.tendcloud.com`、`sz-pg-oam-docker-test-003.tendcloud.com`: + sz-pg-oam-docker-test-001.tendcloud.com:172.20.0.113 + sz-pg-oam-docker-test-002.tendcloud.com:172.20.0.114 + sz-pg-oam-docker-test-003.tendcloud.com:172.20.0.115 ## TLS 认证文件 需要为 etcd 集群创建加密通信的 TLS 证书,这里复用以前创建的 kubernetes 证书 ``` bash $ cp ca.pem kubernetes-key.pem kubernetes.pem /etc/kubernetes/ssl ``` + kubernetes 证书的 `hosts` 字段列表中包含上面三台机器的 IP,否则后续证书校验会失败; ## 下载二进制文件 到 `https://github.com/coreos/etcd/releases` 页面下载最新版本的二进制文件 ``` bash $ https://github.com/coreos/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz $ tar -xvf etcd-v3.1.4-linux-amd64.tar.gz $ sudo mv etcd-v3.1.4-linux-amd64/etcd* /root/local/bin ``` ## 创建 etcd 的 systemd unit 文件 注意替换 `ETCD_NAME` 和 `INTERNAL_IP` 变量的值; ``` bash $ export ETCD_NAME=sz-pg-oam-docker-test-001.tendcloud.com $ export INTERNAL_IP=172.20.0.113 $ sudo mkdir -p /var/lib/etcd /var/lib/etcd $ cat > etcd.service <