本文概述了 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 节点池添加到现有群集,并将现有的 Linux 节点池迁移到 ACL。
注释
ACL 是 Flatcar Container Linux for AKS 的正式发布版本,该版本于 2025 年 11 月进入预览阶段。 OS Guard(预览版)功能(例如采用完整性策略强制实施 (IPE) 的代码完整性功能)当前不受支持。 如果目前需要 OS Guard 功能,建议在这些功能可用后继续使用 OS Guard 并迁移到 ACL。
在 AKS 上使用 ACL 的好处
将 ACL 用作 AKS 节点池的 OS 可提供多个优势,从而提高安全性、可靠性和运营效率:
-
内置不可变性,提供更强的安全性:
/usr目录由内核强制实施的不可变性可在启动时和运行时验证操作系统映像的完整性。 此设计有助于在未经授权的更改影响集群之前将其阻止,并降低操作系统级篡改的风险。 - 最小攻击面:ACL 仅提供运行容器所需的组件。 通过减少 OS 的大小和复杂性,ACL 可最大程度地减少攻击者可用的包、服务和潜在入口点的数量,并简化安全管理。
- 自动节点映像更新:ACL 提供基于映像的每周更新,其中包括最新的安全修补程序和 bug 修复。 此方法使节点 OS 版本保持一致且在整个群集中保持最新状态,并帮助减少对已知漏洞的暴露。
- Supply-chain trust:基于 Azure Linux 的签名包和供应链流程构建,为系统组件提供明确的证明。
- 与 Azure 安全功能集成:对 受信任启动 和安全启动的原生支持提供启动度量保护和证明。
- 开源透明性:Flatcar 以及许多底层技术(dm-verity 和 SELinux)都属于上游项目或开源项目,微软也提供了支持这些功能的工具,并为其作出了贡献。
ACL 的主要功能
以下关键特性使 ACL 成为适用于 AKS 的经强化且面向容器优化的操作系统:
- 不可变性:'/usr' 目录被挂载为受 dm-verity 保护的只读卷。 在运行时,内核会验证已签名的根哈希以检测和阻止篡改
- 使用 SELinux 进行强制访问控制:ACL 包括 SELinux,以强制实施强制访问控制策略,以限制哪些进程可以访问敏感系统资源。 请注意, 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)。
Important
如果在 AKS 上使用 Azure 容器 Linux (ACL),请确保查看以下注意事项和限制:
- ACL 自 AKS v1.34 起正式发布。
- ACL 需要有安全启动和 vTPM 的受信任启动。 非受信任的启动变体不可用。
- Arm64 上的 ACL 要求使用基于 Cobalt 的 (v6) SKU,以支持受信任启动兼容性。
-
NodeImage并且None是唯一受支持的 操作系统(OS)升级通道。Unmanaged和SecurityPatch由于不可变的/usr目录而与 ACL 不兼容。 - 不支持工件流式传输。
- 不支持 Pod Sandboxing。
- 不支持机密虚拟机(CVM)。
- 不支持第 1 代 VM。
- 不支持启用 FIPS 的节点。
功能路线图
有关详细信息,请参阅 Azure Linux 功能路线图。
使用 ACL 进行 OS 迁移和升级
AKS 支持通过就地 OS SKU 迁移或创建新的 ACL 节点池,将现有节点池迁移到 ACL。 有关详细的迁移步骤、注意事项和回滚说明,请参阅 将现有节点迁移到 ACL。
用于 AKS 版本控制的 ACL
AKS 的 ACL 每周发布 AKS 节点映像。 版本控制遵循基于 AKS 日期的格式(例如:202506.13.0)。 ACL 目前仅支持完整的节点映像更新。 有关详细信息,请参阅 Azure Container Linux (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