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