2021年Netbooting Raspberry PI的状态

2021-04-14 11:15:09

TLDR;当我在2017年尝试NetBooting 24 RPI3S时,它失败了。当我用较新的raspberry pi 4s和K3s建立我的私有云时,找出更改的内容。

在三年前,我写了一个博客文章探索为什么Netbooting对Raspberry PI有趣,并且由于当时可用的固件问题而遇到了什么样的问题。

我的原装有24个早期覆盆子PI 3s,它有一个定时虫,使他们对NetBooting不可靠。

在这篇文章中,我会给你一个更新(现在的东西更好)和我' LL也告诉你我的新钻机,我跑了K3s。

您还可以找到一个链接到我的新研讨会和电子书,它具有用于Netbooting您自己的覆盆子PIS的材料和逐步说明。

我的原始希望是我可以节省24个SD卡的成本和管理。由于其有限的写入周期,这些是众所周知的不可靠性。当在运行Kubernetes的Raspberry Pi群集中使用时,将写入卡片以不断意味着卡最终将失败。

鉴于NetBooting的错误,我所拥有的RPI3的变体,这是让它工作的唯一方法

即使是自动化,它也是闪存,标签和更新24 SD卡的耗时和手动过程。我实际上已经完成了这个过程,并获得了所有节点运行。

我最初在集群上跑了船坞群,在群体脱离时尚之后,Kubernetes接过到将集群带到容器。 Swarm总是轻轻且快速地在覆盆子pi上,使用Kubeadm的Kubernetes总是缓慢而且难以使用。

幸运的是,丹伦牧羊人提出了一种新颖的想法,以便在Kubernetes中采取他没有的东西,并创造了一个"发行版和#34;被称为K3s(3小于8)。

如果Kubeadm为Raspberry PI创建了头痛,K3S将简单的东西具有简单的Boostrap,资源要求,以及用于分发和更新的单个二进制文件。

鉴于我和#39多少; D喜欢" Docker Swarm Init"和" Docker Swarm加入"我决定在K3SUP工具中重新创建类似的K3s的类似体验。

K3SUP通过SSH安装K3S,并通过CLI标志更轻松地创建多服务器配置。

概念性工作流显示安装和加入命令使用ssh的主机名或IP地址运行。

我在Equinix Metal上帮助团队获得他们的开源供应软件Tinkerbell准备好使用。这意味着通过示例来检查他们的工作,构建新示例并提供有关开发人员和用户体验的反馈。

作为项目的一部分,我为新堆栈编写了一个特征长度物品,以将云本机计算(相对新的和时尚区域)的想法链接到裸金属配置(使用相同的基本工具20 - 25年)。

我在云天主世界中裸露的金属也帮助我在TFTP,DHCP和NFS上刷新自己的内存。

我为客户建立的其他一件事是一个GitHub存储库,收集其他开源令人敬畏的aremetal项目:令人敬畏的 - aremetal

当我用Tinkerbell踢出轮胎并用几个英特尔NUCS测试NetBooting时,我对覆盆子PI的兴趣再次激动。随着K3S和我的K3S引导工具K3SUP(' K3SUP')的普及,它似乎是在2017年重新审视问题的好时机。

在2021年,我想采取我在上一年中学到的内容,并将其捆绑成一个人可以追随访问NetBooting的研讨会。我花了大约两周时间来完全理解,文件,自动化和测试设置。

虽然你可以在这里花很多钱,但我很幸运能拥有一个旧的电脑,我可以用作服务器,而Bitscope发给我的套件。注意:2GB覆盆子PI现在只需花费35 USD,您只需要一个尝试速度。

对于初始配置,我使用Intel NUC作为NetBooting服务器,其中包含四个覆盆子PI 4S,每个RAM为2G。这足以运行kubernetes和一些像OpenFaas的工作负载。

我使用了官方32位覆盆子PI操作系统,支持PXE引导。 Ubuntu 20.04(焦点FOSEA),64位操作系统也适用于某些修改,如果要运行仅适用于64位操作系统的项目,则需要进行一些修改。 Raspberry PI能够运行两者,但是社区最好支持和理解32位操作系统。

组装硬件后,该过程涉及到每个节点闪烁新固件,设置引导顺序,配置具有TFTP,NFS,DHCP服务器和IP转发的服务器,以充当路由器。

