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

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

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

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

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

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

MicroK8s 为您提供了熟悉 Kubernetes 的最佳方式之一,而且摩擦最小。它是云原生计算基金会 (CNCF) 上游认证的 Kubernetes,可确保 Kubernetes 的实现符合指定的行业标准并具有互操作性。

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

sudo snap install microk8s --classic

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

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

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

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

然后,运行以下命令:

sudo ufw default allow routed

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

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

sudo usermod -aG microk8s $USER

此外,让您的当前用户成为~/.kube目录的所有者。

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

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

newgrp microk8s

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

microk8s enable dns dashboard storage

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

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

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

microk8s status

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

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

microk8s kubectl get all --all-namespaces

从上面命令的输出中,您会注意到kubernetes-dashboard服务在 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 工作负载、服务、配置、集群等的概览。

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

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

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

microk8s kubectl scale deployment microbot --replicas=2

创建服务以公开微型机器人部署。

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

我们现在已经在名称service/microbot-service下部署了两个 microbot pod 。您可以通过运行以下命令查看 microbot 服务和其他服务的详细信息:

microk8s kubectl get all --all-namespaces

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

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

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

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

标签: Ubuntu 应用程序开发