【51CTO.com快译】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具有自治性,即使没有采取任何管理措施,也能确保仲裁得到维护。
原文标题:Exploring Microk8s, the Lightweight Kubernetes Distribution from Canonical,作者:Janakiram MSV
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】