k8s學習筆記之etcd叢集部署

NO IMAGE
目錄

 

96 稀飯_ricoder 關注

2017.08.03 11:03* 字數 1432 閱讀 184評論 0喜歡 7

一、先準備三個虛擬機器:
ip:
10.10.102.60
10.10.102.61
10.10.102.62

二、hostname修改:
永久修改hostname,hostname全部修改為ip
編輯hostname內容:#vim /etc/hostname
將內容刪掉,修改為ip
重啟伺服器:#reboot
檢視hostname是否修改:#hostname
三、建立etcd叢集
安裝etcd: #yum install etcd -y

圖片1.png

 

如果出現以下情況:

 

圖片2.png

可以嘗試此處提供的兩種解決方案:
a、先自己點選http://mirrors.cug.edu.cn/…..的那個連結,如果可以我們本地網路可以訪問得到,那麼證明是伺服器的網路問題,可以修改dns,方法如下:

 

  • 命令列輸入 sudo vim /etc/resolv.conf
  • 點選 i 進入編輯模式
  • 修改檔案內容:
    nameserver 202.101.172.46 #修改成你的主DNS,由於本人在杭州,所以這裡用的是杭州電信的dns
    search localhost #你的域名
  • 點選 esc 退出編輯模式
  • 輸入 :wq 後回車鍵退出
    之後執行下:
yum makecache

搞定後重新安裝一遍etcd,如果問題還是沒有解決則嘗試用b方案。

b、由提示的異常可以看出,是找不到etcd-2.3.7-2.el7.x86_64導致的,解決方案如下:
先在網上下載etcd-2.3.7-2.el7.x86_64.rpm

image.png

  • 採用命令:scp /home/rice/桌面/etcd-2.3.7-2.el7.x86_64.rpm [email protected]:/tmp/etcd-2.3.7-2.el7.x86_64.rpm
    (etcd-2.3.7-2.el7.x86_64.rpm的檔案地址根據實際情況修改)將檔案遠端上傳到虛擬機器上
  • 採用命令:rpm -i etcd-2.3.7-2.el7.x86_64.rpm (進行安裝)
  • 安裝後會出現

image.png

不過沒關係,重新安裝一次etcd即可。

安裝成功後配置etcd叢集

修改etcd配置檔案,我這裡的環境是在/etc/etcd/etcd.conf,請根據實際情況修改。

etcd0配置示例:

#[member]
# 節點名稱
ETCD_NAME=etcd0
# # 資料存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd0"
# # 監聽其他 Etcd 例項的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 監聽客戶端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 例項地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.60:2380"
# # 初始化叢集內節點地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化叢集狀態,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化叢集 token 
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客戶端地址 
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.60:2379,http://10.10.102.60:4001"

etcd1配置示例:

#[member]
# 節點名稱
ETCD_NAME=etcd1
# # 資料存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd1"
# # 監聽其他 Etcd 例項的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 監聽客戶端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 例項地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.61:2380"
# # 初始化叢集內節點地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化叢集狀態,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化叢集 token 
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客戶端地址 
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001"

etcd2配置示例:

#[member]
# 節點名稱
ETCD_NAME=etcd2
# # 資料存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd2"
# # 監聽其他 Etcd 例項的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# # 監聽客戶端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
# # 通知其他 Etcd 例項地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.10.102.62:2380"
# # 初始化叢集內節點地址
ETCD_INITIAL_CLUSTER="etcd0=http://10.10.102.60:2380,etcd1=http://10.10.102.61:2380,etcd2=http://10.10.102.62:2380"
# # 初始化叢集狀態,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# # 初始化叢集 token 
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# # 通知 客戶端地址 
ETCD_ADVERTISE_CLIENT_URLS="http://10.10.102.62:2379,http://10.10.102.62:4001"

