人们很容易以为,一旦用上容器,宿主机的安全就不再重要。事实恰恰相反:每个 Kubernetes 节点 都是一台从镜像启动的机器,宿主机一旦被攻破,其上承载的所有 Pod 都会沦陷。因此,节点 AMI 是安全体系中的关键一环。
你有三条路:直接使用官方优化版 AMI,以它为基础做定制,或者完全自建。对于严肃的生产环境, 在加固基线之上做定制或自建才是推荐做法。
一个好的节点 AMI 应该包含什么
- 针对容器运行时优化的基线,containerd 与 kubelet 配置正确。
- 操作系统的 CIS 加固,必要时还包括 CIS Benchmark for Kubernetes 本身。
- 内核与组件的补丁保持最新,并定期重建镜像。
- 必要的代理程序——日志、指标、安全——预装好,以便快速启动。
- 不烘焙任何密钥或凭据;身份通过 IAM Roles for Service Accounts(IRSA)或等效机制获取。
- 最小化配置:删除节点用不到的软件包与服务。
EKS 的镜像选项
| 选项 | 优势 | 何时选用 |
|---|---|---|
| EKS 优化版 AMI(AL2023) | 官方出品,由 AWS 维护 | 通用起点 |
| Bottlerocket | 面向容器的最小化不可变操作系统 | 追求最高安全性与最小攻击面 |
| 自定义 AMI | 完全掌控加固与代理程序 | 严格的合规要求 |
根据你在「掌控力」与「省心」之间的取舍来选择节点基线。
Bottlerocket:容器优先
Bottlerocket 是 AWS 推出的极简操作系统,专为运行容器而设计。它的攻击面极小、不可变,并且 以镜像方式更新——而非热打补丁——与不可变基础设施的理念高度契合。如果你希望以最小的维护成本 获得节点安全性,它值得认真评估。
无痛升级节点
只有持续保持节点更新,加固过的节点 AMI 才有意义。不可变模式在这里大放异彩:
- 替换而非打补丁:发布新版本 AMI 并轮换节点。
- 节点组滚动更新:用 cordon 与 drain 排空,然后逐个替换节点。
- Managed Node Groups 或 Karpenter,自动完成新 AMI 的替换。
- PodDisruptionBudgets,确保轮换不影响服务可用性。
常见错误
- 数月使用默认的优化版 AMI 而不更新。
- 把集群凭据烘焙进镜像,而不使用联合身份。
- 忘记加固 kubelet 本身以及文件系统权限。
- 不限制节点的 SSH 访问:理想状态是零 SSH,仅通过 SSM 访问。
常见问题
我需要自定义 AMI,还是 EKS 优化版就够了?
起步阶段,官方优化版是不错的出发点。如果你有严格的合规或安全要求,就在它之上做定制,或用 自己的加固与代理程序自建镜像。
Bottlerocket 能取代普通的 Linux AMI 吗?
对于只运行容器的节点,可以:攻击面更小,更新不可变。但它不适合需要通用操作系统的负载。
发布新 AMI 后如何升级节点?
通过节点组滚动更新:逐步排空并替换节点,同时遵守 PodDisruptionBudgets,避免影响服务。
在 imaxe.cloud,我们设计的加固基础镜像,正适合作为你 Kubernetes 节点的基石。



