Files
nexus/wiki/entities/Bottlerocket.md

3.3 KiB
Raw Blame History

title, type, tags, sources, last_updated
title type tags sources last_updated
Bottlerocket entity
AWS
Container OS
Linux
EKS
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
2026-04-24

Bottlerocket

AWS 主导维护的容器专用开源 Linux 操作系统Bottlerocket OS 的命名灵感来自装满蝌蚪的瓶子tadpole-containing bottle旨在为容器工作负载提供最小化、安全加固的运行时环境。

核心设计理念

最小化Minimalism

  • 去除所有非必要组件:无包管理器、无默认 Shell 解释器、无默认 SSH 访问
  • 仅打包必要内核组件到 OS 镜像,攻击面降至最低
  • Bottlerocket 可运行于笔记本电脑、工作站和数据中心环境

Variant 机制

Variant 是 Bottlerocket 的核心定制机制——在构建时组合以下维度:

  • 平台platformAWS用于 EC2、Bare Metal 等
  • 处理器架构x86_64、ARM64 (Graviton)
  • 工作负载组件Kubernetes 节点、NVIDIA GPU 支持、自定义包

Variant 允许按需定制(如 Bottlerocket with Kubernetes + NVIDIA GPU避免通用 OS 的臃肿。

安全更新Safe Updates

  • 分区镜像更新Partition UpdatesA/B 双分区机制,在线下载新版本镜像到非活动分区,重启后切换,确保更新原子性
  • Data Volume:独立数据卷缓存容器镜像,支持快照预填充
  • in-place 更新:无需替换节点即可完成 OS 升级

安全加固Security Hardening

  • dm-verity:对根文件系统进行加密哈希验证,检测任何未授权篡改
  • 只读根文件系统:默认只读,运行时无法修改根目录内容
  • SE Linux enforcing:默认启用 enforcing 模式基于标签的强制访问控制MAC
  • Secure Boot:启动时验证引导加载程序和内核签名
  • CIS BenchmarkBottlerocket 提供专用 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 检查当前活动的分区版本和待切换版本

相关资源

Aliases

  • Bottlerocket OS
  • 火箭瓶(中文社区昵称)
  • Bottlerocket for EKS