本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

在 Linux 上使用 Microk8s 本機執行 Kubernetes

本文是關於 Linux 上本機部署選項系列的第二篇,涵蓋了 MicroK8s。Microk8s 是用於在本機部署 Kubernetes 叢集的點擊即執行解決方案,最初由 Ubuntu 發行商 Canonical 開發。

雖然 Minikube 通常會為 Kubernetes 叢集啟動本機虛擬機器 (VM),但 MicroK8s 不需要 VM。它使用 snap 封裝,這是一種應用程式封裝和隔離技術。

這種差異各有優缺點。在這裡,我們將討論一些有趣的差異,並比較基於 VM 方法和非 VM 方法的優點。首先要考慮的因素之一是跨平台可攜性。雖然 Minikube VM 可跨作業系統移植 - 它不僅支援 Linux,還支援 Windows、macOS 甚至 FreeBSD - 但 MicroK8s 需要 Linux,並且僅限於那些支援 snaps 的發行版本。大多數流行的 Linux 發行版本都受到支援。

另一個要考慮的因素是資源消耗。雖然 VM 設備為您提供更高的可攜性,但這確實意味著您將消耗更多資源來執行 VM,主要是因為 VM 附帶完整的作業系統,並在 Hypervisor 之上執行。當 VM 處於閒置狀態時,您將消耗更多磁碟空間。當 VM 執行時,您將消耗更多 RAM 和 CPU。由於 MicroK8s 不需要啟動虛擬機器,因此您將有更多資源來執行您的工作負載和其他應用程式。鑑於其較小的佔用空間,MicroK8s 非常適合 IoT 裝置 - 您甚至可以在 Raspberry Pi 裝置上使用它!

最後,這些專案似乎遵循不同的發布節奏和策略。MicroK8s 和 snaps 通常提供 channels,讓您可以取用 Kubernetes 新版本的 Beta 版和候選發行版,以及之前的穩定發行版。MicroK8s 通常幾乎立即發布上游 Kubernetes 的穩定發行版。

但是等等,還有更多!Minikube 和 MicroK8s 最初都是單節點叢集。基本上,它們允許您建立具有單個工作節點的 Kubernetes 叢集。這種情況即將改變 - MicroK8s 的早期 Alpha 版本包含叢集功能。借助此功能,您可以建立具有任意多個工作節點的 Kubernetes 叢集。這實際上是建立叢集的一個非預設選項 - 開發人員必須建立節點之間的網路連線,以及與可能需要的其他基礎架構(如外部負載平衡器)整合。總之,MicroK8s 提供了一種快速簡便的方法,可將少數電腦或 VM 變成多節點 Kubernetes 叢集。我們將在未來的文章中撰寫更多關於這種架構的文章。

免責聲明

這不是 MicroK8s 的官方指南。您可以在其官方 網頁上找到關於執行和使用 MicroK8s 的詳細資訊,其中涵蓋了不同的使用案例、作業系統、環境等。相反,本文的目的是為在 Linux 上執行 MicroK8s 提供清晰易懂的指南。

先決條件

需要支援 snaps 的 Linux 發行版本。在本指南中,我們將使用 Ubuntu 18.04 LTS,它開箱即用就支援 snaps。如果您有興趣在 Windows 或 Mac 上執行 MicroK8s,您應該查看 Multipass,以啟動快速 Ubuntu VM 作為在您的系統上執行虛擬 Ubuntu 的官方方式。

MicroK8s 安裝

MicroK8s 安裝非常簡單

sudo snap install microk8s --classic

上面的命令在幾秒鐘內安裝本機單節點 Kubernetes 叢集。命令執行完成後,您的 Kubernetes 叢集即已啟動並執行。

您可以使用以下命令驗證 MicroK8s 狀態

sudo microk8s.status

使用 microk8s

使用 MicroK8s 與安裝它一樣簡單。MicroK8s 本身包含一個 kubectl 二進制檔案,可以通過執行 microk8s.kubectl 命令來訪問。例如

microk8s.kubectl get nodes

雖然使用前綴 microk8s.kubectl 允許並行安裝另一個系統範圍的 kubectl 而不會產生影響,但您可以使用 snap alias 命令輕鬆擺脫它

sudo snap alias microk8s.kubectl kubectl

這將允許您之後簡單地使用 kubectl。您可以使用 snap unalias 命令還原此變更。

kubectl get nodes

MicroK8s 附加元件

使用 MicroK8s 的最大優勢之一是它還支援各種附加元件和擴充功能。更重要的是,它們是開箱即用的,用戶只需啟用它們即可。

可以通過執行 microk8s.status 命令來檢查擴充功能的完整列表

sudo microk8s.status

在撰寫本文時,支援以下附加元件

社群一直在創建和貢獻更多附加元件,經常查看絕對有幫助!

發布渠道

sudo snap info microk8s

安裝範例應用程式

在本教程中,我們將使用 NGINX 作為範例應用程式(官方 Docker Hub 映像)。

它將作為 Kubernetes 部署安裝

kubectl create deployment nginx --image=nginx

為了驗證安裝,讓我們執行以下命令

kubectl get deployments
kubectl get pods

此外,我們可以檢索 Kubernetes 叢集中所有可用物件的完整輸出

kubectl get all --all-namespaces

解除安裝 MicroK8s

解除安裝您的 microk8s 叢集就像解除安裝 snap 一樣容易

sudo snap remove microk8s

螢幕錄影

asciicast