1. 程式人生 > >使用開源Breeze工具部署Kubernetes 1.12.1高可用叢集_Kubernetes中文社群

使用開源Breeze工具部署Kubernetes 1.12.1高可用叢集_Kubernetes中文社群

Breeze專案是深圳睿雲智合所開源的Kubernetes圖形化部署工具,大大簡化了Kubernetes部署的步驟,其最大亮點在於支援全離線環境的部署,且不需要翻牆獲取Google的相應資源包,尤其適合某些不便訪問網際網路的伺服器場景。(專案地址 https://github.com/wise2c-devops/breeze

Breeze開源工具由以下子專案構成:

  1. playbook(breeze) 該專案由不同的ansible playbook構成,分別是docker、etcd、registry、kubernetes
  2. yum-repo 該專案用於為安裝過程中提供離線的yum repo源,包含了docker、kubelet、kubectl、kubeadm、kubernetes-cni、docker-compose等rpm包庫,除此之外我們還包括了可能會用到的ceph及nfs相關rpm
  3. deploy-ui 使用者前端UI,採用vue.js框架實現
  4. pagoda 實現了對ansible指令碼呼叫的API集
  5. kubeadm-version 輸出kubernetes元件映象版本資訊
  6. haproxy 用於安裝負載均衡的映象及啟動指令碼
  7. keepalived 為負載均衡實現統一入口虛IP的元件映象及啟動指令碼

Breeze軟體架構簡圖:

Alt

使用者通過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免密登入途徑

  1. a) 生成祕鑰,執行:

                      ssh-keygen

  1. 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),開始部署工作

Alt

(1)點選開始按鈕後,點選+圖示開始新增一個叢集:

Alt

Alt

(2)點選該叢集圖示進入新增主機介面:

點選右上角“新增主機按鈕”:

Alt

反覆依次新增完整個叢集的5臺伺服器:

Alt

Alt

點選下一步進行服務元件定義

Alt

(3)點選右上角“新增元件”按鈕新增服務元件,選擇docker,因為所有主機都需要安裝,因此無需選擇伺服器:

Alt

Alt

再新增映象倉庫元件

Alt

Alt

備註:registry entry point預設就填寫Harbor伺服器的IP地址,有些環節可能使用域名則填寫域名

繼續新增etcd元件,這裡我們將其合併部署於k8s master節點,也可以挑選單獨的主機進行部署:

Alt

Alt

Alt

最後新增k8s元件,這裡分為master和minion nodes:

Alt

備註:這裡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

設定完成的介面如下:

Alt

如果要實現高可用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/

四、點選下一步,執行部署流程:

Alt

在接下來的部署過程中,螢幕會有日誌及圖示顏色的動態變化:

Alt

Alt

當你看見Docker圖示顏色變為綠色的時候,表示所有節點的docker已經能正常執行,此時可以不等後續部署過程結束,立刻去所有k8s master節點進行HA元件的啟用:

       docker load -i /root/k8s-ha.tar

       /root/start-haproxy.sh

      /root/start-keepalived.sh

然後耐心等待最後部署介面所有元件顏色變為綠色即可結束K8S高可用叢集的部署工作。

Alt

驗證:

在此感謝為此專案付出辛勤勞動的同事華相、Ann、Alan。我們將持續為此專案做出改進貢獻給社群。