天天看點

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

項目位址 https://github.com/KubeOperator/KubeOperator

KubeOperator 支援兩種 Kubernetes 叢集部署方式,一種是手動模式,另外一種是自動模式。手動模式下,使用者需要自行準備主機和 NFS 作為持久化存儲。

手動模式下 Kubernetes 叢集的規劃、部署和管理包含以下内容:

  • 叢集規劃 ( Day 0)
    • 系統設定
    • 準備主機
    • 準備存儲
  • 叢集部署( Day 1)
    • 建立叢集
    • 部署叢集
    • 服務暴露
  • 叢集營運(Day 2)
    • 叢集管理
    • 叢集更新
    • 叢集伸縮
    • 叢集備份

本章節以手動模式部署一個開發測試用叢集為例,需要準備三台主機,每個主機的用途和需求是:

名稱 角色 數量 作業系統 最低配置 推薦配置 描述
master-1 Master 1 CentOS 7.6 2C 4G 4C 16G 運作 etcd、kube-apiserver、kube-scheduler。
worker-1 Worker 1 CentOS 7.6 4C 16G 8C 32G 運作 kubelet、應用工作負載。
nfs-storage NFS 1 CentOS 7.6 2C 8G 4C 16G 提供 NFS 持久化存儲,磁盤建議 500G 以上。

1 叢集規劃( Day 0)

1.1 系統設定

在使用 KubeOperator 之前,必須先對 KubeOperator 進行必要的參數設定。這些系統參數将影響到 Kubernetes 叢集的安裝及相關服務的通路。

1.1.1 主機 IP 、叢集域名字尾 和 NTP Server

本機 IP 指安裝 KubeOperator 機器自身的 IP。KubeOperator 所管理的叢集将使用該 IP 來通路 KubeOperator。

域名字尾為叢集節點預設通路位址的字尾,叢集暴露出來的對外服務的 URL 都将以該域名字尾作為通路位址字尾,例如: grafana.apps.mycluster.fit2cloud.com。同時支援建立叢集時修改域名字尾。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

NTP Server 用來實作叢集所有主機時間同步,預設可以為空,也可以網上查找可用的 NTP Server 。

1.1.2 憑據

憑據為 KubeOperator 連接配接主機資産的憑證。在左側導航菜單中選擇【設定】,進入【設定】頁後點選【憑據】TAB 可以看到已添加憑據資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

點選【添加】按鈕添加 password 方式的憑據。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

憑據新增使用密鑰方式登入主機。單擊【添加】按鈕,選擇 privatekey 方式登入目标主機,輸入憑據名稱和 root 賬号,然後将 id_rsa 私鑰内容複制到密鑰框裡,确認。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
注:密鑰方法連接配接主機舉例說明:在 KubeOperator 主機中首先生成 id_rsa 和 id_rsa.pub 密鑰對,将 id_rsa.pub 公鑰裡面内容添加要連接配接的目标主機 authorized_keys 檔案中,authorized_keys 檔案權限需要設定為 600 。然後在 KubeOperator 控制台的【憑據】頁面,将開始生成的 id_rsa 私鑰檔案内容複制到憑據的密鑰框中。注意這裡的賬号需要 root 賬号。

1.2 準備主機

我們将準備添加三台主機 master-1、worker-1、nfs-storage,用來作為 master 節點、worker 節點 及 NFS 存儲。

在左側導航菜單中選擇【主機】,進入【主機】頁後可以看到已添加主機的詳細資訊,包括 IP、CPU、記憶體、作業系統等。

點選【添加】按鈕添加主機。輸入名稱和 IP 位址、指定端口号、選擇對應的憑據,最後點選【送出】按鈕即可完成一台主機的添加。同樣地,依次添加 master-1,worker-1 和 nfs-storage 三台主機。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

1.3 準備存儲

KubeOperator 支援自動建立 NFS 存儲和添加自行準備的 NFS 存儲以外,新增加支援雲原生存儲解決方案 Rook Ceph ,供手動模式的 K8s 叢集使用後面章節将詳細介紹。下面介紹如何添加 KubeOperator 為叢集自動建立的 NFS 存儲:

