使用Tinkerbell设置和管理使裸机飞行

2020-12-22 23:28:23

几年前,每个人都放弃了公有云。并有充分的理由:Amazon Web Services掀起了一场革命,它使使用声明性API可以大规模构建,部署和运行应用程序成为可能,并且“按需付费”模型同样如此!但是,过去几年来我们了解到,云并非适用于所有用例,而且我们看到混合云的兴起以及对边缘的关注日益增长。

随着混合多云成为数字业务的首选架构,机遇与挑战并存。这些措施包括提高性能和降低延迟,以及提高安全性和降低成本。

考虑到这些因素,并且受到云原生和开源概念的支持,裸机以一种我十年来从未见过的方式上升到基础架构对话的顶端。

裸机只是专用的物理基础设施的花哨名称。而且,如果专用基础架构在2010年代享有盛誉,那是因为CAPEX繁重,部署缓慢,难以管理且操作不灵活。为什么选择看似更直接(无处不在)的公共云选项中的金属?

裸机提供了最终的控制。根据您想要获得的书呆子,使用裸机,您可以控制基础结构的几乎每个方面:硬件规格,当然,还可以租用以及机器上运行的软件的所有方面。超越虚拟化层考虑,并考虑诸如BIOS,SGX和SR-IOV之类的元素。

作为全球数字基础设施公司,Equinix在其受信任的平台上为遍布55多个全球都会区的近10,000个客户提供连接。借助Equinix Metal,客户可以快速部署自动化的单租户基础架构,并与1800多个网络以及2900多个云和服务提供商进行交互。

大多数人在裸机上进行投资会带来两个结果:更低的价格和更好的性能。单一租用是其中每一个的主要驱动力,从而导致可以使用100%的硬件资源的更稳定的应用程序。当然,直到您的用例具有合理的规模时,这种优化才是必需的,但是当它这样做时,哇,它确实会产生影响。

领先公司越来越多地转向裸机,以获取更多独特优势,尤其是围绕硅的最新和最大进步。从新的芯片和ML卡,到SmartNIC和更快的内存,使用尖端技术可以带来不可思议的收益。只是想一想我的新Macbook和经过优化的Apple Silicon,我很容易就能理解为什么对计算机进行更多控制可以带来惊人的效果,尤其是在大规模生产方面。

过去,在家用PC上安装软件需要一堆软盘(或CD)和几个小时的空闲时间。当我不得不在一台计算机上进行操作时,这并不是一件有趣的事情,但是考虑一下数据中心中几百台服务器的工作难度会更加痛苦。难怪我们都急于迁移到云中!

不幸的是,在过去的几十年中,用于管理物理服务器的技术堆栈并没有得到很大的改善。

让我们考虑一下在服务器上安装操作系统,并抛开所有其他烦人的事情,例如固件管理和获取IP地址。您需要的第一项技术(DHCP)于1993年推出……同年,英特尔发布了第一款奔腾芯片,比尔·克林顿(Bill Clinton)成为了美国总裁。第二项技术(PXE,即预引导执行环境)在美国推出。 1990年代后期。

它显示了我们使用相同的旧技术来管理服务器已有多长时间。

始终是Packet的愿景(现在是Equinix Metal),旨在帮助更多的人利用物理基础设施。故事的很大一部分是基于他们相信将来会在越来越多的地点和越来越多的硬件上构建的未来。工程上的主要挑战是使其100%自动化,以便开发人员(或更可能是她编写的软件)可以使用它。

基本上,Packet希望为物理基础架构提供“类似云”的体验,无论其外观,居住位置或拥有者。异构性意味着团队需要一种真正灵活且可扩展的方式来规范化和自动化物理硬件的整个生命周期。这就是Tinkerbell及其相关组件诞生的方式(运行Packet和现在的Equinix的裸机即服务),以及为什么我们去年在The New Stack中宣布它,然后在2020年5月将该项目开源。

目标很简单:采用现代的云原生方法大规模地生命周期化各种物理基础架构。通过对现有技术进行现代化改造,并通过API进行公开,Tinkerbell可以帮助新一代开发人员以编程方式释放硬件的价值。

我一直相信,在您可以自动化或改进某些东西之前,您需要了解它的工作原理。虽然开启和关闭服务器不是火箭科学,但它是相当固定的知识。

Alex Ellis出色地打破了去年4月TNS帖子中的关键条款和流程:“云原生世界中的裸机”。请特别注意DHCP,TFTP和PXE。尽管表面上并不复杂,但实际上它是一个脆弱的过程,其原因有几个。

首先是通过各种硬件引入的混乱。通过使用相同的精确系统,可以缓解许多挑战。多样性是使这一复杂性的原因。硬件组件或配置的每次更改(更不用说固件,操作系统和其他软件方面)都会为情况带来新的“工作流程”。

其次,与基于软件的环境不同,我们正在与物理系统进行交互。拔掉电源线,磁盘驱动器发生故障,并且在您几千英里之外很难按“重置”按钮。这是一种范式转换,要求开发人员“预料到意外情况”并以更易于故障的方式编写软件。

Tinkerbell改善了这种状况,主要是通过将云原生方法引入DHCP等基础技术,同时添加了有助于拥抱和规范各种硬件的工作流引擎。

引导–引导重新构想了在Go中远程“引导”服务器所需的组件:主要是DHCP和PXE。而且还有tftp和iPXE。

OSIE – OSIE代表操作系统安装环境。它包含一个基于Alpine Linux的netboot映像,该映像会提取一个预先构建的Ubuntu容器,该容器可以进行操作系统的实际安装。

Tink – Tink是一个工作流引擎,由服务器和CLI(由gRPC进行通信)组成。 CLI用于创建工作流程及其构造块:模板和目标硬件。基本上,一旦OSIE运行,它将与Tink接触以了解其需要做什么。然后,Tink服务器将发送一个声明性YAML文件,告诉它要运行什么。

黑格尔–全新服务器的问题在于,当它们“活跃”起来时,他们不知道自己是谁,他们还能与之交谈的东西,甚至是他们的IP地址。 Hegel是一种简单的元数据服务,一旦出现该信息,便会将其提供回服务器。

PBnJ –电源和引导命令由“ PBnJ”服务处理,该服务与BMC(基板管理控制器)对话以执行这些关键操作。

这五个微服务一起工作以提供裸机。要深入了解,请与Gianluca Arbezzano和Jeremy Tanner一起观看直播。

Tinkerbell最近作为沙盒项目进入了Cloud Native Computing Foundation。这是该项目的一项重要举措,因为它扩大了社区范围并显示了我们对治理和透明度的承诺。我们希望并期望这将吸引更多的开发人员和公司参与该项目,并在此过程中增加他们的用例,问题和贡献。

但无需等待! Tinkerbell如今都是开源的,尽管该项目还很年轻,但周围的社区却很强大。除了上游版本,Tinkerbell还提供了一个沙箱供您使用。它是使用Docker组件构建的,可以为您提供全套服务。

需要帮助或者有疑问吗? 加入Tinkerbell Slack,与Equinix Metal团队和其他贡献者一较高下,或者通过提交建议书就您想要添加的内容提供一些反馈。 亚马逊网络服务和云原生计算基金会是“新堆栈”的赞助商。