我使用相同的SD卡闪烁了每个覆盆子PI,然后我可以关闭案例并记下每个MAC地址和序列号的序列。

这是网络拓扑,其中一切都在其自己的子网中运行,在一个单独的LAN和Switch上。

一旦您配置了所有内容,它就' s然后选择案例或机箱以托管您的节点。

Bitscope已向我发送了一个较新版本的产品,称为群集刀片 - 这次只是8个节点。它的目标是Edge Computing,可以安装架。不要将此与上一代称为" Bitscope Blade&#34 ;,为覆盆子PI 3设计。

他们还友好地向我发送了额外的4x节点,以便我可以用8个节点完全填充群集。

这给了我共有40GB的RAM和32个CPU核心。我的NetBooting Server还有一个500GB的NVME为NFS安装并共享,因此也有很多空间。

随着每个节点运行,我观察到通过电源绘制大约30-31瓦的功率。 24节点RPI3群集绘制〜21瓦,因此考虑每个节点的I / O速度和RAM的增加,这似乎是合理的。

BitScope看到这些机架的用例是客户想要从AWS EC2和自己的私有云移开,它们可以在客户站在房地或边缘处运行。

如果应用程序已经在容器中运行,那么它就应该' T取得太多的工作以将其移植到K3s。其中一个棘手的部分位于生态系统中,并确保可用于ARM CPU的所有需要​​运行的东西。

事情比2017年的事情要好得多,带有ARM支持的以下主要组件.js,python 3,去做许多其他人。如果您'重新kubernetes或k3s用户,那么您还可以找到有用的Arkade工具,可用于使用单个命令行发现和安装应用程序。

人们经常问我关于存储。许多现代微服务都是无状态的,而不需要从磁盘读取或写入,但您可能需要底层对象存储或SQL数据库。这就是我在使用OpenFAAS功能时倾向于需要持久存储的地方。

幸运的是,K3S附带一个存储驱动程序,可以使用节点的本地磁盘,并称为本地路径配置程序。有其他选项可用,如OpeneB和Longhorn,但由于我们已经有了NFS,我们也可以使用NFS卷配置器。

有些人是内容,没有进入他们的集群,但我不是那些人之一。如果我需要公开Kubernetes LoadBalancer,那么我希望它有一个公共和可访问的IP地址。因此,我构建了Inlets-Operator,一个Kubernetes控制器,可以配置VM,然后创建网络隧道,以使TCP或HTTPS流量能够从NAT,防火墙和俘虏门户中输入群集。

松散定义,GITOPS(由Alexis Richardson创建)在GIT存储库中存储部署配置以进行连续部署,并且在2021中非常流行。

Johan Siebens写了一个博客文章,显示了Argocd如何用于将GITOPS带到一个或多个覆盆子PI集群,或群集群。 ARGOCD为您的私人覆盆子PI K3S集群

牧场主'舰队项目(另一个Darren' Siling)旨在管理高达100万集群的车队。

无论我在2017年对Netbooting说什么仍然是大的,除了一件事。无论您有一个或100个覆盆子PI,它现在都比以往任何时候都更可靠和更容易。

因此,您拥有许多Raspberry PIS,通过网络引导意味着您即使只是运行Pihole,Plex或Ghost博客,也可以快速配置和管理您的节点。删除SD卡使文件系统更快,更可靠。

应该指出的是,通过大幅度,um3上的本地NVME是更快的,但是,在可能已经拥有的旧PC或服务器中,将8倍的NVME驱动器加上其CADDIES,旧的PC或服务器中的CADDIES更昂贵。

让我留下一些资源和进一步的链接,以便您可以继续学习。

有什么我没有覆盖的东西'它可能包含在我的工作室中,或者如果您已经有副本,您可以通过Twitter联系到我。

如果您喜欢建立自己的私有云,或者只是了解有关网络的更多信息,您可以拿起我的电子书或视频工作室套餐,直到4月9日。

您想在过去5年的覆盆子PI上的Docker和Kubernetes中了解更多的旅程吗?你对成本和现实生活用例感到好奇吗?在覆盆子pi上的过去,现在和未来的kubernetes

您想尝试从本地磁盘启动raspberry pi吗?使用NVME启动驱动器升级覆盆子PI 4

想尝试k3s?您可以在大约15分钟内使用SD卡进行此操作,我的K3S步行

了解如何部署和运行自托管,打开源无服务器功能,并使用Node.js自动化工作流程