为什么 Docker Swarm 更适合家庭自动化用户

最近我一直在研究如何在家里设置 DIY 私有云基础设施。 特别以下三个选项:

我的目标很简单:

  • 利用我现有的计算硬件:1 个 intel NUC 和 1 个 raspberry pi 3B
  • 高可用性
  • 容易从我当前的 docker compose 文件、持久性存储和 MariaDB 数据库轻松迁移

我当前的家庭网络拓扑如下图所示。 它主要用于家庭自动化和 NAS 以及一些轻型网络托管应用程序。 主要的动力是一个英特尔 NUC 迷你电脑,它运行着一堆连接到 USB zwave 棒的 docker 应用程序容器。 Raspberry Pi 3B 充当运行 Adguardhome 的主要 DNS 服务器。 我还发现有必要在 NUC 上运行辅助 DNS 服务器作为备份,以防 Raspberry 出现故障。

Home Network Diagram

Ubuntu 20.04 LTS 在 NUC 和 Raspberry Pi 3B 上运行。 这里不赘述在 NUC 上的安装过程,因为它是标准 PC 并且具有不错的 RAM 和 CPU。 以下是对 Raspberry Pi 3B 使用上述三个选项的结果。

Installation on Raspberry Pi 3 B Performance
k3s ❌ 安装命令冻结,无法继续 N/A
microk8s ❌ 仅使用 snap stable channel=1.18 成功安装 由于可能内存不足而无法使用
docker swarm ✅ 使用命令行 docker swarm init安装成功 NUC作为管理节点,Raspberry作为工作节点,都正常工作

由于 RAM 较大(>2GB),大多数在线文章都推荐使用 Raspberry Pi 4 来尝试容器编排。 很明显,现在即使是像 k3s 和 microk8s 这样声称具有内存效率的软件也变得越来越需要内存,这对像 Raspberry Pi 3B 这样的老式 SoC 设备一点也不友好。

作为家庭自动化用户,我倾向于连接尽可能多的设备,最好包括像树莓这样的低功耗设备,以减少能源使用足迹。 像 k3s 和 microk8s 这样的最小容器编排功能丰富但使用起来很复杂,并且对家庭用户具有深度学习曲线。 除非您已经有几台功能强大的旧 PC 和笔记本电脑来运行它们,否则 docker swarm 模式仍然是容器编排的更好方法,以实现 DIY 目的的高可用性。 从 docker 到 docker swarm 的迁移也很简单。 它们都使用 docker compose 格式,并且只需要一些额外的语法即可部署到 swarm 基础设施。

总之,docker swarm 对于家庭用户来说是理想的,并且比其他竞争对手更好,原因如下:

  • 简单的安装和配置
  • 最小的内存使用和功耗(可能是最轻的容器编排)
  • 对所有类型的硬件基础设施(x86、arm 等)的最佳兼容性
  • 对现有 docker 用户最友好和本地化
comments powered by Disqus

翻译: