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 等國內外主流操作系統。具體操作系統如下:

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

前提條件

操作步驟

  1. 前往 Github 拉取 Kubean 項目。
$ git clone https://github.com/kubean-io/kubean.git
  1. 拉取到本地後,執行如下命令進入 kubean/artifacts/demo 文件夾
$ cd kubean/artifacts/demo
  1. 執行如下命令修改 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: {}
  1. 在當前安裝了 Kubean 的集羣上執行如下命令,開始部署新集羣
$ kubectl apply -f demo
  1. 至此,您便在當前集羣開啓了一個創建集羣的任務,執行如下命令,查看這個任務。
$ kubectl get job -n kubean-system
  1. 等待任務執行完成,完成集羣的創建。

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