KubeOpeartor 控制台【存儲】,單擊【添加】,選中建立 NFS ,在主機下拉清單,選擇上述 1.2 節添加的 NFS 主機 (名稱為:nfs-storage),如果 NFS 無網絡通路限制,白名單選項可以預設填 ” * “,挂載路徑可按需填寫,如 /nfs,點選【送出】。NFS 安裝成功後,可以在 NFS 清單中看到該存儲處于運作中狀态。

添加成功後,建立叢集時如果選擇 NFS 存儲,可以看到該 NFS 存儲。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
注:自行搭建的 NFS 服務僅适合在開發測試環境使用。KubeOperator 還支援錄入已有的 NFS 存儲(比如專業的 NAS 存儲)。單擊【添加】選中“錄入 NFS” ,輸入存儲名稱、白名單選項可以預設選項、服務位址、挂載路徑,送出即可。需要注意另外一點添加 NFS 存儲時,存儲的名稱不能和叢集名稱相同。

2 叢集部署(Day 1)

2.1 建立叢集

2.1.1 基本資訊

點選【叢集】頁的【添加】按鈕進行叢集的建立。在【基本資訊】裡輸入叢集的名稱,選擇該叢集所要部署的 Kubernetes 版本。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
注:叢集名稱不要和主機名稱、存儲節點名稱相同。
使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.1.2 部署模型

選擇 Kubernetes 叢集的部署模型。KubeOperator 目前支援一主多節點和多主多節點。選擇部署模型後,KubeOperator 将展示叢集中各個角色節點的詳細配置要求。現在節點支援作業系統包括 CentOS 7.4/7.5/7.6/7.7 。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
KubeOperator 支援 MultiAZ(多故障域),多主多節點模式适合在 MultiAZ 下部署,實作雙活環境下的高可用。

2.1.3 配置節點

【添加主機】環節,把叢集所需的主機添加到了 KubeOperator 中。在【配置節點】環節,可以根據需求選擇 worker 節點數量,這裡以一個 master 和一個 worker 節點為例。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.1.4 選擇節點

在【選擇節點】環節,則可以根據不同的節點角色,選擇主機清單中的各個主機。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.1.5 配置網絡

【配置網絡】環節,選擇叢集的網絡插件,目前版本支援 Flannel 和 Calico,這裡我們選擇 Calico BGP 網絡方式。

如果叢集節點全部都在同一個二層網絡下,請選擇"host-gw"。如果不是,則選擇"vxlan"。“host-gw” 性能優于 “vxlan”。選項 Service CIDR 和 POD CIDR 保證不和已有主機節點 IP 段沖突即可使用。
使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.1.6 配置存儲

【添加存儲】環節,支援兩張存儲方案,一種是 NFS 存儲,新增加 Rook Ceph 存儲方案。

選擇使用 Rook Ceph 存儲時,需要設定存儲媒體和存儲路徑,存儲媒體使用推薦測試環境使用的配置,Path 使用推薦路徑 /data/ceph,當然可以根據實際環境修改配置。

如何登入 Ceph 控制台檢視存儲監控資訊,請參考第 3.1.2.1 節詳細内容。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

如果選擇 NFS 存儲, NFS 主機的節點已經在 1.3 節添加到【存儲】頁面,這裡選擇外部持久化存儲時,在下來菜單中會列出該節點。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.1.7 配置檢測

完成上述 6 個步驟後,KubeOperator 會對目前叢集所選擇的部署節點進行配置檢測,包含 CPU、記憶體和作業系統的檢測,檢查是否滿足節點最低配置要求。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.1.8 其他設定

在【其他設定】中,我們增加了建議的可運作 POD 數量和 Docker 資料目錄。使用者可根據實際環境修改。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.1.9 叢集配置概覽

所有步驟完成後,會有一個叢集配置概覽頁對之前步驟所設參數進行彙總,使用者可在此頁進行叢集配置的最後檢查。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.2 部署叢集

在叢集清單中點選要進行部署的叢集名稱,預設展示的是該叢集的【概覽】資訊。【概覽】頁中展示了 Kubernetes 叢集的諸多詳情,包括叢集狀态,Worker 狀态,叢集描述資訊等。點選【概覽】頁最下方的【安裝】按鈕進行 Kubernetes 叢集的部署。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

叢集部署開始後,将會自動跳轉到【任務】頁。在【任務】頁裡可以看到叢集部署目前所執行的具體任務資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

如果是内網環境的話,一個典型的 3 節點叢集的部署大概需要 10 分鐘左右的時間。在出現類似下圖的資訊後,表明叢集已部署成功:

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

2.3 服務暴露

在叢集清單中點選叢集名稱,點選【F5 BIG-IP】添加 F5 BIG-IP,為 Kubernetes 配置 F5-BIGIP-CONTROLLER 後,我們可以通過 F5 BIGIP 裝置向外網暴露服務。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3 叢集營運(Day 2)

3.1 叢集管理

回到叢集的【概覽】頁,該頁提供了 Grafana、Prometheus、Registry-console、Dashboard 、Traefik、Weave Scope 六個管理系統快捷通路方式。這六個系統的通路域名需要在 DNS 伺服器中添加相應的域名記錄。如沒有使用 F5 BIG-IP 暴露服務,也可以通過修改本地主機的 hosts 檔案來達到相同的作用。

eg:

# 編輯 /etc/hosts
testerdeMacBook-Pro:~ tester$sudo vim /etc/hosts
# 替換 WORKER_IP 為任意 worker 節點 IP 位址
WORKER_IP grafana.apps.mycluster.fit2cloud.com
WORKER_IP prometheus.apps.mycluster.fit2cloud.com
WORKER_IP registry-ui.apps.mycluster.fit2cloud.com
WORKER_IP dashboard.apps.mycluster.fit2cloud.com
WORKER_IP master-1.mycluster.fit2cloud.com
WORKER_IP traefik.apps.mycluster.fit2cloud.com
WORKER_IP scope.weave.apps.mycluster.fit2cloud.com
WORKER_IP ceph.apps.mycluster.fit2cloud.com
           

3.1.1 Dashboard

3.1.1.1 KubeOperator Dashboard

KubeOperator 2.2 中新增功能【概覽】頁,該頁面集中顯示了叢集相關的統計資訊,包括叢集狀态,容量資訊,Nodes 數量、Namespaces 數量、Pods 數量等,還包括異常日志,異常 Pod 的資訊統計。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
3.1.1.2 K8s Dashboard

K8s Dashboard 對應的是 Kubernetes 的控制台,從浏覽器中通路 Kubernetes 控制台需要用到【令牌】。點選【概覽】頁下方的【擷取TOKEN】按鈕擷取令牌資訊,将令牌資訊複制到粘貼闆。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

輸入令牌資訊後,點選【登入】,則可進入 Kubernetes 控制台。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3.1.2 叢集監控

3.1.2.1 通路 Ceph 控制台

KubeOperator 新增支援雲原生存儲解決方案 Rook Ceph,當建立手動模式叢集,存儲方案選擇 Rook Ceph 時 ,在叢集【概覽】頁,描述資訊存儲類型中可以通過 Rook Ceph 圖示連結跳轉至 Ceph 控制台。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

Ceph 控制台使用者名是 admin,密碼需要通過執行指令方式擷取。擷取方式如下:

#此指令可以在叢集概覽頁下面的 WebKubectl 中或者在叢集中任意節點中執行。
$ kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo

           
使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

登入 Ceph 控制台後,可以看到叢集存儲的監控資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
3.1.2.2 通路 Grafana

Grafana 對 Prometheus 采集到的監控資料進行了不同次元的圖形化展示,更友善使用者了解整個 Kubernetes 叢集的運作狀況。點選 Grafana 下方的【轉到】按鈕通路 Grafana 控制台。

叢集級别的監控面闆:

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

節點級别的監控面闆:

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3.1.2.3 通路 Weave Scope

Weave Scope 用來監控、可視化和管理 Kubernetes 叢集。點選 Weave Scope 下方的【轉到】按鈕即可通路 Weave Scope 控制台。點選控制台的頂部【Pod】,會自動生成容器之間的關系圖,友善了解容器之間的關系,也友善監控容器化和微服務化的應用。Weave Scope 預設的使用者名是 admin,密碼是 admin123。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

點選頂部的【Host】,可以遠端shell登入各個節點,還可以看到主機的詳細資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
3.1.2.4 通路 Prometheus

