使用開源Breeze工具部署Kubernetes 1.12.1高可用叢集_Kubernetes中文社群
Breeze專案是深圳睿雲智合所開源的Kubernetes圖形化部署工具,大大簡化了Kubernetes部署的步驟,其最大亮點在於支援全離線環境的部署,且不需要翻牆獲取Google的相應資源包,尤其適合某些不便訪問網際網路的伺服器場景。(專案地址 https://github.com/wise2c-devops/breeze )
Breeze開源工具由以下子專案構成:
- playbook(breeze) 該專案由不同的ansible playbook構成,分別是docker、etcd、registry、kubernetes
- yum-repo 該專案用於為安裝過程中提供離線的yum repo源,包含了docker、kubelet、kubectl、kubeadm、kubernetes-cni、docker-compose等rpm包庫,除此之外我們還包括了可能會用到的ceph及nfs相關rpm
- deploy-ui 使用者前端UI,採用vue.js框架實現
- pagoda 實現了對ansible指令碼呼叫的API集
- kubeadm-version 輸出kubernetes元件映象版本資訊
- haproxy 用於安裝負載均衡的映象及啟動指令碼
- keepalived 為負載均衡實現統一入口虛IP的元件映象及啟動指令碼
Breeze軟體架構簡圖:
使用者通過Breeze工具,只需要一臺安裝有Docker及docker-compose命令的伺服器,連線網際網路下載一個對應Kubernetes版本的docker-compose.yaml檔案即可將部署程式執行出來,對部署機而已,只需能有普通訪問網際網路的能力即可,無需翻牆,因為我們已經將所有Kubernetes所需要的docker映象以及rpm包內置於docker image裡了。
如果需要離線安裝,也是極其容易的,只需要將docker-compose.yaml檔案裡涉及的docker映象儲存下來,到了無網環境預先使用docker load命令載入,再執行docker-compose up -d命令即可無網執行部署程式。所有被部署的叢集角色伺服器,完全無需連入網際網路。
該專案開源,使用者可以很方便的fork到自己的git賬號結合travis自動構建出任意Kubernetes版本的安裝工具。
在我們的實驗環境中準備了六臺伺服器,配置與角色如下(如果需要增加Minion/Worker節點請自行準備即可):
主機名 | IP地址 | 角色 | OS | 元件 |
deploy | 192.168.9.10 | Breeze Deploy | CentOS 7.5 x64 | docker / docker-compose / Breeze |
k8s01 | 192.168.9.11 | K8S Master | CentOS 7.5 x64 | K8S Master / etcd / HAProxy / Keepalived |
k8s02 | 192.168.9.12 | K8S Master | CentOS 7.5 x64 | K8S Master / etcd / HAProxy / Keepalived |
k8s03 | 192.168.9.13 | K8S Master | CentOS 7.5 x64 | K8S Master / etcd / HAProxy / Keepalived |
k8s04 | 192.168.9.14 | K8S Minion Node | CentOS 7.5 x64 | K8S Worker |
registry | 192.168.9.20 | Harbor | CentOS 7.5 x64 | Harbor 1.6.0 |
192.168.9.30 | VIP | HA虛IP地址在3臺K8S Master浮動 |
步驟:
一、準備部署主機(deploy / 192.168.9.10)
(1)以標準Minimal方式安裝CentOS 7.5 (1804) x64之後,登入shell環境,執行以下命令開放防火牆:
setenforce 0
sed –follow-symlinks -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config
firewall-cmd –set-default-zone=trusted
firewall-cmd –complete-reload
(2)安裝docker-compose命令
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
(3)安裝docker
yum install docker
(4)建立部署主機到其它所有伺服器的ssh免密登入途徑
- a) 生成祕鑰,執行:
ssh-keygen
- b) 針對目標伺服器做ssh免密登入,依次執行:
ssh-copy-id 192.168.9.11ssh-copy-id 192.168.9.12ssh-copy-id 192.168.9.13ssh-copy-id 192.168.9.14ssh-copy-id 192.168.9.20
二、獲取針對K8S某個具體版本的Breeze資原始檔並啟動部署工具,例如此次實驗針對剛剛釋出的K8S v1.12.1
curl -L https://raw.githubusercontent.com/wise2ck8s/breeze/v1.12.1/docker-compose.yml -o docker-compose.ymldocker-compose up -d
三、訪問部署工具的瀏覽器頁面(部署機IP及埠88),開始部署工作
(1)點選開始按鈕後,點選+圖示開始新增一個叢集:
(2)點選該叢集圖示進入新增主機介面:
點選右上角“新增主機按鈕”:
反覆依次新增完整個叢集的5臺伺服器:
點選下一步進行服務元件定義
(3)點選右上角“新增元件”按鈕新增服務元件,選擇docker,因為所有主機都需要安裝,因此無需選擇伺服器:
再新增映象倉庫元件
備註:registry entry point預設就填寫Harbor伺服器的IP地址,有些環節可能使用域名則填寫域名
繼續新增etcd元件,這裡我們將其合併部署於k8s master節點,也可以挑選單獨的主機進行部署:
最後新增k8s元件,這裡分為master和minion nodes:
備註:這裡kubernetes entry point是為了HA場景,比如此次試驗我們在每一個k8s master節點同時各部署了haproxy和keepalived元件,其產生的虛IP是192.168.9.30,埠是6444,那麼我們在這裡應該填寫為192.168.9.30:6444,如果您只安裝一個master,那麼可以填寫為master的入口,例如192.168.9.11:6443
設定完成的介面如下:
如果要實現高可用HA架構,請提前在部署機準備好以下資源包,詳情請參閱:
(1)haproxy-k8s映象與啟動指令碼
(2)keepalived-k8s映象與啟動指令碼
在部署機上下載兩個映象:
docker pull wise2c/haproxy-k8s
docker pull wise2c/keepalived-k8s
儲存映象包:
docker save wise2c/haproxy-k8s wise2c/keepalived-k8s -o /root/k8s-ha.tar
拷貝映象包至所有master節點:
scp /root/k8s-ha.tar 192.168.9.11:/root/
scp /root/k8s-ha.tar 192.168.9.12:/root/
scp /root/k8s-ha.tar 192.168.9.13:/root/
下載啟動指令碼
注意修改上述指令碼中的IP地址與您實際場景一致:
MasterIP1=192.168.9.11
MasterIP2=192.168.9.12
MasterIP3=192.168.9.13
注意修改上述指令碼中的VIP地址和網絡卡名與您實際場景一致:
VIRTUAL_IP=192.168.9.30
INTERFACE=ens33
拷貝指令碼至所有master節點:
chmod +x /root/start-haproxy.sh /root/start-keepalived.sh
scp –p /root/start-haproxy.sh 192.168.9.11:/root/
scp –p /root/start-haproxy.sh 192.168.9.12:/root/
scp –p /root/start-haproxy.sh 192.168.9.13:/root/
scp –p /root/start-keepalived.sh 192.168.9.11:/root/
scp –p /root/start-keepalived.sh 192.168.9.12:/root/
scp –p /root/start-keepalived.sh 192.168.9.13:/root/
四、點選下一步,執行部署流程:
在接下來的部署過程中,螢幕會有日誌及圖示顏色的動態變化:
當你看見Docker圖示顏色變為綠色的時候,表示所有節點的docker已經能正常執行,此時可以不等後續部署過程結束,立刻去所有k8s master節點進行HA元件的啟用:
docker load -i /root/k8s-ha.tar
/root/start-haproxy.sh
/root/start-keepalived.sh
然後耐心等待最後部署介面所有元件顏色變為綠色即可結束K8S高可用叢集的部署工作。
驗證:
在此感謝為此專案付出辛勤勞動的同事華相、Ann、Alan。我們將持續為此專案做出改進貢獻給社群。