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