ETCD参数说明: 

● –data-dir 指定节点的数据存储目录,若不指定,则默认是当前目录。这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指 定–wal-dir,还会存储WAL文件 

● –wal-dir 指定节点的was文件存储目录,若指定了该参数,wal文件会和其他数据文件分开存储 

● –name 节点名称 

● –initial-advertise-peer-urls 告知集群其他节点的URL,tcp2380端口用于集群通信 

● –listen-peer-urls 监听URL,用于与其他节点通讯 

● –advertise-client-urls 告知客户端的URL, 也就是服务的URL,tcp2379端口用于监听客户端请求 

● –initial-cluster-token 集群的ID 

● –initial-cluster 集群中所有节点 

● –initial-cluster-state 集群状态,new为新创建集群,existing为已存在的集群


创建etcd高可用集群:

kuberntes 系统使用 etcd 存储所有数据,本文档介绍部署一个三节点高可用 etcd 集群的步骤,这三个节点复用 kubernetes master 机器

搭建etcd集群需要注意的是etcd最少需要三台才能发挥其高可用的功能,因为etcd集群内部使用的是选举制度,通过内部选举一台Leader,而如果当集群内部主机少于三台时,etcdLeader选举功能就出现问题,导致Leader选举失败,从而etcd不能正常与外界通讯

yum -y install etcd

vim /etc/etcd/etcd.conf

#[Member]

ETCD_NAME="etcd1"

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS="http://当前服务器IP:2380"

ETCD_LISTEN_CLIENT_URLS="http://当前服务器IP:2379,http://127.0.0.1:2379"

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://当前服务器IP:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://当前服务器IP:2379"

ETCD_INITIAL_CLUSTER="etcd1=http://192.168.10.9:2380,etcd2=http://192.168.10.10:2380,etcd3=http://192.168.10.11:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

ETCD_INITIAL_CLUSTER_STATE="new"

ETCD TLS 配置的坑Etcd 各个节点间必须保证时钟同步,否则会造成启动失败等错误

 vim /usr/lib/systemd/system/etcd.service                     //修改etcd启动文件

WorkingDirectory=/var/lib/etcd/

EnvironmentFile=-/etc/etcd/etcd.conf

指定 etcd 的工作目录为 /var/lib/etcd,数据目录为 /var/lib/etcd,需在启动服务前创建这两个目录;

注意三台etcd的配置文件中ETCD_NAME的配置,这里三台分别设置的是etcd1etcd2etcd3

启动etcd服务:

待三台etcd都搭建完成之后,可依次启动(在etcd集群中如果只单独启动一台etcd会出现报错)

[root@master01 ~]# systemctl daemon-reload

[root@master01 ~]# systemctl start etcd

[root@master01 ~]# systemctl enable etcd

验证etcd是否正确启动:

[root@test ~]# etcdctl cluster-health

member 8c632555af4d958d is healthy: got healthy result from http://192.168.10.10:2379

member bc34c6bd673bdf9f is healthy: got healthy result from http://192.168.10.11:2379

member ec065b41856af137 is healthy: got healthy result from http://192.168.10.9:2379

cluster is healthy

[root@test ~]#集群启动正常

添加证书后的集群验证

export ETCDCTL_API=3

etcdctl --cacert=/etc/etcd/ssl/etcd-root-ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem --endpoints=https://192.168.10.9:2379,https://192.168.10.10:2379,https://192.168.10.11:2379 cluster-health

特别提醒:使用前,务必设置环境变量 ETCDCTL_API=3

在 /etc/profile 中加入以下内容:

export ETCDCTL_API=3

注意:如果不设置 ETCDCTL_API=3,则默认是的API版本是2: