走近來自Canonical的輕量級Kubernetes發(fā)行版:Microk8s
譯文【51CTO.com快譯】Microk8s是Canonical發(fā)布的一款小型、輕量級、完全符合標準的Kubernetes發(fā)行版。這款簡約的發(fā)行版專注于簡潔和性能。由于占用資源少,Microk8s可以輕松部署在物聯(lián)網(wǎng)和邊緣設備端。
Canonical已將Microk8s包裝成snap,這是該公司的Linux軟件包管理器。snap捆綁了應用程序及無需修改即可在許多不同的Linux發(fā)行版上運行的依賴項。snap是獨立的應用程序,可在沙盒中運行,通過中介訪問主機系統(tǒng)。snap已成為通常在基于Debian的發(fā)行版中使用的標準.deb軟件包之外的替代方案。包裝成snap的應用程序可以輕松安裝和卸載。
除了最新版本的Ubuntu外,snap還可以部署在各種平臺上,包括Linux Mint、Raspberry Pi OS和Arch Linux。
由于Microk8s基于snap,因此可以通過單個命令輕松部署。比如在Ubuntu 18.04上,sudo snap install microk8s --classic可安裝功能完備的單節(jié)點Kubernetes集群。對于任何運行snapd(snap軟件包管理器的守護程序)的平臺而言,安裝過程都一樣:
還可以通過下載并安裝snap,在嚴加保護的離線環(huán)境中安裝Microk8s。獨立的snap文件大小約200MB:
在macOS上運行Microk8s
Microk8s可以通過Multipass(Canonical的虛擬機管理器)安裝在macOS和微軟Windows上。Multipass利用了底層的虛擬機管理程序,比如Windows中的Hyper-V和macOS中的hyperkit。
Microk8s CLI抽象化了創(chuàng)建虛擬機和安裝snap所涉及的命令。Homebrew安裝完畢后,以下命令將在macOS上啟動單節(jié)點Microk8s:
- brew install ubuntu/microk8s/microk8s
如果您想了解涉及的工作流程,嘗試以下命令來安裝Multipass,然后再安裝Microk8s:
- brew cask install multipass
- multipass launch --name microk8s --mem 4G --disk 40G
等到虛擬機創(chuàng)建完畢,然后通過SSH連接到它:
- multipass shell microk8s
繼續(xù)安裝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
想從主機訪問單個節(jié)點集群,不妨拷貝kubeconfig文件:
- multipass transfer microk8s:/home/ubuntu/.kube/config ~/.kube/microk8s-config
- export KUBECONFIG=~/.kube/microk8s-config
您現(xiàn)在可以使用kubectl從macOS訪問Microk8s。
使用附件擴展Microk8s功能
為了使部署占用的資源較少,Microk8s附帶與控制面板有關的最必要的組件。這意味著默認安裝沒有存儲和網(wǎng)絡插件、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增加了高可用性,使其可以隨時部署到生產(chǎn)環(huán)境。至少部署三個節(jié)點后,Microk8s會自動擴展控制平面,以便在多個節(jié)點上運行API服務。
在典型的高可用性(HA)部署場景中,etcd用作鍵/值數(shù)據(jù)庫以維護集群狀態(tài)。 Microk8s使用Dqlite分布式版本和SQLite的高可用性版本。
HA MicroK8只需要集群中的三個或更多節(jié)點,此時Dqlite會自動變成高可用性。如果群集有三個以上的節(jié)點,那么額外節(jié)點將是數(shù)據(jù)存儲系統(tǒng)的備用節(jié)點,如果數(shù)據(jù)存儲系統(tǒng)丟失了其中一個節(jié)點,會自動升級。備用節(jié)點自動升級到Dqlite的仲裁集群使MicroK8s HA具有自治性,即使沒有采取任何管理措施,也能確保仲裁得到維護。
原文標題:Exploring Microk8s, the Lightweight Kubernetes Distribution from Canonical,作者:Janakiram MSV
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】