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

教程:将具有 OS Guard 的 Azure Linux(预览版)节点池添加到现有的 Azure Kubernetes 服务 (AKS) 群集

在 Azure Kubernetes 服务(AKS)中,具有相同配置的节点将分组到节点池中。 每个节点池都包含运行应用程序的虚拟机(VM)。 在上一教程中,你创建了一个包含具有单个节点池的 OS Guard 群集的 Azure Linux。 若要满足应用程序的不同计算、存储或安全要求,可以添加用户节点池。

在本教程的第二部分(共五部分)中,你会了解如何:

  • 将具有 OS Guard 节点池的 Azure Linux 添加到现有群集。
  • 检查节点池的状态。

在后面的教程中,了解如何使用 OS Guard 将节点迁移到 Azure Linux,并启用遥测来监视群集。

注意事项和限制

在开始之前,请查看以下 Azure Linux 与 OS Guard 的注意事项和限制(预览版):

  • 使用 OS Guard 的 Azure Linux 需要 Kubernetes 版本 1.32.0 或更高版本。
  • 所有带操作系统防护的 Azure Linux 均已启用联邦信息处理标准 (FIPS)受信任启动
  • Azure CLI 和 ARM 模板是 AKS 上带操作系统防护的 Azure Linux 预览版唯一支持的部署方法。 不支持 PowerShell 和 Terraform。
  • AKS 上带操作系统防护的 Azure Linux 预览版不支持 Arm64 映像。
  • NodeImageNone 是 AKS 上带操作系统防护的 Azure Linux 唯一支持的 OS 升级通道UnmanagedSecurityPatch 与带有 OS Guard 的 Azure Linux 不兼容,因为 /usr 目录是不可变的。
  • 不支持项目流式处理
  • 不支持 Pod 沙盒化
  • 不支持机密虚拟机(CVM)。
  • 不支持第 1 代虚拟机(VM)。

先决条件

安装 aks-preview Azure CLI 扩展

重要

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

  • 使用 aks-preview 命令安装 az extension add 扩展。

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

    az extension update --name aks-preview
    

注册 Azure Linux OS Guard 预览版功能标志

  1. 使用 AzureLinuxOSGuardPreview 命令注册 az feature register 功能标志。

    az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    

    几分钟后,状态将显示为“已注册”

  2. 使用 az feature show 命令验证注册状态。

    az feature show --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    
  3. 当状态显示“已注册”时,使用 az provider register 命令刷新 Microsoft.ContainerService 资源提供程序的注册

    az provider register --namespace "Microsoft.ContainerService"
    

将 Azure Linux 添加到具有 OS Guard 的节点池中

使用 az aks nodepool add 命令将具有 OS Guard 节点池的 Azure Linux 添加到现有群集中并指定 --os-sku AzureLinuxOSGuard。 还需要启用 FIPS安全启动vtpm 才能将 Azure Linux 与 OS Guard 配合使用。 以下示例创建名为 osgNodepool 的节点池,该池在 testAzureLinuxOSGuardResourceGroup 资源组的 testAzureLinuxOSGuardCluster 群集中添加三个节点。 声明环境变量,并将随机后缀追加到资源组和群集名称,以确保唯一性。

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export NODEPOOL_NAME="np$RANDOM_SUFFIX"

az aks nodepool add \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --node-count 3 \
    --os-sku AzureLinuxOSGuard
    --node-osdisk-type Managed 
    --enable-fips-image 
    --enable-secure-boot 
    --enable-vtpm

示例输出:

{
  "agentPoolType": "VirtualMachineScaleSets",
  "count": 3,
  "name": "osgNodepool",
  "osType": "Linux",
  "provisioningState": "Succeeded",
  "resourceGroup": "testAzureLinuxOSGuardResourceGroupxxxxx",
  "type": "Microsoft.ContainerService/managedClusters/agentPools"
}

注释

节点池的名称必须以小写字母开头,且只能包含字母数字字符。 对于 Linux 节点池,长度必须介于 1 到 12 个字符之间。

检查节点池状态

使用 az aks nodepool list 命令查看节点池的状态,并指定资源组和群集名称。

az aks nodepool list --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME

示例输出:

[
  {
    "agentPoolType": "VirtualMachineScaleSets",
    "availabilityZones": null,
    "count": 3,
    "enableAutoScaling": false,
    "enableEncryptionAtHost": false,
    "enableFips": false,
    "enableNodePublicIp": false,
    "id": "/subscriptions/REDACTED/resourcegroups/myAKSResourceGroupxxxxx/providers/Microsoft.ContainerService/managedClusters/myAKSClusterxxxxx/agentPools/npxxxxxx",
    "maxPods": 110,
    "mode": "User",
    "name": "npxxxxxx",
    "nodeImageVersion": "AzureLinuxContainerHost-2025.10.03",
    "orchestratorVersion": "1.32.6",
    "osDiskSizeGb": 128,
    "osDiskType": "Managed",
    "osSku": "AzureLinux",
    "osType": "Linux",
    "powerState": {
      "code": "Running"
    },
    "provisioningState": "Succeeded",
    "resourceGroup": "myAKSResourceGroupxxxxx",
    "type": "Microsoft.ContainerService/managedClusters/agentPools",
    "vmSize": "Standard_DS2_v2"
  },
  {
    "agentPoolType": "VirtualMachineScaleSets",
    "availabilityZones": null,
    "count": 3,
    "enableAutoScaling": false,
    "enableEncryptionAtHost": false,
    "enableFips": false,
    "enableNodePublicIp": false,
    "id": "/subscriptions/REDACTED/resourcegroups/myAKSResourceGroupxxxxx/providers/Microsoft.ContainerService/managedClusters/myAKSClusterxxxxx/agentPools/npxxxxxx",
    "maxPods": 110,
    "mode": "User",
    "name": "npxxxxxx",
    "nodeImageVersion": "AzureLinuxOSGuard-2025.10.03",
    "orchestratorVersion": "1.32.6",
    "osDiskSizeGb": 128,
    "osDiskType": "Managed",
    "osSku": "AzureLinuxOSGuard",
    "osType": "Linux",
    "powerState": {
      "code": "Running"
    },
    "provisioningState": "Succeeded",
    "resourceGroup": "myAKSResourceGroupxxxxx",
    "type": "Microsoft.ContainerService/managedClusters/agentPools",
    "vmSize": "Standard_DS2_v2"
  }
]

后续步骤

在本教程中,你已将包含 OS Guard 节点池的 Azure Linux 添加到现有群集。 下一教程介绍如何使用 OS Guard 将现有节点迁移到 Azure Linux。