1. 程式人生 > >在 Linux 部署多節點 Kubernetes 叢集與 KubeSphere 容器平臺

在 Linux 部署多節點 Kubernetes 叢集與 KubeSphere 容器平臺

KubeSphere 是在 Kubernetes 之上構建的以應用為中心的企業級容器平臺,所有供為使用者提供簡單易用的操作介面以及嚮導式操作方式。同時,KubeSphere Installer 提供了 快速部署生產級別的 Kubernetes 叢集和全棧化容器平臺的功能,能夠快速幫助企業使用者快速搭建一套以應用為中心的 DevOps 平臺。

KubeSphere 支援部署和執行在包括公有云、私有云、VM、BM 和 Kubernetes 等任何基礎設施之上,可以部署在公有云託管的 Kubernetes 之上(如 GKE、EKS、ACK),也支援部署在私有化的 Kubernetes 之上(如 kubeadm、k3s、RKE 部署的叢集)。同時,KubeSphere 支援線上安裝與離線安裝。

上一篇文章說明了如何在 Kubernetes 叢集部署 KubeSphere,本文章將手把手帶你 使用 KubeSphere Installer 在 3 臺 Linux 機器部署一個多節點的 Kubernetes 叢集,並開啟 KubeSphere 最小化安裝。

Multi-Node 即多節點部署,部署前建議您選擇叢集中任意一個節點作為一臺任務執行機 (taskbox),為準備部署的叢集中其他節點執行部署的任務,且 Taskbox 應能夠與待部署的其他節點進行 ssh 通訊。

  • KubeSphere 2.1 預設僅開啟最小化安裝,Installer 已支援自定義安裝各個可插拔的功能元件,使用者可根據業務需求和機器配置選擇安裝所需的元件,請確保開啟可插拔元件之前機器資源滿足最低要求,參考開啟可選元件的安裝。
  • 安裝時間跟網路情況和頻寬、機器配置、安裝節點個數等因素有關,可通過調高頻寬的方式,或在安裝前 配置映象加速器 來加快安裝速度。

說明:

  • 本安裝示例僅作為快速測試部署的演示,因此將使用預設的 OpenEBS 基於 Local Volume 提供持久化儲存服務,OpenEBS 支援 動態申請 PV,方便初次安裝但沒有準備儲存服務端的場景下進行部署測試,正式環境建議配置使用 KubeSphere 支援的儲存型別,參考 持久化儲存配置說明。
  • Multi-node 支援 Master 和 etcd 節點高可用配置,本示例為了方便多節點的快速測試安裝演示,僅部署單個 Master 和單個 etcd,正式環境建議配置 Master 和 etcd 節點的高可用,請參閱文件的叢集高可用部署配置。

前提條件

檢查安裝機器的網路防火牆是否已關閉,若未關閉防火牆則需要開放相關的指定埠,參考 需開放的埠。

第一步: 準備主機

參考以下節點規格準備至少 3 臺符合要求的主機開始 multi-node 模式的部署。為防止軟體版本衝突,建議您選擇多臺乾淨的機器進行安裝。

說明:

  • 所有節點需要時間同步,否則可能會安裝不成功;
  • 若使用 ubuntu 16.04 建議使用其最新的版本 16.04.5;
  • 若使用 ubuntu 18.04,則需使用 root 使用者;
  • 若 Debian 系統未安裝 sudo 命令,則需要在安裝前使用 root 使用者執行 apt update && apt install sudo 命令安裝 sudo 命令後再進行安裝;
  • 若選裝 DevOps 功能元件時需保證有一臺記憶體大於 8G 的節點,因為 Jenkins 預設的 JVM 設定會需要 6~8 G 的整塊記憶體,若可用記憶體不足可能會造成該節點崩潰。
作業系統 最小配置(每臺)
CentOS 7.5 (64 bit) CPU:2 核, 記憶體:4 G, 系統盤:40 G
Ubuntu 16.04/18.04 LTS (64 bit) CPU:2 核, 記憶體:4 G, 系統盤:40 G
Red Hat Enterprise Linux Server 7.4 (64 bit) CPU:2 核, 記憶體:4 G, 系統盤:40 G
Debian Stretch 9.5 (64 bit) CPU:2 核, 記憶體:4 G, 系統盤:40 G

