你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Kubernetes 服务 (AKS) 群集中使用机密虚拟机 (CVM)

机密虚拟机(CVM) 为租户提供强大的安全性和机密性。 CVM 提供基于 VM 的硬件受信任执行环境(TEE),利用 SEV-SNP 安全功能来拒绝虚拟机监控程序和其他主机管理代码对 VM 内存和状态的访问,从而为操作员访问提供深度保护。 借助这些功能,同时受益于 AKS 的功能,具有 CVM 的节点池能够将高度敏感的容器工作负载迁移到 AKS,而无需任何代码重构。 例如,如果满足以下条件,可能需要 CVM:

  • 处理安全关键数据和/或敏感数据的工作负荷
  • 满足各种合规性要求所需的服务,尤其是政府合同。 如果没有用于保护数据的可缩放解决方案,这可能会导致认证和合同丢失。

本文介绍如何使用机密 VM 大小创建 AKS 节点池。

谨慎

本文提到了一项正在使用即将被 AKS 弃用的 Ubuntu 操作系统版本的功能。

  • 从 2027 年 3 月 17 日开始,AKS 将不再支持 Ubuntu 20.04。 将删除现有节点映像,AKS 将不再提供安全更新。 你将无法再缩放节点池。 将节点池升级到 kubernetes 版本 1.34+ 以迁移到受支持的 Ubuntu 版本。 有关此停用的详细信息,请参阅 AKS GitHub 问题

重要

2025 年 11 月 30 日开始,AKS 将不再支持或提供 Azure Linux 2.0 安全更新。 从 2026 年 3 月 31 日起,将删除节点映像,并且无法缩放节点池。 通过将 节点池 升级到受支持的 Kubernetes 版本或迁移到 osSku AzureLinux3,以迁移到受支持的 Azure Linux 版本。 有关更多信息,请参阅[停用] AKS 上的 Azure Linux 2.0 节点池

AKS 支持的机密 VM 大小

Azure 提供 AMD 和 Intel 提供的 受信任执行环境 (TEE) 选项。 通过这些 TEE,可以创建具有出色性价比的机密 VM 环境,且无需进行任何代码更改。

  • 基于 AMD 的机密 VM 使用 AMD SEV-SNP 技术,这是第三代 AMD EPYC™ 处理器引入的。
  • 基于 Intel 的机密 VM 使用 Intel TDX,以及第四代 Intel® Xeon® 处理器。

这两种技术都有不同的实现。 但是,这两者都提供与云基础结构堆栈类似的保护。 有关详细信息,请参阅 CVM VM 大小

安全功能

与其他虚拟机(VM)大小相比,CVM 提供以下安全增强功能:

  • 虚拟机、虚拟机监控程序和主机管理代码之间以强大的硬件进行隔离。
  • 可自定义的证明策略,以确保在部署之前主机的合规性。
  • 首次启动之前基于云的机密 OS 磁盘加密。
  • 平台或客户(可选)拥有和管理的 VM 加密密钥。
  • 通过平台的成功证明和 VM 的加密密钥之间的加密绑定,可以安全地发布密钥。
  • 用于证明和保护虚拟机中密钥和机密的专用虚拟受信任平台模块(TPM)实例。
  • 与 Azure VM 的受信任启动类似的安全启动功能

它的工作原理是什么?

如果运行的工作负荷需要增强的机密性和完整性,则可以受益于内存加密和增强的安全性,而无需在应用程序中更改代码。 CVM 节点上的所有 Pod 都是同一信任边界的一部分。 使用 CVM 创建的节点池中的节点使用为 CVM 配置的自定义 [节点映像][./node-images]。

支持的 OS 版本

可以在 Linux OS 类型(Ubuntu 和 Azure Linux)上创建 CVM 节点池。 但是,并非所有 OS 版本都支持 CVM 节点池。

此表包括支持的 OS 版本:

