如何在 Ubuntu 上使用 MicroK8s 设置本地 Kubernetes 实例

DevOps 极大地改变了软件工程师和开发人员开发和部署应用程序的方式。 这场革命的核心技术之一是 Kubernetes。

让我们探索如何使用 MicroK8s (MicroKates) 在 Ubuntu 上安装 Kubernetes 的本地实例。 有了这个设置,您可以轻松地以安全、可靠和高度可扩展的方式托管容器应用程序。

为什么使用 MicroK8s?

Kubernetes 是一个开源平台,通过自动化部署、扩展和管理容器化应用程序来帮助简化 DevOps 操作。 Kubernetes 也俗称 K8s,这个名字来源于计算它们之间的八个字母 ķs 以 Kubernetes 的名义。 将 MicroK8s 视为 Micro Kubernetes 实例。

大多数运行 Ubuntu 的公共和私有生产级云环境都使用 Charmed Kubernetes 来管理容器化应用程序。 然而,Charmed Kubernetes 面临的挑战是它需要大量资源,并且需要具备良好的知识水平才能正确配置。

这就是 MicroK8s 的用武之地。MicroK8s 是一个小型轻量级的上游 Kubernetes,可以在开发人员的 PC、物联网设备或边缘设备上原生运行,无需虚拟机。 MicroK8s 是跨平台的,可以在 Intel 和 ARM 架构上运行。

MicroK8s 为您提供了熟悉 Kubernetes 的最佳方式之一,并且摩擦最小。 它是由上游认证的 Kubernetes Cloud Native Computing Foundation (CNCF),确保 Kubernetes 的实现符合指定的行业标准且可互操作。

第 1 步:在 Ubuntu 上安装 MicroK8s

您可以使用 snap 命令在 Ubuntu 上轻松安装 MicroK8s。

sudo snap install microk8s --classic

或者,您可以使用 Ubuntu 软件中心从 GUI 安装 MicroK8s。 只需搜索 microk8s 然后点击 安装 按钮。

第 2 步:为 MicroK8s 配置防火墙

为了确保 Pod 之间以及与 Internet 的无缝通信,您应该在防火墙的容器网络接口上启用传入和传出通信。

Pod 是 Kubernetes 中最小的可部署计算单元; 它可以是单个或一组具有共享存储和网络资源等的容器。

sudo ufw allow in on cni0 && sudo ufw allow out on cni0

然后,运行以下命令:

sudo ufw default allow routed

第 3 步:将您的用户添加到 MicroK8s 组

目前,您必须使用 sudo 命令来运行大多数 MicroK8s 命令。 虽然这在生产服务器上是一个很好的安全措施,但在开发机器上可能不是必需的。

将您的用户添加到 MicroK8s 组以避免使用 sudo.

sudo usermod -aG microk8s $USER

另外,使您当前的用户成为 ~/.kube 目录。

sudo chown -f -R $USER ~/.kube

要使更改生效,请运行以下命令重新加载用户组:

newgrp microk8s

第 4 步:启用重要插件

默认情况下,MicroK8s 包含在边缘和物联网设备上实现最小占用空间的最低限度。 但是,您可以安装一些重要的插件来管理 MicroK8s 服务。 启用 DNS、仪表板和存储加载项 microk8s 命令。

microk8s enable dns dashboard storage

其他服务可能需要 DNS 插件,因此建议始终启用它。

仪表板插件为您提供 MicroK8s 中服务的图形概览; 您还可以使用它来管理服务。

您可以通过运行以下命令查看可用的 MicroK8s 插件列表:

microk8s status

第 5 步:查看 MicroK8s 仪表板

现在您已启用仪表板插件,您可以从 Web 浏览器轻松访问 MicroK8s 仪表板。

首先,您需要仪表板 pod 的 IP 地址。 您可以通过运行以下命令来获取它:

microk8s kubectl get all --all-namespaces

从上面命令的输出中,您会注意到 Kubernetes-仪表板 服务在 IP 地址 10.152.183.35 上运行,并且正在侦听 TCP 端口 443。请注意,此 IP 地址可能与仪表板服务使用的 IP 地址不同,因为它是随机生成的。

在浏览器中,转到列出的 IP 地址。 在这种情况下,它将是 https://10.152.183.35:443. 确保指向正确的 URL。

出于安全考虑,Kubernetes 仪表板将要求您提供身份验证详细信息以登录。您可以通过运行以下命令访问默认仪表板令牌。 然后复制 kubernetes.io/service-account-token 呈现并将其粘贴到令牌输入中。

token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token

仪表板向您展示了 MicroK8s 工作负载、服务、配置、集群等的概览。

第 6 步:使用 MicroK8s 创建服务

要查看 MicroK8s 的运行情况,让我们创建一个包含两个 pod 的 microbot 服务部署。 使用 kubectl 命令:

microk8s kubectl create deployment microbot --image=dontrebootme/microbot:v1

使用以下命令缩放微型机器人 pod。

microk8s kubectl scale deployment microbot --replicas=2

创建服务以公开 microbot 部署。

microk8s kubectl expose deployment microbot --type=NodePort --port=80 --name=microbot-service

我们现在已经在名称下部署了两个微型机器人 pod 服务/微机器人服务. 您可以通过运行以下命令查看微机器人服务和其他服务的详细信息:

microk8s kubectl get all --all-namespaces

您会注意到 microbot 服务正在 NodePort 上运行,因此,您可以通过 PC 上的浏览​​器访问它。 在这种情况下,服务在随机生成的端口 30353 上运行。

在浏览器中,转到 URL https://localhost:30353, 在哪里 30353 是上面输出中列出的端口号。 确保您使用正确的端口号。

Kubernetes 与 Docker:您应该选择哪一个?

本指南介绍了如何在您的 PC 或边缘设备上本地安装最小占用空间的 Kubernetes。 Kubernetes 是许多开发人员工作流程的一部分,广泛用于在生产中部署大规模容器化应用程序。

Kubernetes 用于轻松管理或编排一组容器,例如 docker 容器。 另一方面,独立 Docker 主要用于管理单个容器。 选择使用 Docker 还是 Kubernetes 将取决于您的团队的能力以及要部署到生产环境的软件的规模。