以下用一個示例介紹 multi-node 模式部署多節點環境,本示例準備了 3 臺 CentOS 7.5 的主機並以 root 使用者準備安裝。登入主機名為 Master 的節點作為任務執行機 Taskbox 來執行安裝步驟。

在 安裝說明 已經介紹了 KubeSphere 叢集架構是由管理節點 (Master) 和工作節點 (Node) 構成的,這 3 臺主機分別部署 1 個 Master 節點和 2 個 Node 節點。

假設主機資訊如下所示:

主機 IP 主機名 叢集角色
192.168.0.1 master master,etcd
192.168.0.2 node1 node
192.168.0.3 node2 node

叢集架構: 單 master 單 etcd 雙 node

第二步: 準備安裝配置檔案

1. 下載 KubeSphere 2.1.0 安裝包至待安裝機器,進入 conf 目錄。

$ curl -L https://kubesphere.io/download/stable/v2.1.0 > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.0/conf

2. 編輯主機配置檔案 conf/hosts.ini,為了對目標機器及部署流程進行集中化管理配置,叢集中各個節點在主機配置檔案 hosts.ini 中應參考如下配置,建議使用 root 使用者進行安裝。

說明:

  • 若以非 root 使用者 (如 ubuntu 使用者) 進行安裝,[all] 部分可參考配置檔案 conf/hosts.ini 的註釋中 non-root 使用者示例部分編輯。
  • 如果在 taskbox 使用 root 使用者無法 ssh 連線到其他機器,也需要參考 conf/hosts.ini 的註釋中 non-root 使用者示例部分,但執行安裝指令碼 install.sh 時建議切換到 root 使用者。
  • master, node1, node2 作為叢集各個節點的主機名,若需要自定義主機名則所有主機名需要都使用小寫形式。

以下示例在 CentOS 7.5 上使用 root 使用者安裝,每臺機器資訊佔一行,不能分行。

root 配置 hosts.ini 示例:

[all]
master ansible_connection=local  ip=192.168.0.1
node1  ansible_host=192.168.0.2  ip=192.168.0.2  ansible_ssh_pass=PASSWORD
node2  ansible_host=192.168.0.3  ip=192.168.0.3  ansible_ssh_pass=PASSWORD

[kube-master]
master

[kube-node]
node1
node2

[etcd]
master

[k8s-cluster:children]
kube-node
kube-master

說明:

  • [all]: 中需要修改叢集中各個節點的內網 IP 和主機 root 使用者密碼:
    主機名為 "master" 的節點作為已通過 SSH 連線的 Taskbox 所以無需填寫密碼。
    Node 節點的引數比如 node1 和 node2 的 ansible_hostip 都替換為當前 node1 和 node2 的內網 IP,將 ansible_ssh_pass 相應替換為 node1 和 node2 的 root 使用者密碼。

    引數解釋:

    - ansible_connection: 與主機的連線型別,此處設定為 local 即本地連線
    - ansible_host: 叢集中將要連線的主機地址或域名
    - ip: 叢集中將要連線的主機 IP
    - ansible_user: 預設的 SSH 使用者名稱 (非 root),例如 ubuntu
    - ansible_become_pass: 預設的 SSH 使用者登入密碼
    - ansible_ssh_pass: 待連線主機 root 使用者的密碼
  • [kube-master][etcd]:應將主機名 "master" 填入 [kube-master] 和 [etcd] 部分,"master" 節點作為 taskbox,用來執行整個叢集的安裝任務,同時 "master" 節點在 KubeSphere 叢集架構中也將作為 Master 節點管理叢集和 etcd 節點負責儲存叢集的資料。
  • [kube-node]:將主機名 "node1","node2" 填入 [kube-node] 部分,作為 KubeSphere 叢集的 node 節點。
  • [local-registry]:離線安裝包中該引數值表示設定哪個節點作為本地映象倉庫,預設值為 master 節點。建議給該節點的 /mnt/registry 單獨掛盤 (參考 fdisk 命令),使映象可儲存在持久化儲存並節省機器空間。