OS 类型 操作系统 (OS) 产品型号 (SKU) CVM 支持 CVM 默认值
Linux Ubuntu 已支持 Ubuntu 20.04 是 K8s 版本 1.24-1.33 的默认操作系统。 Ubuntu 24.04 是 Kubernetes 版本 1.34 到 1.38 的默认操作系统。
Linux Ubuntu2204 不支持 AKS 不支持 Ubuntu 22.04 的 CVM。
Linux Ubuntu2404 已支持 CVM 在 K8s 1.32-1.38 上得到支持Ubuntu2404
Linux AzureLinux 支持 Azure Linux 3.0 为 K8s 版本 1.28-1.36 启用 CVM 时,默认为 Azure Linux 3。
Windows操作系统 所有 Windows 操作系统型号 不支持

使用 UbuntuAzureLinux 作为 osSKU 时,如果默认的操作系统版本不支持 CVM,AKS 将默认为最新支持 CVM 的操作系统版本。 例如,Linux 节点池默认使用 Ubuntu 22.04。 由于 22.04 目前不支持 CVM,AKS 会自动将已启用 Linux CVM 的节点池设置为使用 Ubuntu 20.04。

限制

将具有 CVM 的节点池添加到 AKS 时,以下限制适用:

  • 您不能使用 FIPS、ARM64、受信任的启动或 Pod 沙盒化功能。
  • 无法更新现有节点池以迁移到 CVM 大小。 若要迁移,需要 调整节点池的大小
  • 不能将 CVM 与 Windows 节点池配合使用。
  • 使用 Azure Linux 的 CVM 目前为预览版。

先决条件

在开始之前,请确保具有以下各项:

  • 现有的 AKS 群集。
  • 在创建群集的区域,CVM 大小必须可用于订阅。 必须有足够的配额才能创建具有 CVM 大小的节点池。
  • 如果使用 Azure Linux os,则需要安装 aks-preview 扩展、更新 aks-preview 扩展并注册预览功能标志。 如果使用 Ubuntu,可以跳过这些步骤。

安装 aks-preview 扩展

  1. 使用 aks-preview 命令安装 az extension add Azure CLI 扩展。

    重要

    AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

    az extension add --name aks-preview
    
  2. 使用 az extension update 命令更新到扩展的最新版本。

    az extension update --name aks-preview
    

注册 AzureLinuxCVMPreview 功能标志

  1. 使用 [AzureLinuxCVMPreview][az-feature-register] 命令注册 az feature register 功能标志。

    az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxCVMPreview"
    
  2. 使用 [az feature show][az-feature-show] 命令验证注册状态。 几分钟后,状态将显示为“已注册”

    az feature show --namespace Microsoft.ContainerService --name AzureLinuxCVMPreview
    
  3. 当状态反映为“已注册”时,请使用 [][az-provider-register] 命令刷新 Microsoft.ContainerService 资源提供程序的注册az provider register

    az provider register --namespace Microsoft.ContainerService
    

将包含 CVM 的节点池添加到 AKS 群集

  • 使用 az aks nodepool add 命令将具有 CVM 的节点池添加到 AKS 群集,并将该节点池设置为 node-vm-size 受支持的 VM 大小

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --node-count 3 \
        --node-vm-size Standard_DC4as_v5 
    

如果未指定 osSKUosType,则 AKS 默认为 --os-type Linux--os-sku Ubuntu

验证节点池是否使用 CVM

  1. 使用 az aks nodepool show 命令验证节点池是否使用了 CVM,并验证 vmSize 是否为 Standard_DCa4_v5

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    

    以下示例命令和输出显示节点池使用 CVM:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    
    "Standard_DC4as_v5"
    
  2. 使用 az aks nodepool list 命令来验证节点池是否使用 CVM 映像。

    az aks nodepool list \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    

    以下示例命令和输出显示节点池使用 Ubuntu 20.04 CVM 映像:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    
    "AKSUbuntu-2004cvmcontainerd-202507.02.0"
    

从 AKS 群集中删除具有 CVM 的节点池

  • 使用 az aks nodepool delete 命令从 AKS 群集中移除具有 CVM 的节点池。

    az aks nodepool delete \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool
    

后续步骤

本文介绍了如何将具有 CVM 的节点池添加到 AKS 群集。