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具有自治性,即使沒有采取任何管理措施,也能確保仲裁得到維護。
課程推薦: