你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在边缘平台选项中选择裸机 Kubernetes

Azure Kubernetes 服务 (AKS)

如果想要在边缘运行 Kubernetes,并且注意到托管解决方案不完全满足你的要求,则可以将裸机作为一种选项进行探索。 本文档可帮助在边缘配置 Kubernetes 群集时,查找用例的最佳可用选项。

注意

本文并非详尽比较;相反,它提供了基于常见选项之间的主要限制因素进行决策的可能路径。

边缘裸机 Kubernetes 的决策树

在针对边缘裸机 Kubernetes 的以下选项之间做出决策时,请参考以下树。

显示用于决定使用哪些裸机选项的流程图的示意图。

下载此流程图的 Visio 文件

  • MicroK8s:由 Canonical 提供的一致性“低 Ops”Kubernetes

  • K3s:为 IoT 和边缘计算构建的经认证的 Kubernetes 发行版

  • kubeadm:用于创建基础 Kubernetes 群集的 Kubernetes 工具;适用于标准计算 (Linux/Windows)

注意

“低 Ops”是指在抽象化或简化某些操作任务(如自动更新或简化升级)时,操作成本降低。

由 Canonical 提供的 MicroK8s

MicroK8s 作为单个 snap 包提供,可以轻松安装在支持 snap 的 Linux 计算机上。 Windows、macOS 和 raspberry PI/ARM 提供了替代安装项。 安装后,MicroK8s 会创建一个单节点群集,该群集可通过 MicroK8s 工具管理。 它与自己的 kubectl 一起打包,并且可能启用了某些附加产品(例如,helm、dns、ingress、metallb )。 还支持多节点、Windows 节点和高可用性 (HA) 场景。

注意事项:

  • 根据要运行 MicroK8s 的位置,存在各种资源要求。 有关最低资源要求,请参阅产品文档。 例如:

    • Ubuntu:4-GB RAM,20-GB 磁盘空间

    • Windows:4-GB RAM,40-GB 磁盘空间

  • 具有 Calico CNI 的 MicroK8s 群集仅支持 Windows 工作负载。

  • MicroK8s 多节点群集上的每个节点都需要自己的工作环境,而不管它是单台计算机上的单独 VM 或容器,还是同一网络上的不同计算机。

  • 在某些 ARM 硬件上运行 MicroK8s 时,可能会出现困难。 请参考文档了解潜在的补救措施。

由 Rancher 提供的 K3s

K3s 是 Kubernetes 的轻量级发行版。 K3s 部署为单个二进制文件,并且附带 kubectl 和 ctr 等嵌入式工具,类似于 MicroK8s。

注意事项:

  • 二进制文件小于 100 MB,但根据场景,仍有最低资源要求。 有关最低资源要求,请参阅文档

  • SQLite3 是默认存储系统,但支持其他选项

  • K3s 当前不支持 Windows 节点。

  • 可以通过外部数据库嵌入式数据库实现 HA。 从版本 v1.19.5+k3s1 开始,K3s 添加了对嵌入式 etcd 的完全支持。

Kubeadm

Kubeadm 是 Kubernetes 的从头开始的普通 vanilla 安装。

注意事项:

  • 每台计算机需要 2 GiB 或更多的 RAM。

  • 控制平面节点上需要至少 2 个 CPU。

  • 控制平面节点必须是运行 deb/rpm 兼容 Linux OS 的计算机。

  • Kubernetes 版本和版本偏斜支持策略适用于 kubeadm 和整体 Kubernetes。 检查该策略以了解支持哪些版本的 Kubernetes 和 kubeadm。

管理/自动化

就裸机群集预配的自动化和管理而言,有几种选项可供探索:Ansible 和 Metal3。

Ansible 提供了一种管理远程资源的简单方法,因此是管理远程节点并将其加入到 Kubernetes 群集的首选选项。 只需在 Linux 计算机上运行的 Ansible 二进制文件,以及远程计算机上的 SSH 即可。 此方法提供了一种在目标计算机上运行任意脚本的灵活机制,这意味着可以将 Ansible 与上述任何工具一起使用。

Metal3 通过利用与群集 API 类似的概念,采用不同的方法来解决此问题。 需要实例化临时群集,以使用本机 Kubernetes 对象预配和管理裸机群集。 在编写本文时,Metal3 使用 kubeadm,因此不支持轻量级 Kubernetes 发行版。

对于群集预配之外的管理,请考虑了解支持 Azure Arc 的群集,以便在 Azure 中管理群集。

后续步骤

有关详细信息,请参阅以下文章: