本文概述了 Azure 容器 Linux(ACL),Azure Kubernetes 服务 (AKS)的不可变容器优化操作系统(OS)。 ACL 派生自 Flatcar Container Linux 项目,基于 Flatcar 经过验证的、容器优先的不可变设计,同时分层Azure Linux 包、服务和平台集成。 这使 ACL 能够与上游 Flatcar 创新保持密切一致,同时满足Azure的生产、安全性和合规性要求。 若要了解有关 Flatcar Container Linux 的详细信息,请参阅 Flatcar 文档。
从 AKS v1.34 开始,ACL 作为 AKS 上的一个 OS 选项正式可用(GA)。 可以在新的 AKS 群集中部署 ACL 节点池,或将 ACL 节点池添加到现有群集。
Note
ACL 是适用于 AKS 的 Flatcar Container Linux 正式版,该版本于 2025 年 11 月进入公共预览版。 OS Guard(预览版)功能(如代码完整性和完整性策略强制实施(IPE)将在将来的版本中合并到 ACL 中,之后 OS Guard(预览版)将停用。 如果目前需要 OS Guard 功能,建议在这些功能可用后继续使用 OS Guard 并迁移到 ACL。
在 AKS 上使用 ACL 的好处
| Benefit | Description |
|---|---|
| 内置不可变性,可增强安全性 |
/usr 目录由内核强制实施的不可变性可在启动时和运行时验证操作系统映像的完整性。 此设计有助于在未经授权的更改影响集群之前将其阻止,并降低操作系统级篡改的风险。 |
| 最小攻击面 | ACL 仅提供运行容器所需的组件。 通过减少 OS 的大小和复杂性,ACL 可最大程度地减少攻击者可用的包、服务和潜在入口点的数量,并简化安全管理。 |
| 自动节点映像更新 | ACL 提供每周基于映像的更新,其中包括最新的安全修补程序和 bug 修复。 此方法使节点 OS 版本保持一致且在整个群集中保持最新状态,并帮助减少对已知漏洞的暴露。 |
| 供应链信任 | 基于 Azure Linux 的签名包和供应链流程构建,为系统组件提供明确的证明。 |
| 与 Azure 安全功能集成 | 受信任启动和安全启动的本机支持能够提供测量的启动保护和证明。 |
| 开源透明度 | Flatcar 以及许多底层技术(如 dm-verity 和 SELinux)都属于上游项目或开源项目,而 Microsoft 也提供了用于支持这些功能的工具,并作出了相应贡献。 |
ACL 的主要功能
以下关键特性使 ACL 成为适用于 AKS 的经强化且面向容器优化的操作系统:
- 不可变性:'/usr' 目录被挂载为受 dm-verity 保护的只读卷。 在运行时,内核会验证已签名的根哈希以检测和阻止篡改
- 使用 SELinux 进行强制访问控制:ACL 包括 SELinux,以强制实施强制访问控制策略,以限制哪些进程可以访问敏感系统资源。 SELinux 默认在强制模式下运行。
- 受信任的启动和安全启动:ACL 需要使用安全启动和 vTPM 进行受信任的启动 ,以确保 OS 加载之前启动链的完整性。 这是通过使用统一内核映像(UKI)实现的,该映像将内核、initramfs 和内核命令行捆绑成一个已签名的单个工件。 启动时,vTPM 会测量和记录 UKI,以确保在最早阶段的完整性。
- NVIDIA GPU 节点支持:ACL 在 AMD64 体系结构上支持 NVIDIA GPU 的节点池,允许你在 AKS 上运行高性能计算(HPC)和 AI/ML 工作负载,并使用强化的容器优化 OS 运行 AI/ML 工作负载。 ACL 不支持支持 GPU 的节点池的 ARM64 体系结构。
- AMD64 和 ARM64 体系结构支持:ACL 适用于 AKS 上的 AMD64 和 ARM64 体系结构。
- 主权供应链安全:ACL 继承了 Azure Linux 的安全构建管道和已签名的统一内核映像(UKI)。
- 节点自动预配:ACL 支持节点自动预配(NAP)。
不支持的功能
ACL 当前不支持以下功能:
-
SecurityPatch和Unmanaged节点 OS 升级通道。 - 第 1 代 VM:不能使用仅支持 ACL 第 1 代的 VM 大小。
- Pod 沙盒化。
- 非受信任的启动变体。 ACL 需要可信启动。
如果现有群集使用任何不受支持的功能,则可能无法向该群集添加 ACL 节点池。
功能路线图
Azure Linux 发布功能路线图,其中包含在开发和正式发布(GA)和公共预览版中提供的功能。
使用 ACL 进行 OS 迁移和升级
AKS 支持通过就地 OS SKU 迁移或创建新的 ACL 节点池,将现有节点池迁移到 ACL。 有关详细的迁移步骤、注意事项和回滚说明,请参阅 将现有节点迁移到 ACL。
用于 AKS 版本控制的 ACL
AKS 的 ACL 每周发布 AKS 节点映像。 版本控制遵循基于 AKS 日期的格式(例如:202506.13.0)。 ACL 目前仅支持完整的节点映像更新。
可以在发行说明中检查可用的节点映像,并使用 nodeImageVersion 命令查看正在运行的群集的 az aks nodepool list。 例如:
az aks nodepool list --resource-group <resource-group-name> --cluster-name <aks-cluster-name> --query '[].{name: name, nodeImageVersion: nodeImageVersion}'
示例输出:
[
{
"name": "nodes",
"nodeImageVersion": "AKSAzureContainerLinux-202606.01.0"
}
]
相关内容
若要开始使用 AKS 的 ACL,请参阅以下资源:
使用 Azure CLI - 使用 ARM 模板部署 ACL 群集
- 教程:创建 ACL 群集
- 教程:将 ACL 节点池添加到现有群集