在 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_host
和ip
都替換為當前 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_addresses
或kube_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 平臺、邊緣計算等業務場景。