Files
nexus/wiki/entities/Bottlerocket.md

78 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 的核心定制机制——在构建时组合以下维度:
- **平台**platformAWS用于 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 检查当前活动的分区版本和待切换版本
## 相关资源
- GitHubhttps://github.com/bottlerocket-os/bottlerocket
- 文档https://bottlerocket.dev/
- AWS Bottlerocket AMIAWS Marketplace 和 SSM 参数提供
## Aliases
- Bottlerocket OS
- 火箭瓶(中文社区昵称)
- Bottlerocket for EKS