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
然後,打開瀏覽器測試
測試:

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章