首頁>技術>

Microk8s是Canonical釋出的一款小型、輕量級、完全符合標準的Kubernetes發行版。這款簡約的發行版專注於簡潔和效能。由於佔用資源少,Microk8s可以輕鬆部署在物聯網和邊緣裝置端。

Canonical已將Microk8s包裝成snap,這是該公司的Linux軟體包管理器。snap捆綁了應用程式及無需修改即可在許多不同的Linux發行版上執行的依賴項。snap是獨立的應用程式,可在沙盒中執行,透過中介訪問主機系統。snap已成為通常在基於Debian的發行版中使用的標準.deb軟體包之外的替代方案。包裝成snap的應用程式可以輕鬆安裝和解除安裝。

除了最新版本的Ubuntu外,snap還可以部署在各種平臺上,包括Linux Mint、Raspberry Pi OS和Arch Linux。

由於Microk8s基於snap,因此可以透過單個命令輕鬆部署。比如在Ubuntu 18.04上,sudo snap install microk8s --classic可安裝功能完備的單節點Kubernetes叢集。對於任何執行snapd(snap軟體包管理器的守護程式)的平臺而言,安裝過程都一樣:

還可以透過下載並安裝snap,在嚴加保護的離線環境中安裝Microk8s。獨立的snap檔案大小約200MB:

在macOS上執行Microk8s

Microk8s可以透過Multipass(Canonical的虛擬機器管理器)安裝在macOS和微軟Windows上。Multipass利用了底層的虛擬機器管理程式,比如Windows中的Hyper-V和macOS中的hyperkit。

Microk8s CLI抽象化了建立虛擬機器和安裝snap所涉及的命令。Homebrew安裝完畢後,以下命令將在macOS上啟動單節點Microk8s:

brew install ubuntu/microk8s/microk8s 

如果您想了解涉及的工作流程,嘗試以下命令來安裝Multipass,然後再安裝Microk8s:

brew cask install multipass multipass launch --name microk8s --mem 4G --disk 40G 

等到虛擬機器建立完畢,然後透過SSH連線到它:

multipass shell microk8s 

繼續安裝Microk8s:

sudo snap install microk8s --classic sudo iptables -P FORWARD ACCEPT 

配置虛擬機器,生成kubeconfig檔案:

sudo usermod -a -G microk8s ubuntu  sudo chown -f -R ubuntu ~/.kube  su - $USER  sudo iptables -P FORWARD ACCEPT  microk8s config > ./kube/config 

想從主機訪問單個節點叢集,不妨複製kubeconfig檔案:

multipass transfer microk8s:/home/ubuntu/.kube/config ~/.kube/microk8s-config export KUBECONFIG=~/.kube/microk8s-config 

您現在可以使用kubectl從macOS訪問Microk8s。

使用附件擴充套件Microk8s功能

為了使部署佔用的資源較少,Microk8s附帶與控制面板有關的最必要的元件。這意味著預設安裝沒有儲存和網路外掛、DNS、Kubernetes儀表板及其他預期的元件。

Canonical為Microk8s添加了許多元件,作為可選的附件。可以透過microk8s enable/disable命令來啟用和禁用它們。

比如說,只需一個命令即可新增Kubernetes儀表板。如果您在Multipass虛擬機器中執行Microk8s,從外殼執行以下命令:

microk8s enable dashboard 

獲得與服務帳戶有關的預設令牌以訪問儀表板:

token=$(kubectl -n kube-system get secret | grep default-token | cut -d " " -f1) kubectl -n kube-system describe secret $token 

使用以下命令從主機訪問儀表板:

kubectl port-forward -n kube-system service/kubernetes-dashboard 9443:443 

配置和部署高可用性的Microk8s叢集

最近,Canonical為Microk8s增加了高可用性,使其可以隨時部署到生產環境。至少部署三個節點後,Microk8s會自動擴充套件控制平面,以便在多個節點上執行API服務。

在典型的高可用性(HA)部署場景中,etcd用作鍵/值資料庫以維護叢集狀態。 Microk8s使用Dqlite分散式版本和SQLite的高可用性版本。

HA MicroK8只需要叢集中的三個或更多節點,此時Dqlite會自動變成高可用性。如果群集有三個以上的節點,那麼額外節點將是資料儲存系統的備用節點,如果資料儲存系統丟失了其中一個節點,會自動升級。備用節點自動升級到Dqlite的仲裁叢集使MicroK8s HA具有自治性,即使沒有采取任何管理措施,也能確保仲裁得到維護。

課程推薦:

32
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 圖解 Flink Checkpoint 原理及其最佳化