叢集套件

KlusterKit:一個開源工具包,用於簡化 Kubernetes 部署並在物理隔離的本地環境中運行

叢集套件

今天,我們很高興地宣布,Platform9 在 GitHub 上的 Apache v2.0 許可下開源了 Klusterkit,這是一套包含三個工具的套件。

我們的客戶在私人資料中心推出軟體,這些資料中心通常不會連接到網路(出於安全或其他原因)。 這些大公司希望利用 Kubernetes 對其應用程式進行現代化改造,同時將它們部署到不同的資料中心,而這些資料中心通常不會與外界連接。 這就是 Klusterkit 的用武之地,它可以讓您在物理隔離的環境中輕鬆配置和管理 K8s 叢集。

Klusterkit 包含三個獨立的工具,可以一起或單獨使用來管理 Kubernetes 生產叢集的生命週期:

  1. etcdadm, CLI 用於簡化 etcd 叢集管理。
  2. 節點管理器,用於節點管理的 CLI,可擴展 kubeadm 並部署 kubeadm 所需的依賴項。
  3. CCTL是一個叢集生命週期管理工具,採用 Kubernetes 社群的 Cluster API,使用 nodeadm 和 etcdadm 在本地甚至物理隔離的環境中無縫交付和維護高可用的 Kubernetes 叢集。

這三個工具一起執行以下任務:

  • 透過叢集 API 在實體隔離的本機環境中輕鬆配置和管理高度可用的 etcd 叢集和 Kubernetes 儀表板。
  • 使用 etcd 備份在發生故障後還原叢集控制面板。
  • 打包將 Kubernetes 交付到實體隔離環境中所需的所有工件。

叢集套件功能

  • 多主支援(HA集群K8s)。
  • 安全 etcd 叢集的交付和管理。
  • 在物理隔離的環境中工作。
  • 支援滾動升級和回滾。
  • Flannel (vxlan) 作為後端的 CNI; 有計劃支持其他 CNI。
  • 仲裁遺失後 etcd 叢集的備份和還原。
  • 防止控制面板記憶體和 CPU 時間耗盡。

Klusterkit解決方案架構

叢集套件

為了容錯性和簡單性,Klusterkit 使用單一 cctl-state.yaml 檔案來儲存 Kubernetes 叢集元資料。 透過 cctl CLI,您可以在任何具有此狀態檔案的電腦上管理 Kubernetes 叢集的生命週期。 這可以是操作員的筆記型電腦或屬於 Kubernetes 叢集一部分的任何其他電腦。

Cctl 從上游實作並呼叫 cluster-api 接口,作為叢集上 CRUD 操作的函式庫。 他用 ssh 提供者,Platform9 的開源裸機 cluster-api 提供者,依序呼叫 etcdadm 和 nodeadm 對叢集執行操作。

如何使用Klusterkit及其組件:

1 – 可以使用 go get 指令輕鬆收集這三個工具中的任何一個:

go get -u github.com/platform9/cctl

go get -u github.com/platform9/nodeadm

go get -u github.com/kubernetes-sigs/etcdadm

2 – 然後可以將這些可執行檔打包並複製到應執行高可用 Kubernetes 叢集的目標電腦。 將nodeadm和etcdadm檔案放置在版本目錄中:

cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//

cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//

3 – 如果需要在本地編排 Kubernetes 集群,在物理隔離的環境中,可以使用 nodeadm 和 etcdadm download 命令輕鬆地在可以存取 Internet 的電腦上提前下載必要的依賴項。 然後,下載的專案(即kubelet 和systemd 的kubelet 單元檔案、CNI 可執行檔、kubeadm 檔案、包括Kubernetes 在內的所有容器映像、keepalived 映像和systemd 檔案、etcd 容器映像檔和對應的設定檔)可以輕鬆複製到物理隔離的主機上使用 cctl、nodeadm 和 etcdadm。 (詳情見 維基).

4 – 一切就緒後,您可以使用幾個命令建立第一個 Kubernetes 叢集:

– 首先為叢集建立憑證。

$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa

– 然後建立一個叢集物件。 –help 顯示支援的選項清單。

$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24

– 最後,建立叢集中的第一台機器。

$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master

閱讀更多文件: GitHub上.

來源: www.habr.com

添加評論