你当前正在访问 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 支持的机密 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 配置的自定义 节点映像

支持的 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 是 K8s 版本 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。
Linux flatcar 不支持 适用于 AKS 的 Flatcar 容器 Linux 不支持 CVM。
Linux AzureLinuxOSGuard 不支持 使用适用于 AKS 的 OS Guard 的 Azure Linux 不支持 CVM。
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,可以跳过这些步骤。

如果使用 Azure Linux

适用于 Ubuntu 的 CVM 已正式发布,但 Azure Linux 的 CVM 目前仍处于预览状态。 如果要将 CVM 节点池与 Azure Linux 配合使用作为所选 OS,请确保启用扩展并注册标志。

安装 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 将现有节点池升级到 Ubuntu 24.04

  • 使用 az aks nodepool update 命令将 CVM 的现有节点池从 Ubuntu 20.04 升级到 Ubuntu 24.04。 将 os-sku 设置为 Ubuntu2404

      az aks nodepool update \
          --resource-group myResourceGroup \
          --cluster-name myAKSCluster \
          --name cvmnodepool \
          --os-sku Ubuntu2404
    

注释

AKS 群集 1.33 版本支持包含 CVM 的 Ubuntu 24.04 节点池。 此外,在 Ubuntu 24.04 版本正式发布之前,需要注册该功能 Ubuntu2404Preview。 有关详细信息,请参阅 here 注册该功能。

验证节点池是否使用 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 群集。