简介
ETCD 是一个高可用的分布式键值数据库,可用于服务发现。ETCD 采用 raft 一致性算法,基于 Go 语言实现。
1 | 特点 |
kubernetes 使用 etcd 存储所有运行数据
下载和分发 etcd 二进制文件
1 | cd /opt/k8s/work |
分发二进制文件到集群所有节点:
1 | cd /opt/k8s/work |
创建 etcd 证书和私钥
创建证书签名请求:
1 | cd /opt/k8s/work |
生成证书和私钥:
1 | cd /opt/k8s/work |
分发生成的证书和私钥到各 etcd 节点:
1 | cd /opt/k8s/work |
创建 etcd 的 systemd
1 | cd /opt/k8s/work |
WorkingDirectory
、--data-dir
:指定工作目录和数据目录为${ETCD_DATA_DIR}
,需在启动服务前创建这个目录;--wal-dir
:指定 wal 目录,为了提高性能,一般使用 SSD 或者和--data-dir
不同的磁盘;--name
:指定节点名称,当--initial-cluster-state
值为new
时,--name
的参数值必须位于--initial-cluster
列表中;--cert-file
、--key-file
:etcd server 与 client 通信时使用的证书和私钥;--trusted-ca-file
:签名 client 证书的 CA 证书,用于验证 client 证书;--peer-cert-file
、--peer-key-file
:etcd 与 peer 通信使用的证书和私钥;--peer-trusted-ca-file
:签名 peer 证书的 CA 证书,用于验证 peer 证书;
替换模板文件中的变量,为各节点创建 systemd unit 文件:
1 | cd /opt/k8s/work |
分发生成的 systemd unit 文件:
1 | cd /opt/k8s/work |
启动 etcd 服务
1 | cd /opt/k8s/work |
检查结果
1 | cd /opt/k8s/work |
确保状态为 active (running)
,否则查看日志,确认原因:
1 | journalctl -u etcd |
验证服务状态
1 | cd /opt/k8s/work |
结果显示
1 | [root@node1 ~]# for node_ip in ${NODE_IPS[@]} |
查看当前的 leader
1 | source /opt/k8s/bin/environment.sh |
结果为:
1 | [root@node1 ~]# ETCDCTL_API=3 /opt/k8s/bin/etcdctl \ |
可以看到6.101为leader