針對以上配置引數做些解釋:

  • ETCD_NAME :ETCD的節點名,在叢集中應該保持唯一,可以使用 hostname。

  • ETCD_DATA_DIR:ETCD的資料儲存目錄,服務執行資料儲存的路徑,預設為 ${name}.etcd。

  • ETCD_SNAPSHOT_COUNTER:多少次的事務提交將觸發一次快照,指定有多少事務(transaction)被提交時,觸發擷取快照儲存到磁碟。

  • ETCD_HEARTBEAT_INTERVAL:ETCD節點之間心跳傳輸的間隔,單位毫秒,leader 多久傳送一次心跳到 followers。預設值是 100ms。

  • ETCD_ELECTION_TIMEOUT:該節點參與選舉的最大超時時間,單位毫秒,重新投票的超時時間,如果 follow 在該時間間隔沒有收到心跳包,會觸發重新投票,預設為 1000 ms。

  • ETCD_LISTEN_PEER_URLS:該節點與其他節點通訊時所監聽的地址列表,多個地址使用逗號隔開,其格式可以劃分為scheme://IP:PORT,這裡的scheme可以是http、https。和同伴通訊的地址,比如 http://ip:2380 ,如果有多個,使用逗號分隔。需要所有節點都能夠訪問,所以不要使用 localhost。

  • ETCD_LISTEN_CLIENT_URLS:該節點與客戶端通訊時監聽的地址列表,對外提供服務的地址:比如 http://ip:2379 ,http://127.0.0.1:2379 ,客戶端會連線到這裡和 etcd 互動

  • ETCD_INITIAL_ADVERTISE_PEER_URLS:該成員節點在整個叢集中的通訊地址列表,這個地址用來傳輸叢集資料的地址。因此這個地址必須是可以連線叢集中所有的成員的。該節點同伴監聽地址,這個值會告訴叢集中其他節點。

  • ETCD_INITIAL_CLUSTER:配置叢集內部所有成員地址,其格式為:ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS,如果有多個使用逗號隔開,叢集中所有節點的資訊,格式為 node1=http://ip1:2380 ,node2=http://ip2:2380 ,…。注意:這裡的 node1 是節點的 –name 指定的名字;後面的 ip1:2380 是 –initial-advertise-peer-urls 指定的值

  • ETCD_ADVERTISE_CLIENT_URLS:廣播給叢集中其他成員自己的客戶端地址列表

  • ETCD_INITIAL_CLUSTER_STATE:新建叢集的時候,這個值為new;假如已經存在的叢集,這個值為 existing。

  • ETCD_INITIAL_CLUSTER_TOKEN:初始化叢集token,建立叢集的token,這個值每個叢集保持唯一。這樣的話,如果你要重新建立叢集,即使配置和之前一樣,也會再次生成新的叢集和節點 uuid;否則會導致多個叢集之間的衝突,造成未知的錯誤。

注意:所有ETCD_MY_FLAG的配置引數也可以通過命令列引數進行設定,但是命令列指定的引數優先順序更高,同時存在時會覆蓋環境變數對應的值。

測試etcd叢集

按上面配置好各叢集節點後,分別在各節點啟動etcd。

[[email protected] ~]# $ systemctl start etcd

檢視所有叢集節點資訊。

[[email protected] ~]# etcdctl member list
Error:  client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
; error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused
error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
error #1: dial tcp 127.0.0.1:2379: getsockopt: connection refused

如果出現以上錯誤資訊,可以通過該方法解決:
在etcd配置檔案中的ETCD_LISTEN_CLIENT_URLS項,加入http://127.0.0.1:2379 ,http://127.0.0.1:4001 。如:

ETCD_LISTEN_CLIENT_URLS="http://10.10.102.61:2379,http://10.10.102.61:4001,http://127.0.0.1:2379,http://127.0.0.1:4001" 

再次查詢:

[[email protected] ~]# etcdctl member list
ce2a822cea30bfca: name=etcd2 peerURLs=http://localhost:2380,http://localhost:7001 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true

如果查詢出現:

圖片.png

 

由提示可知:是叢集節點的版本太低導致的,
在etcd0上:

[[email protected] ~]# etcd --version
etcd Version: 3.1.9
Git SHA: 0f4a535
Go Version: go1.7.4
Go OS/Arch: linux/amd64

在etcd1和etcd2上:

[[email protected] ~]# etcd --version
etcd Version: 2.3.7
Git SHA: fd17c91
Go Version: go1.6.3
Go OS/Arch: linux/amd64

解決方法是解除安裝了某個叢集節點的etcd,然後安裝同樣版本號的etcd即可,在這裡我將低版本的解除安裝掉,重新安裝高版本的。

解除安裝方法:

[[email protected] ~]# yum remove etcd

重新安裝好後,再重新像上面那樣配置 etcd.conf,後啟動etcd,檢視叢集狀態:

[[email protected] tmp]# etcdctl member list
81816861758ee8a9: name=etcd2 peerURLs=http://10.10.102.62:2380 clientURLs=http://10.10.102.62:2379,http://10.10.102.62:4001 isLeader=false
9551f10c6eb4d835: name=etcd0 peerURLs=http://10.10.102.60:2380 clientURLs=http://10.10.102.60:2379,http://10.10.102.60:4001 isLeader=false
e2f8b90ab44a9152: name=etcd1 peerURLs=http://10.10.102.61:2380 clientURLs=http://10.10.102.61:2379,http://10.10.102.61:4001 isLeader=true

證明叢集部署成功。

喜歡就點贊,支援就打賞