K8S-Demo集群实践04:部署etcd三节点高可用集群
- ETCD 是基于Raft算法的分布式,一致性的KV存储系统,由CoreOS公司发起的一个开源项目,授权协议为Apache。
- 通过前面环境变量你已经知道了集群节点名称和IP
- master1:192.168.66.10
- master2:192.168.66.11
- master3:192.168.66.12
- 如果没有特殊说明,本文档的所有操作均在master1节点上执行
- k8s-demo采用 Etcd v3.4.x版本
- 如果跨主机通讯方案选择flanneld,则需要将Etcd降级到v3.3.x版本
一、下载和分发etcd二进制文件
[root@master1 ~]# cd /opt/install/soft
[root@master1 soft]# wget https://github.com/coreos/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz
[root@master1 soft]# tar -xvf etcd-v3.4.3-linux-amd64.tar.gz
[root@master1 soft]# for node_ip in ${MASTER_IPS[@]}
do
echo ">>> ${node_ip}"
scp /opt/install/soft/etcd-v3.4.3-linux-amd64/etcd* root@${node_ip}:/opt/k8s/bin
ssh root@${node_ip} "chmod +x /opt/k8s/bin/*"
done
二、配置etcd服务
1、准备服务模板
[root@master1 ~]# cd /opt/install/service
[root@master1 service]# cat > etcd.service.template <<EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos
[Service]
Type=notify
WorkingDirectory=${ETCD_DATA_DIR}
ExecStart=/opt/k8s/bin/etcd \\
--data-dir=${ETCD_DATA_DIR} \\
--wal-dir=${ETCD_WAL_DIR} \\
--name=##NODE_NAME## \\
--cert-file=/opt/k8s/etc/etcd/cert/etcd.pem \\
--key-file=/opt/k8s/etc/etcd/cert/etcd-key.pem \\
--trusted-ca-file=/opt/k8s/etc/cert/ca.pem \\
--peer-cert-file=/opt/k8s/etc/etcd/cert/etcd.pem \\
--peer-key-file=/opt/k8s/etc/etcd/cert/etcd-key.pem \\
--peer-trusted-ca-file=/opt/k8s/etc/cert/ca.pem \\
--peer-client-cert-auth \\
--client-cert-auth \\
--listen-peer-urls=https://##NODE_IP##:2380 \\
--initial-advertise-peer-urls=https://##NODE_IP##:2380 \\
--listen-client-urls=https://##NODE_IP##:2379,http://127.0.0.1:2379 \\
--advertise-client-urls=https://##NODE_IP##:2379 \\
--initial-cluster-token=etcd-cluster-0 \\
--initial-cluster=${ETCD_NODES} \\
--initial-cluster-state=new \\
--auto-compaction-mode=periodic \\
--auto-compaction-retention=1 \\
--max-re