--- title: "Bottlerocket" type: entity tags: - AWS - Container OS - Linux - EKS sources: - public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w - public-cloud-learning-sessions-eks-optimization-part-3-of-3-introduction-to-eks last_updated: 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