这篇文章已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不正确。
使用 Microk8s 在 Linux 本地运行 Kubernetes
这篇文章是关于 Linux 本地部署选项的系列文章的第二篇,涵盖了 MicroK8s。Microk8s 是一个即点即用解决方案,用于在本地部署 Kubernetes 集群,最初由 Ubuntu 的发行商 Canonical 开发。
Minikube 通常会为 Kubernetes 集群启动一个本地虚拟机 (VM),而 MicroK8s 不需要 VM。它使用 snap 包,这是一种应用打包和隔离技术。
这种差异各有利弊。在这里我们将讨论一些有趣的不同之处,并比较基于 VM 的方法和非基于 VM 的方法的优势。首要因素之一是跨平台可移植性。虽然 Minikube VM 可跨操作系统移植——它不仅支持 Linux,还支持 Windows、macOS,甚至 FreeBSD——但 Microk8s 需要 Linux,并且仅支持支持 snaps 的发行版。大多数流行的 Linux 发行版都受支持。
另一个需要考虑的因素是资源消耗。虽然 VM 设备提供了更高的可移植性,但这确实意味着你需要消耗更多资源来运行 VM,这主要是因为 VM 包含完整的操作系统,并运行在虚拟机管理程序之上。VM 处于休眠状态时会消耗更多磁盘空间。运行期间会消耗更多 RAM 和 CPU。由于 Microk8s 不需要启动虚拟机,因此你将拥有更多资源来运行你的工作负载和其他应用。鉴于其占用空间更小,MicroK8s 非常适合 IoT 设备——你甚至可以在 Raspberry Pi 设备上使用它!
最后,这些项目似乎遵循着不同的发布节奏和策略。MicroK8s 以及通常的 snaps 提供通道,让你能够获取新发布的 Kubernetes 的 Beta 和发布候选版本,以及之前的稳定版本。Microk8s 通常会在上游 Kubernetes 稳定版本发布后几乎立即发布。
但等等,还有更多内容!Minikube 和 MicroK8s 最初都作为单节点集群启动。本质上,它们允许你创建一个只有一个工作节点的 Kubernetes 集群。这种情况即将改变——MicroK8s 有一个包含集群功能的早期 Alpha 版本。凭借此功能,你可以创建任意多个工作节点的 Kubernetes 集群。这实际上是一种创建集群的非限定性选项——开发者必须创建节点之间的网络连接,并集成可能需要的其他基础设施,如外部负载均衡器。总之,MicroK8s 提供了一种快速简便的方法,可以将少量计算机或 VM 变成多节点 Kubernetes 集群。我们将在后续文章中详细介绍这种架构。
免责声明
这不是 MicroK8s 的官方指南。你可以在其官方网页上找到关于运行和使用 MicroK8s 的详细信息,其中涵盖了不同的用例、操作系统、环境等。本文的目的是提供在 Linux 上运行 MicroK8s 的清晰简单的指南。
前提条件
需要支持 snaps 的 Linux 发行版。在本指南中,我们将使用 Ubuntu 18.04 LTS,它开箱即用支持 snaps。如果你有兴趣在 Windows 或 Mac 上运行 Microk8s,你应该查看 Multipass,以启动一个快速的 Ubuntu VM,这是在你的系统上运行虚拟 Ubuntu 的官方方式。
MicroK8s 安装
MicroK8s 安装非常简单
sudo snap install microk8s --classic

上述命令可在几秒钟内安装一个本地单节点 Kubernetes 集群。命令执行完成后,你的 Kubernetes 集群即可运行。
你可以使用以下命令验证 MicroK8s 状态
sudo microk8s.status

使用 microk8s
使用 MicroK8s 和安装它一样简单。MicroK8s 本身包含一个 kubectl
二进制文件,可以通过运行 microk8s.kubectl
命令来访问。例如:
microk8s.kubectl get nodes

虽然使用前缀 microk8s.kubectl
可以在不影响其他系统范围的 kubectl 并行安装的情况下使用,但你可以轻松地使用 snap alias
命令去掉这个前缀:
sudo snap alias microk8s.kubectl kubectl
这样之后你就可以直接使用 kubectl
了。你可以使用 snap unalias
命令恢复此更改。

kubectl get nodes

MicroK8s 附加组件
使用 Microk8s 的最大好处之一是它还支持各种附加组件和扩展。更重要的是,它们都是开箱即用的,用户只需启用即可。
可以通过运行 microk8s.status
命令查看完整的扩展列表:
sudo microk8s.status
截至本文撰写时,支持以下附加组件:

社区一直在创建和贡献更多附加组件,经常查看绝对会有帮助!
发布通道
sudo snap info microk8s

安装示例应用
在本教程中,我们将使用 NGINX 作为示例应用(官方 Docker Hub 镜像)。
它将作为一个 Kubernetes Deployment 安装
kubectl create deployment nginx --image=nginx
要验证安装,请运行以下命令:
kubectl get deployments
kubectl get pods

此外,我们可以检索 Kubernetes 集群中所有可用对象的完整输出:
kubectl get all --all-namespaces

卸载 MicroK8s
卸载你的 microk8s 集群就像卸载 snap 一样简单
sudo snap remove microk8s
