3.3 KiB
3.3 KiB
title, type, tags, sources, last_updated
| title | type | tags | sources | last_updated | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Bottlerocket | entity |
|
|
2026-04-24 |
Bottlerocket
AWS 主导维护的容器专用开源 Linux 操作系统,Bottlerocket OS 的命名灵感来自装满蝌蚪的瓶子(tadpole-containing bottle),旨在为容器工作负载提供最小化、安全加固的运行时环境。
核心设计理念
最小化(Minimalism)
- 去除所有非必要组件:无包管理器、无默认 Shell 解释器、无默认 SSH 访问
- 仅打包必要内核组件到 OS 镜像,攻击面降至最低
- Bottlerocket 可运行于笔记本电脑、工作站和数据中心环境
Variant 机制
Variant 是 Bottlerocket 的核心定制机制——在构建时组合以下维度:
- 平台(platform):AWS(用于 EC2)、Bare Metal 等
- 处理器架构:x86_64、ARM64 (Graviton)
- 工作负载组件:Kubernetes 节点、NVIDIA GPU 支持、自定义包
Variant 允许按需定制(如 Bottlerocket with Kubernetes + NVIDIA GPU),避免通用 OS 的臃肿。
安全更新(Safe Updates)
- 分区镜像更新(Partition Updates):A/B 双分区机制,在线下载新版本镜像到非活动分区,重启后切换,确保更新原子性
- Data Volume:独立数据卷缓存容器镜像,支持快照预填充
- in-place 更新:无需替换节点即可完成 OS 升级
安全加固(Security Hardening)
- dm-verity:对根文件系统进行加密哈希验证,检测任何未授权篡改
- 只读根文件系统:默认只读,运行时无法修改根目录内容
- SE Linux enforcing:默认启用 enforcing 模式,基于标签的强制访问控制(MAC)
- Secure Boot:启动时验证引导加载程序和内核签名
- CIS Benchmark:Bottlerocket 提供专用 CIS benchmark 安全加固指南
与 EKS 的集成
Bottlerocket 支持与 Amazon EKS 的三种集成方式:
| 集成方式 | 说明 |
|---|---|
| Bottlerocket for EKS AMI | 自管理节点组(Self-Managed Node Groups),通过 eksctl 或 launch template 指定 |
| 托管节点组(Managed Node Groups) | EKS 自动管理的节点组,可指定 Bottlerocket AMI |
| Carpenter 节点池 | EKS Auto Mode 的节点池,Carpenter Controller 自动管理,Bottlerocket 为默认 OS |
配置方式
- API 接口:通过 Bottlerocket API 远程配置节点
- TOML 用户数据:在实例启动时通过 userdata 传递 TOML 格式配置
- EKS 工具集成:eksctl、Carpenter 等工具原生支持 Bottlerocket
最佳实践
- 锁定 AMI 版本:生产环境应将 Bottlerocket AMI 锁定到特定版本,避免自动升级导致意外中断
- 通过 Bottlerocket API 配置:而非手动 SSH 登录修改配置(默认禁用了交互式 Shell)
- 监控更新状态:通过 API 检查当前活动的分区版本和待切换版本
相关资源
- GitHub:https://github.com/bottlerocket-os/bottlerocket
- 文档:https://bottlerocket.dev/
- AWS Bottlerocket AMI:AWS Marketplace 和 SSM 参数提供
Aliases
- Bottlerocket OS
- 火箭瓶(中文社区昵称)
- Bottlerocket for EKS