本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
在 Linux 上使用 Microk8s 本地运行 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 非常适合物联网设备——您甚至可以在 Raspberry Pi 设备上使用它!
最后,这些项目似乎遵循不同的发布节奏和策略。MicroK8s 和一般的 snap 都提供了通道,允许您使用 Kubernetes 新发布的测试版和发布候选版本,以及之前的稳定版本。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 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 部署安装
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
