Bottlerocket 专业2020年〜
专为运行容器而构建的基于 Linux 的开源操作系统
它能做什么
Bottlerocket 是一款专为容器主机设计的基于 Linux 的操作系统。与通用 Linux 发行版不同,它仅包含运行容器所需的最少组件,因此安全攻击面更小,启动速度更快。操作系统更新以原子方式(整体)应用,更新失败时会自动回滚。
日常类比
可以将其比作一辆只装载专用工具的工作车。如果通用操作系统是一辆装满各种东西的厢式货车,那么 Bottlerocket 就是一辆只装载运行容器所需工具的轻型卡车。没有多余的货物,运行更轻快,可被窃取的东西也更少,因此更加安全。
什么是 Bottlerocket
Bottlerocket 是 AWS 开发的容器专用 Linux 操作系统。Amazon Linux 或 Ubuntu 等通用操作系统包含包管理器和 Shell 环境等众多组件,而 Bottlerocket 仅由容器运行时和最少的系统组件构成。SSH 登录默认禁用,配置变更通过 API 进行。这种设计大幅减少了安全攻击面。
安全性与更新
Bottlerocket 的文件系统几乎是只读的,降低了运行时操作系统文件被篡改的风险。操作系统更新不是逐个包更新,而是以原子方式替换整个镜像,避免更新过程中出现不一致状态。如果更新失败,会自动回滚到之前的版本。SELinux 也已启用,增强了容器间的隔离。 关于安全性与更新的技术背景,可以参考相关书籍(Amazon)进行学习。
与 EKS 和 ECS 的集成
Bottlerocket 可以作为 EKS 和 ECS 的工作节点操作系统使用。在 EKS 中,只需选择 Bottlerocket 作为托管节点组的 AMI 即可开始使用。ECS 也提供了兼容 Bottlerocket 的 AMI。在需要故障排除时,可以使用 AWS Systems Manager 的 Session Manager 访问节点。Bottlerocket 作为开源项目在 GitHub 上公开,也可以创建自定义构建版本。
注意事项
- Bottlerocket 本身是免费的开源软件,但运行它的 EC2 实例会按正常标准收费
- 与通用操作系统不同,没有包管理器,因此无法直接在操作系统上安装软件。所有程序都设计为以容器方式运行
- 由于 SSH 默认禁用,故障排除时建议使用 Systems Manager Session Manager