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

在 Azure Kubernetes 服务 (AKS) 中创建群集的节点池

本文介绍了如何在 AKS 群集中创建一个或多个节点池。

注意

此功能可以更好地控制创建和管理多个节点池,并且需要单独的命令进行创建/更新/删除 (CRUD) 操作。 以前,通过az aks createaz aks update执行的群集操作使用 managedCluster API,并且只能通过这些操作更改控制平面和单个节点池。 此功能通过 agentPool API 为代理池公开单独的操作集,并要求使用az aks nodepool命令集对单个节点池执行操作。

重要说明

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

先决条件

  • 需要安装并配置 Azure CLI 2.2.0 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI
  • 要部署 ARM 模板,需要将要部署和访问的资源的访问权限写入到 Microsoft.Resources/deployments 资源类型的所有操作。 例如,若要部署虚拟机(VM),需要 Microsoft.Compute/virtualMachines/writeMicrosoft.Resources/deployments/* 权限。 有关角色和权限的列表,请参阅 Azure 内置角色

  • 查看每个参数的以下要求:

    • osTYPE:操作系统类型。 默认值为 Linux。
    • osSKU:指定代理池使用的 OS SKU。
    • count:用于托管 docker 容器的代理数(VM)。 对于用户池,允许的值必须在 0 到 1000(含)范围内;对于系统池,允许值必须在 1 到 1000(含)范围内。 默认值为 1。
  • 使用 ARM 模板部署群集后,可以使用 Azure CLI 或 Azure PowerShell 连接到群集并部署示例应用程序。

限制

创建支持多个节点池的 AKS 群集时存在以下限制:

  • 如果你在 AKS 群集中有另一个可取代它的系统节点池,则可以删除系统节点池。 否则,无法删除系统节点池。

  • 系统池必须至少包含一个节点。 用户节点池可以包含零个或多个节点。

  • 如果使用单个节点池创建群集,则 OS 类型必须为 Linux。 OS SKU 可以是任何 Linux 变体,例如 UbuntuAzureLinux。 不能使用单个 Windows 节点池创建群集。 如果要运行 Windows 容器,必须在使用 Linux 系统节点池创建 Windows 节点池后,将 Windows 节点池添加到 群集。

  • AKS 群集必须通过标准 SKU 负载均衡器使用多个节点池。 基本 SKU 负载均衡器不支持此功能。

  • AKS 群集必须对节点使用虚拟机规模集。

  • 节点池的名称只能包含小写字母数字字符,且必须以小写字母开头。

    • 对于 Linux 节点池,长度必须在 1-12 个字符之间。
    • 对于 Windows 节点池,长度必须在 1-6 个字符之间。
  • 所有节点池都必须位于同一虚拟网络中。

  • 创建节点池后,无法更改虚拟机(VM)大小。

  • 在创建群集的过程中创建多个节点池时,节点池的 Kubernetes 版本都必须与已为控制平面设置的版本相匹配。 可在使用按节点池操作预配群集后进行更新。

创建专用节点池

若要了解如何创建专用节点池,请参阅以下文章:

设置环境变量。

  • 在 shell 中设置以下环境变量以简化本文中的命令。 可以将值更改为首选名称。

    export RESOURCE_GROUP_NAME="my-aks-rg"
    export LOCATION="eastus"
    export CLUSTER_NAME="my-aks-cluster"
    export NODE_POOL_NAME="mynodepool"
    

创建资源组

  • 使用 az group create 命令创建 Azure 资源组。

    az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
    

使用 Azure CLI 创建具有单节点池的 AKS 群集

如果希望 AKS 群集中只有一个节点池,则可以在系统节点池上安排应用程序 pod。 如果在生产环境中为 AKS 群集运行单个系统节点池,则建议至少将三个节点用作节点池。 如果一个节点出现故障,冗余会受到影响。 可以通过增加系统节点池节点来缓解此风险。

  1. 使用命令创建具有单个 Ubuntu 节点池的 az aks create 群集。 此步骤指定单个节点池中的两个节点。

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --os-sku Ubuntu \
        --location $LOCATION \
        --load-balancer-sku standard \
        --generate-ssh-keys
    

    创建群集需要几分钟时间。

  2. 创建好群集后,使用 az aks get-credentials 命令获取群集凭据。

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

使用 Azure CLI 添加第二个节点池

上一部分中 创建的集群具有单个节点池。 在本部分中,我们将第二个节点池添加到群集。 第二个节点池可以具有 OS 类型为 Linux 且 OS SKU 为 UbuntuAzureLinux,或者具有 OS 类型为 Windows

注意

如果要将使用临时 OS 磁盘的节点池添加到 AKS 群集,可以在运行--node-osdisk-type命令时将Ephemeral标志设置为az aks nodepool add

如果使用临时 OS,可以部署不超过 VM 缓存大小的 VM 和实例映像。 在 AKS 中默认节点 OS 磁盘配置使用 128 GB,这意味着所需 VM 大小的缓存大于 128 GB。 默认值 Standard_DS2_v2 的缓存大小为 86 GB,不够大。 Standard_DS3_v2 VM SKU 的缓存大小为 172 GB,足够大。 还可以使用--node-osdisk-size减少 OS 磁盘的默认大小,但请记住,AKS 映像的最小大小为 30 GB。

如果要创建具有网络连接 OS 磁盘的节点池,可以在运行--node-osdisk-type命令时将Managed标志设置为az aks nodepool add

添加 Linux 节点池

  • 使用 az aks nodepool add 命令新建一个节点池。 以下示例创建一个具有Linux OS SKU的Ubuntu节点池,该节点池运行三个节点。 如果未指定 OS SKU,则 AKS 默认为 Ubuntu

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-vm-size Standard_DS2_v2 \
        --os-type Linux \
        --os-sku Ubuntu \
        --node-count 3
    

    创建节点池需要几分钟时间。

添加 Windows Server 节点池

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

    重要说明

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

    az extension add --name aks-preview
    
  2. 使用 az extension update 命令更新到扩展的最新版本。 Windows Server 2025 至少需要 18.0.0b5

    az extension update --name aks-preview
    
注册 AksWindows2025Preview 功能标志
  1. 使用 AksWindows2025Preview 命令注册 az feature register 功能标志。

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

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

    az provider register --namespace Microsoft.ContainerService
    
创建 Windows Server 2025 节点池
  • 使用 az aks nodepool add 命令新建一个节点池。 以下示例创建一个具有Windows OS SKU的Windows2025节点池,该节点池运行三个节点。

    有关 Windows OS 的详细信息,请参阅 Windows 最佳做法

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-vm-size Standard_DS2_v2 \
        --os-type Windows \
        --os-sku Windows2025 \
        --node-count 3
    

检查节点池的状态

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

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

使用 ARM 模板创建具有单个节点池的 AKS 群集

如果希望 AKS 群集中只有一个节点池,则可以在系统节点池上安排应用程序 pod。 如果在生产环境中为 AKS 群集运行单个系统节点池,则建议至少将三个节点用作节点池。 如果一个节点出现故障,冗余会受到影响。 可以通过增加系统节点池节点来缓解此风险。

创建 Microsoft.ContainerService/managedClusters 资源

  • 通过将Microsoft.ContainerService/managedClusters添加到模板中来创建资源。
  • 通过对 ARM 模板进行以下修改,在 AKS 群集中创建单个 Ubuntu 节点池:

      "properties": {
        "agentPoolProfiles": [
        {
            "count": "1",
            "osSKU": "ubuntu",
            "osType": "linux"
         } 
         ],
    }
    

使用 ARM 模板添加第二个节点池

上一部分中 创建的集群具有单个节点池。 在本部分中,我们将第二个节点池添加到群集。 第二个节点池可以具有 OS 类型为 Linux 且 OS SKU 为 UbuntuAzureLinux,或者具有 OS 类型为 Windows

添加 Linux 节点池

  • 通过对 ARM 模板进行以下修改,在 AKS 群集中创建多个 Ubuntu 节点池:

      "properties": {
        "agentPoolProfiles": [
        {
            "count": "3",
            "osSKU": "ubuntu",
            "osType": "linux"
         } 
         ],
    }
    

添加 Windows Server 节点池

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

    重要说明

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

    az extension add --name aks-preview
    
  2. 使用 az extension update 命令更新到扩展的最新版本。 Windows Server 2025 至少需要 18.0.0b5

    az extension update --name aks-preview
    
注册 AksWindows2025Preview 功能标志
  1. 使用 AksWindows2025Preview 命令注册 az feature register 功能标志。

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

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

    az provider register --namespace Microsoft.ContainerService
    
创建 Windows Server 2025 节点池
  • 通过对 ARM 模板进行以下修改,在 AKS 群集中创建多个 Windows 节点池:

      "properties": {
        "agentPoolProfiles": [
        {
            "count": "3",
            "osSKU": "windows2025",
            "osType": "windows"
         } 
         ],
    }
    

部署 ARM 模板

为节点池设置污点、标签或标识

创建节点池时,可向它添加排斥、标签或标记。 添加排斥、标签或标记时,该节点池中的所有节点也会获取该排斥、标签或标记。 建议将这些属性应用到整个节点池而不是单个节点。 这样,可以通过更新节点池属性而不是单独更新每个节点,轻松管理节点池中所有节点的属性。

有关如何为节点池设置污点、标签或标记的特定说明,请使用以下资源:

后续步骤

本文介绍了如何使用单节点池创建 AKS 群集,并将其他节点池添加到群集。 若要详细了解如何管理节点池,请参阅以下文章: