Kubean 集羣生命週期管理
01 背景
隨着雲原生理唸的不斷髮展,越來越多的企業開始將業務部署至 Kubernetes 雲平臺,大量業務上云爲企業帶來敏捷與高效的同時,也爲企業的運維管理帶來了大量新的挑戰。如何在兼容不同操作系統部署集羣、如何實現跨區域的部署集羣、如何實現在等保、信創等場景下在線(離線)部署集羣等問題都爲企業的應用上雲帶來了極大的挑戰。面對企業業務需求的新變化,傳統的基於二進制包部署 Kubernetes 集羣存在諸多缺陷和不足。一方面手動部署 Kubernetes 集羣涉及的技術棧門類多、門檻高,部署流程繁瑣且重複,易於出錯。另一方面通過手動部署集羣在集羣高可用、離線部署、插件預裝等方面都存在諸多不足。爲了降低 Kubernetes 的使用門檻,方便運維人員快速部署集羣,Kubernetes 社區孵化出了一批如 Kubeadm、Kubespray、Kops 等用於快速部署集羣的項目。
社區主流集羣生命週期管理工具
Kubeadm:Kubernetes 官方推薦的集羣部署工具,通過使用 init 建立控制節點和 join 來納管工作節點的模式來構建集羣,但是存在諸多小問題,無法滿足企業生產環境所需要的穩定性和安全性需求。
Kops:一款用於生產級別的 Kubernetes 集羣部署工具,與 AWS、Google、VMware 等國外雲廠商耦合度高,需要結合國外雲廠商的能力來實現集羣的部署,缺乏靈活性。此外由於 Kops 的衆多依賴源需要國外網絡環境支持,所以其不適合國內企業使用。
Kubespray:一款用於生產級別的 Kubernetes 集羣部署工具,集成了 Kubeadm 和 Ansible 自動化運維工具,兼容大部分基於 systemd 的操作系統且能夠屏蔽底層計算環境的差異,使集羣能夠部署在物理機、虛擬機、邊緣節點、雲主機等各種計算環境之上。相較於其它工具,Kubespray 的可擴展性、靈活性更強,很大程度上降低了運維人員的負擔,但部署過程中容易出錯,對運維人員的使用門檻依舊很高。
Kubean 應運而生
在以上述背景下,「Daocloud 道客」基於大量客戶真實生產實踐上的經驗積累和社區技術方案的整合,在今年 6 月份開源了一款生產級的集羣生命週期管理(創建、更新、刪除)工具——Kubean。
Kubean 採用 Kubespray 作爲底層技術依賴,一方面簡化了集羣部署的操作流程,降低了用戶的使用門檻。另一方面在 Kubespray 能力基礎上增加了集羣操作記錄、離線版本記錄等諸多新特性。Kubean 還提供了界面化創建集羣的能力(需要結合社區版 DCE 5.0 容器管理功能),讓新手用戶也能一鍵創建和管理集羣。本文主要對 Kubean 的主要功能進行介紹,關於社區版 DCE 5.0 的獲取,可查閱 https://www.daocloud.io/dce_5.0_ce。
02 Kubean 主要功能
集羣在線 / 離線部署
Kubean 支持在線、離線兩種集羣部署方式,滿足用戶在內網 / 離線環境下快速部署集羣。在**離線模式下,最快半小時內就可自動完成一套生產高可用集羣的部署。 **
集羣快速擴縮容
Kubean 支持對集羣進行快速擴縮容操作,能夠批量實現節點的增加和刪除。並且在集羣擴縮容期間,運行在其上面的業務應用不受任何影響。
集羣版本快速升級
Kubean 支持對集羣的 Kubernetes 版本進行連續升級,在集羣版本升級期間,運行在其上面的業務應用依舊不受任何影響。
集羣故障快速定位
Kubean 會對集羣部署、版本升級、擴縮容等操作保存詳細的日誌,當集羣發生未知故障導致集羣不可用時,通過詳細的集羣操作日誌,用戶能快速定位集羣故障點。
03 Kubean 主要特性
簡單易用
用戶可以使用 Helm 包在當前集羣對 Kubean 進行快速安裝,安裝了 Kubean 的集羣即能夠獲得部署、升級、擴縮容新集羣的能力。當前 Kubean 支持的 Kubernetes 版本爲 v1.20 至 v1.25,容器運行時爲 Docker、Containerd、runc 等主流容器運行時。此外 Kubean 還支持對 Cilium、Calico、Multus 、 Cephfs、Local-path-provisioner 等諸多網絡和存儲插件進行預裝,實現集羣部署即生產就緒。
生產級高可用
在部署集羣時,支持部署 3 個及以上 master 節點來實現集羣的高可用,用戶可以根據自身資源和業務重要性來決定高可用方案,進一步保障關鍵業務能夠持續穩定的對外提供服務,降低系統性風險。
屏蔽底層基礎計算環境差異
通過使用 Kubean,用戶能夠快速基於本地物理機、裸金屬、虛擬機、雲主機、邊緣節點等計算環境部署 Kubernetes 集羣,並實現對新建集羣的全生命週期進行管理。
兼容衆多操作系統
Kubean 支持麒麟、Centos 等國內外主流操作系統。具體操作系統如下:
-
Debian Bullseye, Buster, Jessie, Stretch
-
Ubuntu16.04, 18.04, 20.04, 22.04
-
CentOS/RHEL 7,8, 9
-
Fedora 35, 36
-
Fedora CoreOS
-
openSUSE Leap 15.x/Tumbleweed
-
Oracle Linux 7,8, 9
-
Alma Linux 8, 9
-
Rocky Linux 8, 9
-
Kylin Linux Advanced Server V10
-
Amazon Linux 2
04 使用在線模式 部署集羣
本文將以 Kubean 社區的官方爲例,演示如何使用 Kubean 快速在線部署集羣,離線部署集羣的方式請查閱 https://github.com/kubean-io/kubean/blob/main/doc/offline.zh.md。
在使用 Kubean 部署集羣前,您需要預先在您的集羣上安裝 Kubean。
使用 Helm 安裝 Kubean
首先,將 Kubean 圖表存儲庫添加到您的本地存儲庫。
$ helm repo add kubean-io https://kubean-io.github.io/kubean-helm-chart/
接下來您可以查看 repo 是否已添加在本次存儲庫。
$ helm repo list
NAME URL
kubean-io https://kubean-io.github.io/kubean-helm-chart/
您可以運行以下命令來安裝 Kubean。
$ helm install kubean kubean-io/kubean --create-namespace -n kubean-system
查看 Kubean 狀態。
$ helm status kubean -n kubean-system
NAME: kubean
LAST DEPLOYED: Sat Oct 22 19:02:46 2022
NAMESPACE: kubean-system
STATUS: deployed
REVISION: 6
TEST SUITE: None
NOTES:
Thank you for installing kubean.
Chart Information:
Chart Name: kubean
Chart Description: A Helm chart for kubean
Release Information:
Release Name: kubean
Release Namespace: kubean-system
To learn more about the release, try:
$ helm status kubean -n kubean-system
$ helm get all kubean -n kubean-system
Documention: https://github.com/kubean-io/kubean/blob/main/README.md
前提條件
-
參照上文使用 Helm 安裝 Kubean。
-
準備兩個或兩個以上的節點,並且保證節點和當前集羣間的網絡聯通性。
-
如果在非 root 用戶賬戶下運行,請預先在目標節點中爲用戶提升權限。
操作步驟
- 前往 Github 拉取 Kubean 項目。
$ git clone https://github.com/kubean-io/kubean.git
- 拉取到本地後,執行如下命令進入 kubean/artifacts/demo 文件夾
$ cd kubean/artifacts/demo
- 執行如下命令修改 hosts-conf-cm.yml 中的 IP 地址爲您本地或遠程真實存在的節點 IP 地址並保存。
$ vi hosts-conf-cm.yml
#輸出如下
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster1-demo-hosts-conf
namespace: kubean-system
data:
hosts.yml: |
all:
hosts:
node1:
ip: IP1 #更改爲您本地或遠端節點的 IP 地址
access_ip: IP1 #更改爲您本地或遠端節點的 IP 地址
ansible_host: IP1 #更改爲您本地或遠端節點的 IP 地址
ansible_connection: ssh
ansible_user: who #遠端節點登錄的用戶名,默認爲 root
ansible_ssh_pass: xxx #遠端節點登錄的密碼
node2:
ip: IP2 #更改爲您本地或遠端節點的 IP 地址
access_ip: IP2 #更改爲您本地或遠端節點的 IP 地址
ansible_host: IP2 #更改爲您本地或遠端節點的 IP 地址
ansible_connection: ssh #更改爲您本地或遠端節點的 IP 地址
ansible_user: who #遠端節點登錄的用戶名,默認爲 root
ansible_ssh_pass: xxx #遠端節點登錄的密碼
children:
kube_control_plane:
hosts:
node1:
kube_node:
hosts:
node1:
node2:
etcd:
hosts:
node1:
k8s_cluster:
children:
kube_control_plane:
kube_node:
calico_rr:
hosts: {}
- 在當前安裝了 Kubean 的集羣上執行如下命令,開始部署新集羣
$ kubectl apply -f demo
- 至此,您便在當前集羣開啓了一個創建集羣的任務,執行如下命令,查看這個任務。
$ kubectl get job -n kubean-system
- 等待任務執行完成,完成集羣的創建。
05 總結
本文簡單介紹了 Kubean 的部分基礎能力,還有更多新玩法等待着大家去發現,可以前往 Kubean 官方社區進一步探索和使用,我們也將之後的系列文章中,進一步帶您深入瞭解 Kubean 這個項目背後的技術原理。
Kubean 官方社區:
https://github.com/kubean-io/kubean
本文作者
石焰榮
「DaoCloud 道客」容器管理產品經理
Kubernetes Member
DaoCloud 公司簡介
「DaoCloud 道客」雲原生領域的創新領導者,成立於 2014 年底,擁有自主知識產權的核心技術,致力於打造開放的雲操作系統爲企業數字化轉型賦能。產品能力覆蓋雲原生應用的開發、交付、運維全生命週期,並提供公有云、私有云和混合雲等多種交付方式。成立迄今,公司已在金融科技、先進製造、智能汽車、零售網點、城市大腦等多個領域深耕,標杆客戶包括交通銀行、浦發銀行、上汽集團、東風汽車、海爾集團、屈臣氏、金拱門(麥當勞)等。目前,公司已完成了 D 輪超億元融資,被譽爲科技領域準獨角獸企業。公司在北京、南京、武漢、深圳、成都設立多家分公司及合資公司,總員工人數超過 400 人,是上海市高新技術企業、上海市 “科技小巨人” 企業和上海市 “專精特新” 企業,併入選了科創板培育企業名單。
網址:www.daocloud.io
郵件:info@daocloud.io
電話:400 002 6898
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/-NzXmyb-9yQc1ydcsZz0CA