Prometheus 用來對整個 kubernetes 叢集進行監控資料的采集。點選 Prometheus 下方的【轉到】按鈕即可通路 Prometheus 控制台。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
3.1.2.5 健康狀态

在 K8s 叢集【健康狀态】欄,可以看到整體的叢集狀态,具體包括 Control Manager,Schedule,etcd 和 nodes 的實時健康狀态以及過去半年 K8s 叢集運作狀态。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3.1.3 叢集日志

KubeOperator 系統新增加支援擷取 KubeOperator 系統日志和 K8s 叢集日志功能。

3.1.3.1 系統日志

【系統日志】頁支援查找 KubeOperator 系統裡所有 K8s 叢集日志資訊, 日志類型包括 info、debug 和 error 日志,還可以用關鍵字搜尋日志等等日志資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
3.1.3.2 叢集日志

K8s 叢集日志使用 Grafana 日志聚合工具 Loki。Loki 是Grafana Labs 團隊的開源項目,它的設計非常經濟高效且易于操作,特别适合存儲 Kubernetes Pod 日志。

通過通路 Grafana 控制台看到 Loki 日志。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3.1.4 叢集管理

3.1.4.1 通路 Registry

Registry 則用來存放 Kubernetes 叢集所使用到的 Docker 鏡像。Registry 預設的使用者名是 admin,密碼是 admin123。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
3.1.4.2 通路 Traefik

Traefik 用來作為 kubernetes 叢集的HTTP反向代理、負載均衡工具。點選 Trafik 下方的【轉到】按鈕即可通路 Traefik 控制台。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集
3.1.4.3 Webkubectl

KubeOperator 新增功能支援 Webkubectl 。在叢集【概覽】頁最下面單擊 WEBKUBECTL ,在彈出框中可以像在叢集中節點執行指令,查詢叢集資訊等操作。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3.2 叢集更新

KubeOperator 支援 K8s 更新。請注意由于 1.15 和 1.16 版本之後變化較大,目前不支援更新從 1.15 更新到 1.16 版本。

在叢集清單中點選要進行更新的叢集名稱,點選【概覽】頁最下方的【更新】按鈕進行 Kubernetes 叢集的更新。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

單擊【确認】後,系統自動跳轉到【任務】頁,可以看到更新進度和詳細 log 資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

更新完成後,可以看到如下資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

同時在叢集【曆史】頁,可以通過單擊【詳情】按鈕檢視更新的所有 log 資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3.3 叢集伸縮

此版本 KubeOperator 支援重點新功能:擴容 K8s 叢集 worker 節點數量。

KubeOperator 控制台【叢集】頁,單擊一個要擴容的叢集名稱,即【概覽】頁面,Worker 狀态欄左下方單擊【擴容】,在彈出框中選中擴容 worker 節點數量。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

确認後,會自動轉到【任務】頁面,實時檢視擴容進度,完成後可以看到如下圖所示資訊。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

3.4 叢集備份

KubeOperator 目前的備份功能支援三種不同種類的存儲,即 AWS S3、aliyun oss 和 Azure 存儲。為叢集備份和恢複提供存儲支援,實作備份和恢複功能。

添加備份賬号之前,請首先自行準備好 AWS S3 ,aliyun oss 或者 Azure 存儲賬号資訊,包括 AccessKey,SecretKey,endpoint 和桶/容器資訊。

以添加 S3 為例,在【系統設定】的【備份】Tab 也中輸入名稱和 AccessKey,SecretKey 和端點(對應 AWS S3 系統裡的 endpoint),單擊【擷取桶/容器】擷取桶名稱,建議在 S3 建立一個桶單獨使用,最後送出。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

在叢集【備份】頁面,可以看到,KubeOperator 支援的自動備份政策和手動備份,自動備份包括備份間隔,複本保留份數以及可以開啟戶禁用備份政策,實作叢集備份和恢複功能。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

手動備份需要先設定備份政策資訊,包括備份間隔、保留份數、選擇儲存設備以及開啟備份,然後單擊【立即備份】後,可以在【任務】頁看到備份進度。

使用開源工具KubeOperator快速部署k8s叢集--在自行準備的主機上規劃、部署及管理 k8s 叢集

繼續閱讀