今天分享主题是 Bottlerocket 操作系统。它是一个免费的开源基于 Linux 的操作系统,专为托管容器(如Kubernetes)而设计的操作系统。
工作原理:
最少
Bottlerocket 第一个目标“最少”。托管容器对操作系统的要求不高,托管容器就是 Bottlerocket 的全部目标。在通用 Linux 发行版中默认安装的许多软件包、工具、解释器和依赖项对于仅托管容器来说根本不是必需的。通过排除这些无关紧要的软件,运营和安全开销就会减少。
Bottlerocket 将不同编排器、平台和架构的复杂性和要求管理到每个兼容组合(称为变体)的特定版本中。Bottlerocket 本身没有 shell,也不需要 shell,但你依然可以通过特权“主机”容器(具有 shell)与系统交互,从主机容器中,探索底层操作系统,甚至可以通过 API 更改正在运行的系统的设置。
安全更新
Bottlerocket 第二个目标“安全更新”。它设计是可更新的,但它没有包管理器,而且也不需要包管理器。它的更新通过下载到特定分区的映像传递,比如你准备好更新时,让编排器耗尽节点,然后告诉 Bottlerocket 应用更新并在准备就绪时重新启动,Bottlerocket 将自动交换分区并使用新版本启动,这样变得非常易用,灵活了。
如果在更新过程中出现问题,Bottlerocket 更新系统可让你恢复到之前正常运行的版本,并且设置保持不变。支持手动管理,也可以通过 Bottlerocket 特定于编排器的工具进行管理:Bottlerocket Update Operator(brupop)和ECS 更新程序。
安全为重点
最后是一个目标是“安全为重点”。最小化和可更新是 Bottlerocket 注重安全性的重要方面。使用镜像提供的变体意味着不需要可能改变系统并引入安全问题的软件包注册表或管理器。
Bottlerocket 的独特功能是用 Rust和少量 Golang 编写的。两者都是编译语言,内置了针对内存 安全问题的保护。此外,由于 Bottlerocket 是通过镜像交付的,所有代码都经过预编译,因此不需要 shell 和解释器,从而关闭了执行未经验证的代码的不良途径。
Bottlerocket 的根文件系统是不可变的。dm-verity提供对根文件系统的透明完整性检查,如果检测到对底层块设备的任何更改,内核将重新启动。此外,Bottlerocket 为可变文件系统提供了始终启用、强制执行、限制性的SELinux策略,有助于防止容器执行危险操作,即使以 root 身份运行也是如此。
最新消息:已支持 NVIDIA Fabric Manager
在 2024 年 5 月 17 日,AWS 他们宣布专为容器构建的 Linux 操作系统 Bottlerocket 现已支持 NVIDIA Fabric Manager,让用户能够利用多 GPU 配置的强大功能来处理 AI 和机器学习工作负载。Bottlerocket 用户现在可以无缝地利用其连接的 GPU 作为高性能计算结构,从而实现每个高性能处理器实例中的所有 GPU 之间高效且低延迟的通信。
大家都知道,现在深度学习模型日益复杂,想在合理时间范围内训练它们所需的计算资源也成了呈指数级增长。AWS 为了应对这种计算需求的增长,运行 AI 和机器学习工作负载的客户已转向多 GPU 实现,利用 NVIDIA 的 NVSwitch 和 NVLink 技术在连接的 GPU 之间创建统一的内存结构。
Bottlerocket NVIDIA 变体中的 Fabric Manager 支持允许用户配置此结构,使所有 GPU 都可以用作单个高性能池,而不是单独的单元。这使 Bottlerocket 用户能够在高性能处理器实例上运行多 GPU 设置,从而显著加快复杂神经网络的训练速度。
这样会给用户带来这些好处:
- 灵活性,多 GPU 支持
- 统一内存结构
- 加速复杂神经网络训练
- 低延迟通信,高性能
- 开箱即用的 CIS 强化
- 降低管理开销和运营成本
更多信息参考官网,入门安装等操作都有相应文档。