第三步: 安裝 KubeSphere

KubeSphere 多節點部署會自動化地進行環境和檔案監測、平臺依賴軟體的安裝、Kubernetes 和 etcd 叢集的自動化部署,以及儲存的自動化配置。Installer 預設安裝的 Kubernetes 版本是 v1.15.5

說明:

  • 通常情況您不需要修改任何配置,直接安裝即可。
  • 網路外掛預設是 calico,儲存預設用 OpenEBS 基於 Local Volume 提供持久化儲存服務,若您需要自定義安裝引數,如網路、儲存、負載均衡器外掛、可選功能元件等相關配置需在 conf/common.yaml 檔案中指定或修改,參考 叢集元件配置說明。
  • 支援儲存型別:GlusterFS、Ceph RBD、NFS、Local Volume、QingCloud 雲平臺塊儲存 (QingCloud 公有云單節點掛盤限制為 10 塊)、QingStor NeonSAN,儲存配置相關的詳細資訊請參考 儲存配置說明。
  • 由於 Kubernetes 叢集的 Cluster IP 子網網段預設是 10.233.0.0/18,Pod 的子網網段預設是 10.233.64.0/18,因此安裝 KubeSphere 的節點 IP 地址範圍不應與以上兩個網段有重複,若遇到地址範圍衝突可在配置檔案 conf/common.yaml 修改 kube_service_addresseskube_pods_subnet 的引數。

參考以下步驟開始 multi-node 部署。

說明:由於 multi-node 的安裝時間跟網路情況和頻寬、機器配置、安裝節點個數等因素都有關,此處暫不提供時間標準。

1. 進入安裝目錄,建議使用 root 使用者執行 install.sh 安裝指令碼:

$ cd scripts
$ ./install.sh

2. 輸入數字 2 選擇第二種 Multi-node 模式開始部署,安裝程式會提示您的環境是否前提條件,若滿足請輸入 "yes" 開始安裝。

################################################
         KubeSphere Installer Menu
################################################
*   1) All-in-one
*   2) Multi-node
*   3) Quit
################################################
https://kubesphere.io/               2018-10-14
################################################
Please input an option: 2

3. 驗證 KubeSphere 叢集部署是否成功:

(1) 待安裝指令碼執行完後,當看到如下 "Successful" 介面,則說明 KubeSphere 安裝成功。

successsful!
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.0.1:30880
Account: admin
Password: P@88w0rd

NOTE:Please modify the default password after login.
#####################################################

提示:如需要再次檢視以上的介面資訊,可在安裝包目錄下執行 cat kubesphere/kubesphere_running 命令檢視。

(2) 若需要在外網訪問,在雲平臺需要在埠轉發規則中將內網埠 30880 轉發到源埠 30880,然後在防火牆開放這個源埠,確保外網流量可以通過該埠。

(3) 安裝成功後,瀏覽器訪問對應的 URL,如 http://{$公網IP}:30880,即可進入 KubeSphere 登入介面,可使用預設的使用者名稱和密碼登入 KubeSphere 控制檯體驗,登入後請立即修改預設密碼。參閱 快速入門 幫助您快速上手 KubeSphere。

注意:登陸 Console 後請在 "叢集狀態" 檢視服務元件的監控狀態,待所有元件啟動完成後即可開始使用,通常所有服務元件都將在 15 分鐘內啟動完成。

UI 快覽

KubeSphere (https://github.com/kubesphere/kubesphere) 是一個開源的以應用為中心的容器管理平臺,支援部署在任何基礎設施之上,並提供簡單易用的 UI,極大減輕日常開發、測試、運維的複雜度,旨在解決 Kubernetes 本身存在的儲存、網路、安全和易用性等痛點,幫助企業輕鬆應對敏捷開發與自動化監控運維、端到端應用交付、微服務治理、多租戶管理、多叢集管理、服務與網路管理、映象倉庫、AI 平臺、邊緣計算等業務場景。