本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
在 Linux 上使用 Microk8s 本地執行 Kubernetes
本文是關於 Linux 本地部署選項的系列文章中的第二篇,介紹了 MicroK8s。Microk8s 是一個即點即用解決方案,用於在本地部署 Kubernetes 叢集,最初由 Ubuntu 的發行商 Canonical 開發。
Minikube 通常為 Kubernetes 叢集啟動一個本地虛擬機器 (VM),而 MicroK8s 不需要虛擬機器。它使用 snap 包,這是一種應用程式打包和隔離技術。
這種差異既有優點也有缺點。在這裡,我們將討論一些有趣的差異,並比較基於虛擬機器的方法和非虛擬機器方法的優點。第一個因素是跨平臺可移植性。Minikube 虛擬機器可跨作業系統移植——它不僅支援 Linux,還支援 Windows、macOS,甚至 FreeBSD——而 Microk8s 需要 Linux,並且只在那些支援 snap 的發行版上才能執行。大多數流行的 Linux 發行版都受支援。
需要考慮的另一個因素是資源消耗。雖然虛擬機器裝置提供了更高的可移植性,但它確實意味著您將消耗更多資源來執行虛擬機器,這主要是因為虛擬機器附帶一個完整的作業系統,並在管理程式之上執行。當虛擬機器處於休眠狀態時,您將消耗更多磁碟空間。當它執行時,您將消耗更多 RAM 和 CPU。由於 Microk8s 不需要啟動虛擬機器,您將擁有更多資源來執行您的工作負載和其他應用程式。鑑於其更小的佔用空間,MicroK8s 非常適合物聯網裝置——您甚至可以在 Raspberry Pi 裝置上使用它!
最後,這些專案似乎遵循不同的釋出節奏和策略。MicroK8s 和一般的 snap 都提供了通道,允許您使用 Kubernetes 新發布的測試版和釋出候選版本,以及之前的穩定版本。Microk8s 通常會立即釋出上游 Kubernetes 的穩定版本。
但等等,還有更多!Minikube 和 MicroK8s 都始於單節點叢集。本質上,它們允許您建立一個具有單個工作節點的 Kubernetes 叢集。這種情況即將改變——MicroK8s 的早期 Alpha 版本包含叢集功能。有了這個功能,您可以建立任意數量工作節點的 Kubernetes 叢集。這實際上是一個建立叢集的無偏見選項——開發人員必須在節點之間建立網路連線,並與可能需要的其他基礎設施(如外部負載均衡器)整合。總而言之,MicroK8s 提供了一種快速簡便的方法,可以將少量計算機或虛擬機器轉變為多節點 Kubernetes 叢集。我們將在未來的文章中詳細介紹這種架構。
免責宣告
這不是 MicroK8s 的官方指南。您可以在其官方網頁上找到有關執行和使用 MicroK8s 的詳細資訊,其中涵蓋了不同的用例、作業系統、環境等。相反,本文的目的是提供在 Linux 上執行 MicroK8s 的清晰易懂的指南。
先決條件
需要一個支援 snap 的 Linux 發行版。在本指南中,我們將使用 Ubuntu 18.04 LTS,它開箱即用地支援 snap。如果您有興趣在 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
