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