照片由 Shubham Dhage 在 Unsplash 提供
MicroK8s 是一个用于部署和运行 Kubernetes 集群的用户友好型软件包。它由 Ubuntu 背后的公司 Canonical 开发,但也可以在其他 Linux 系统上运行,甚至可以在 Windows 和 MacOS 上运行。基本的 MicroK8s 集群部署仅使用 540 MB 的内存,但显然你需要更多的内存来运行集群中的工作负载。你可以在个人电脑上安装 MicroK8s,或者如果你想长期运行它,可以在服务器上安装。如今,你可以以低廉的价格获得一个 VPS。
根据其官网介绍,MicroK8s 适合运行生产级别的集群。你可以在多台机器上安装它,并将节点加入到一个高可用性集群中。我个人不知道有谁在生产环境中使用 MicroK8s——大多数公司依赖于像 AWS、Azure 和 GCP 这样的大型云提供商。在这篇文章中,我将重点介绍如何运行一个简单的集群,你可以用它来试验 Kubernetes 或运行一些不太重要的工作负载。这将不会是一个一步一步的教程,而是一个关于 MicroK8s 提供的功能概览。
安装完 snap install
后,你可以运行 microk8s status
检查集群是否正常运行。
MicroK8s 运行状态和插件列表
如果集群没有运行,你可以通过一个命令启动它:microk8s start
。要停止它,运行 microk8s stop
。默认情况下,MicroK8s 会在你的操作系统启动时自动运行,因此你不必担心重启问题。当集群在重启后再次启动时,旧的状态将会被恢复——不会丢失任何数据。有关如何安装 MicroK8s 的详细步骤可以在这里找到:这里。如果你不使用 Linux,可以在这里查看:这里。
MicroK8s 提供了通过 microk8s kubectl
访问 Kubernetes API 的简单方法。它是使用你的 MicroK8s 集群 Kubeconfig 的正常 kubectl
命令行界面。让我们使用 CLI 进行一个简单的部署。
使用 Kubectl 创建部署
如果你想从外部访问集群或使用主机机器上的 kubectl
,你需要提取 Kubeconfig。命令 microk8s config
将输出 Kubeconfig 文件,你可以直接复制粘贴到你需要的地方。请注意,这个 Kubeconfig 文件具有集群的管理员权限。此外,为了从外部访问你的集群,你需要配置主机的防火墙以允许流量通过到 Kubernetes API。
MicroK8s 提供了许多有用的内置插件。我将介绍其中一些。
这是最基本的插件,它启用了内部DNS(CoreDNS)。没有它,Kubernetes Service
资源将无法将流量路由到Pod。你应该启用这个插件。此外,其他网络插件也需要这个插件。
此插件将安装 NGINX Ingress Controller。现在你可以创建 Ingress
资源,并从集群外部访问集群服务。
如果你正在部署数据库或其他需要持久存储的应用程序,你应该启用此插件。它将启用绑定到节点存储的PVC的创建,即主机路径存储。将PVC的storageClassName
设置为microk8s-hostpath
,PVC将在主机机器上的一个目录中存储。
此插件启用了基于角色的集群访问控制。现在您可以创建角色和角色绑定。请注意,您需要自行实现用户认证。
如果你还没有 Docker 注册表,可以使用内置的注册表。注册表将在集群内的 32000
端口部署。因此,要将 Docker 镜像推送到注册表,需要像 localhost:32000/app:tag
这样标记它。
Metrics Server 允许你使用 kubectl top
命令快速检查节点和 Pod 的基本指标。你可以查看 CPU 和内存的使用情况。这些指标也被 Kubernetes 用于自动扩展部署。
为了更好地概览指标,可以启用 Prometheus 插件,该插件将部署 Prometheus Server 到集群中。此外,指标可以被发送到 集群外部。
有更多的内置插件,如 Host Access , Minio , MetalLB , NVIDIA GPU 等。完整列表请参见 这里。
社区插件使你可以启用由社区制作的插件。这些插件可以安装第三方服务,如 Argo CD , Istio , Knative , ngrok , Portainer , Trivy 等。完整列表在这里:这里。
Kubernetes 集群的版本由 MicroK8s snap 包的版本决定。因此,要升级 Kubernetes,你需要升级 snap 包,即选择不同的 snap 通道。一个通道代表一个 Kubernetes 的次要版本。例如,通道 1.29/stable
运行的是 Kubernetes 1.29。补丁版本会由 snap 在后台自动更新。因此,要从 1.29 升级到 1.30,你可以运行如下命令:
snap refresh microk8s --channel=1.30/稳定
永远不要跳过版本——始终一次只升级一个小版本。
Canonical 提供了不同级别的通道。stable
通道跟踪稳定版的 Kubernetes 发布,但会延迟一周。beta
通道跟踪测试版的 Kubernetes 发布,延迟仅几个小时,而 edge
通道则跟踪 alpha 版本的发布。还有 candidate
通道,它跟踪即将发布的候选版本的 Kubernetes。这些是即将作为稳定版本发布的 Kubernetes 版本。大多数情况下,你会使用 stable
通道。
我使用 MicroK8s 在 Ubuntu VPS 上运行自己的 Kubernetes 集群。当你想要快速部署一些简单的项目并将其暴露给全世界时,这非常有用。它实际上相当可靠,而且不会占用太多系统资源。唯一的缺点是需要使用 snap 来安装它——它不能与其他包管理器一起使用。如前所述,MicroK8s 通常不用于生产环境,但你可以尝试他们的 HPA 集群,看看是否适合你。与大型云提供商的 Kubernetes 服务相比,MicroK8s 的一个优势是,几乎可以在 Kubernetes 发布后立即获得最新版本。感谢阅读,希望你现在对 Canonical 的 MicroK8s 有了更好的了解。这是一个相当简单的工具,用于部署你自己的 Kubernetes 集群,包括一些对集群有用的插件。