如果您想要執行邊緣 Kubernetes,卻發現受管理的解決方案不完全符合您的需求,您可能會探索裸機做為選項。 本文件可協助您在邊緣設定 Kubernetes 叢集時,找到使用案例的最佳可用選項。
注意
本文並非詳盡的比較;相反地,它呈現出根據常見選項之間的主要限定詞做出決策的潛在路徑。
邊緣裸機 Kubernetes 的決策樹
在下方針對邊緣裸機 Kubernetes 提供的選項之間做決定時,請參考下列樹狀結構。
下載此流程圖的 Visio 檔案
MicroK8s:由 Canonical 提供符合規範的「低作業」Kubernetes
K3s:專為 IoT 和邊緣計算建置的認證 Kubernetes 發行版本
kubeadm:用來建立全新 Kubernetes 叢集的 Kubernetes 工具;適用於標準計算 (Linux/Windows)
注意
低作業是指當某些作業工作抽象化或變得更容易時,作業成本會降低,例如自動更新或簡化的升級。
由 Canonical 提供的 MicroK8s
MicroK8s 是以單一 Snap 套件的形式提供,可輕鬆安裝在支援 Snap 的 Linux 電腦上。 其他安裝適用於 Windows、macOS 和 raspberry PI/ARM。 安裝後,MicroK8s 會建立單一節點叢集,可使用 MicroK8s 工具進行管理。 它封裝時含有自己的 kubectl,而且可能會啟用特定附加元件 (例如 helm、dns、ingress、metallb 和更多附加元件)。 也支援多節點、Windows 節點和高可用性 (HA) 案例。
考量因素:
視您想要執行 MicroK8 的位置而定,有各種資源需求。 如需最低資源需求,請參考產品文件。 例如:
Ubuntu:4 GB RAM、20 GB 磁碟空間
Windows:4 GB RAM、40 GB 磁碟空間
只有具有 Calico CNI 的 MicroK8s 叢集才支援 Windows 工作負載。
無論是單一電腦上的個別 VM 或容器,還是相同網路上的不同電腦,MicroK8s 多節點叢集上的每個節點都需要自己的環境才能運作。
在某些 ARM 硬體上執行 MicroK8s 時,可能會發生困難。 如需潛在的補救措施,請參考文件。
由 Rancher 提供的 K3s
K3s 是 Kubernetes 的輕量型發行版本。 K3s 會部署為單一二進位檔,並隨附 kubectl 和 ctr 等內嵌工具,類似於 MicroK8s。
考量因素:
二進位檔小於 100 MB,但根據您的案例,仍有最低的資源需求。 如需最低資源需求,請參考文件。
SQLite3 是預設儲存體系統,但支援其他選項。
K3s 目前不支援 Windows 節點。
HA 可以使用外部資料庫或內嵌資料庫來達成。 自 v1.19.5+k3s1 版本起,K3s 已新增對內嵌 etcd 的完整支援。
kubeadm
Kubeadm 是從頭開始安裝的 Kubernetes 一般標準版本。
考量因素:
每部電腦需要 2 GiB 或更多 RAM。
控制平面節點至少需要 2 個 CPU。
控制平面節點必須是執行 deb/rpm 相容 Linux OS 的電腦。
Kubernetes 版本和版本扭曲支援原則適用於 kubeadm 和 Kubernetes 整體。 請查看該原則,以了解支援哪些 Kubernetes 和 kubeadm 版本。
管理/自動化
就裸機叢集佈建的自動化和管理而言,有幾個選項可以探索:Ansible 和 Metal3。
Ansible 提供簡單的方法來管理遠端資源,因此是管理遠端節點以及將遠端節點加入至 Kubernetes 叢集的主要候選項目。 您只需要 Ansible 二進位檔 (在 Linux 電腦上執行),以及遠端電腦上的 SSH 即可。 此方法提供彈性的機制,可在目標電腦上執行任意指令碼,這表示您可以搭配上述任何工具使用 Ansible。
Metal3 採用不同的方法來解決此問題,方法是使用叢集 API 的類似概念。 您需要具現化暫時性叢集,才能使用原生 Kubernetes 物件來佈建和管理裸機叢集。 在撰寫本文時,Metal3 會使用 kubeadm,因此不支援輕量型 Kubernetes 發行版本。
針對叢集佈建以外的管理,請考慮了解已啟用 Azure Arc 的叢集來管理 Azure 中的叢集。
下一步
如需詳細資訊,請參閱下列文章: