etcd3 docker集群部署

创建一个3个节点的etcd3 集群。
注意:etcd2和etcd3 启动命令是有差别的。
之前我踩了这个坑,耗费了不少时间.

准备3台虚拟机 centos7 1810
etcd1 IP: 10.5.7.61
etcd2 IP: 10.5.7.62
etcd3 IP: 10.5.7.63

在每台虚拟机上安装好docker. 我的虚拟机是从模版创建的,本身自带了docker,所以不用安装.

确保镜像可以下载:
docker pull k8s.gcr.io/etcd:3.3.10
如果下载不了,可以
docker pull ascs/etcd:3.3.10
然后 docker image tag ascs/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10

mkdir -p /var/server/etcd/
保存下面的3个脚本 start-etcd-cluster.sh ,依次拷贝到每个虚拟机里/var/server/etcd 目录
chmod +x start-etcd-cluster.sh
cd /var/server/etcd
start-etcd-cluster.sh

etcd1 节点:
[root@etcd1]# more start-etcd-cluster.sh
#!/bin/bash
firewall-cmd --add-port=2379/tcp --permanent --zone=public
firewall-cmd --add-port=2380/tcp --permanent --zone=public

current_file_path=$(cd "$(dirname "$0")"; pwd)
cd ${current_file_path}

ETCD_INITIAL_CLUSTER="etcd1=http://10.5.7.61:2380,etcd2=http://10.5.7.62:2380,etcd3=http://10.5.7.63:2380"

ETCD_INITIAL_CLUSTER_STATE=new

#export currentHostIp=`ip -4 address show eth0 | grep 'inet' |  grep -v grep | awk '{print $2}' | cut -d '/' -f1`

firewall-cmd --reload
firewall-cmd --list-all

#注意防火墙出现奇怪问题,集群可能还无法访问,只能本机访问,需要重现启动可以解决问题. to do

docker stop etcd1
docker rm   etcd1

docker run \
  --restart=always \
  --hostname=etcd1 \
  -p 2379:2379 \
  -p 2380:2380 \
  -v /etc/localtime:/etc/localtime \
  -v `pwd`/data:/data \
  --name etcd1 \
  k8s.gcr.io/etcd:3.3.10 \
   etcd \
  -name etcd1 \
  --initial-advertise-peer-urls http://10.5.7.61:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://10.5.7.61:2379 \
  --initial-cluster-token etcd-cluster-of-k8s \
  --initial-cluster etcd1=http://10.5.7.61:2380,etcd2=http://10.5.7.62:2380,etcd3=http://10.5.7.63:2380 \
  --initial-cluster-state new \
  --data-dir=/data


在etcd2节点
#!/bin/bash
firewall-cmd --add-port=2379/tcp --permanent --zone=public
firewall-cmd --add-port=2380/tcp --permanent --zone=public

current_file_path=$(cd "$(dirname "$0")"; pwd)
cd ${current_file_path}

ETCD_INITIAL_CLUSTER="etcd1=http://10.5.7.61:2380,etcd2=http://10.5.7.62:2380,etcd3=http://10.5.7.63:2380"

ETCD_INITIAL_CLUSTER_STATE=new

#export currentHostIp=`ip -4 address show eth0 | grep 'inet' |  grep -v grep | awk '{print $2}' | cut -d '/' -f1`

firewall-cmd --reload
firewall-cmd --list-all

#注意防火墙出现奇怪问题,集群可能还无法访问,只能本机访问,需要重现启动可以解决问题. to do

docker stop etcd2
docker rm   etcd2

docker run \
  --restart=always \
  --hostname=etcd2 \
  -p 2379:2379 \
  -p 2380:2380 \
  -v /etc/localtime:/etc/localtime \
  -v `pwd`/data:/data \
  --name etcd2 \
  k8s.gcr.io/etcd:3.3.10 \
   etcd \
  -name etcd2 \
  --initial-advertise-peer-urls http://10.5.7.62:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://10.5.7.62:2379 \
  --initial-cluster-token etcd-cluster-of-k8s \
  --initial-cluster etcd1=http://10.5.7.61:2380,etcd2=http://10.5.7.62:2380,etcd3=http://10.5.7.63:2380 \
  --initial-cluster-state new \
  --data-dir=/data

在etcd3节点
#!/bin/bash
firewall-cmd --add-port=2379/tcp --permanent --zone=public
firewall-cmd --add-port=2380/tcp --permanent --zone=public

current_file_path=$(cd "$(dirname "$0")"; pwd)
cd ${current_file_path}

ETCD_INITIAL_CLUSTER="etcd1=http://10.5.7.61:2380,etcd2=http://10.5.7.62:2380,etcd3=http://10.5.7.63:2380"

ETCD_INITIAL_CLUSTER_STATE=new

#export currentHostIp=`ip -4 address show eth0 | grep 'inet' |  grep -v grep | awk '{print $2}' | cut -d '/' -f1`

firewall-cmd --reload
firewall-cmd --list-all

#注意防火墙出现奇怪问题,集群可能还无法访问,只能本机访问,需要重现启动可以解决问题. to do

docker stop etcd3
docker rm   etcd3

docker run \
  --restart=always \
  --hostname=etcd3 \
  -p 2379:2379 \
  -p 2380:2380 \
  -v /etc/localtime:/etc/localtime \
  -v `pwd`/data:/data \
  --name etcd3 \
  k8s.gcr.io/etcd:3.3.10 \
   etcd \
  -name etcd3 \
  --initial-advertise-peer-urls http://10.5.7.63:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://10.5.7.63:2379 \
  --initial-cluster-token etcd-cluster-of-k8s \
  --initial-cluster etcd1=http://10.5.7.61:2380,etcd2=http://10.5.7.62:2380,etcd3=http://10.5.7.63:2380 \
  --initial-cluster-state new \
  --data-dir=/data

依次启动 etcd1 etcd2 etcd3 里的/var/server/etcd/start-etcd-cluster.sh
然后,打开浏览器测试
测试:

etcd3 docker集群部署_第1张图片
etcd3 docker集群部署_第2张图片

你可能感兴趣的:(docker,kubernetes,k8s,etcd)