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 将取决于您的团队的能力以及要部署到生产环境的软件的规模。