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

在 Azure Kubernetes 服务 (AKS) 中使用虚拟机节点池(预览版)

在本文中,你将了解适用于 AKS 的新虚拟机节点池类型(预览版)。

通过使用虚拟机节点池,AKS 直接管理每个节点的预配和启动。 对于虚拟机规模集节点池,AKS 管理虚拟机规模集的模型,并使用它跨节点池中的所有节点实现一致性。 借助虚拟机节点池,可以使用最适合单个工作负载的虚拟机来协调群集。

概述

工作原理

节点池由一组虚拟机组成,其中指定了不同的虚拟机大小以支持不同类型的工作负载。 这些虚拟机大小(称为 SKU)分为针对特定用途进行优化的不同系列。 有关详细信息,请参阅 VM SKU

为了实现多个虚拟机大小的缩放,虚拟机节点池类型使用 ScaleProfile,其中包含指示节点池如何缩放的配置,特别是所需的虚拟机大小和计数列表。 ManualScaleProfile 是一个缩放配置文件,用于指定所需的虚拟机大小和计数。 ManualScaleProfile 中只允许一个虚拟机大小。 需要为节点池中的每个虚拟机大小创建单独的 ManualScaleProfile

注意

创建新的虚拟机节点池时,ScaleProfile 中至少需要一个 ManualScaleProfile。 一个虚拟机节点池可以有多个手动缩放配置文件。

优点

虚拟机节点池类型的优点包括:

  • 灵活性:可更新节点规范,以适应当前的工作负载和需求。
  • 微调控制:单节点级控件支持指定和混合不同规格的节点,以解除单个模型的限制并提高一致性。
  • 效率:可以减少群集的节点占用,从而简化操作要求。

虚拟机节点池为动态工作负载和高可用性要求提供更好的体验。 使用虚拟机节点池可以在一个节点池中设置多个相似系列的虚拟机。 工作负载将自动根据你配置的可用资源进行计划。

功能对比

下表重点介绍了虚拟机节点池与标准规模集节点池的比较情况。

节点池类型 功能
虚拟机节点池 可以在节点池中添加、删除或更新节点。 虚拟机类型可以是同一系列类型的任何虚拟机(例如 D 系列、A 系列等)。
基于虚拟机规模集的节点池 可以在节点池中添加或删除大小和类型相同的节点。 如果将新的虚拟机大小添加到群集,需要创建新的节点池。

限制

  • 目前不支持群集自动缩放程序
  • InifiniBand 不可用。
  • 不支持 Windows 节点池。
  • Azure 门户不支持此功能。 必须使用 Azure CLI 或 REST API 来执行 CRUD 操作或管理池。
  • 不支持节点池快照
  • 在一个节点池中选定的所有 VM 大小需要来自一个相似的虚拟机系列。 例如,不能将 N 系列虚拟机大小与同一节点池中的 D 系列虚拟机大小混合使用。
  • 虚拟机节点池支持每个节点池有最多 5 种不同的虚拟机大小。

先决条件

  • Azure 订阅。 如果没有帐户,可以创建一个免费帐户
  • 虚拟机节点池功能现为预览版。 此功能仅适用于 API 版本 2023-10-02-preview 及更高版本,或者适用于 Azure CLI 扩展版本 2.61.0 或更高版本。
  • 如果使用 Azure CLI,请注册 aks-preview 扩展或将现有 aks-preview 的版本更新到最低版本 4.0.0b4。
  • 此功能所需的最低次要 Kubernetes 版本是版本 1.26。

安装 aks-preview Azure CLI 扩展

重要

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

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

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

    az extension update --name aks-preview
    

注册 VMsAgentPoolPreview 功能标志

  1. 使用 az account set 命令选择要在其中启用功能标志的订阅。

    az account set --subscription <subscription-name>
    
  2. 使用 az feature registration create 命令注册 VMsAgentPoolPreview 功能标志。

    az feature registration create --namespace Microsoft.ContainerService --name VMsAgentPoolPreview
    

    状态显示为“已注册”需要几分钟时间

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

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

    az provider register --namespace "Microsoft.ContainerService"
    

创建具有虚拟机节点池的 AKS 群集

注意

一个缩放配置文件中只允许一种 VM 大小,而一个虚拟机节点池整体上最多支持 5 个 VM 缩放配置文件。

  • --vm-set-type 标志设置为 "VirtualMachines" 的情况下,使用 az aks create 命令创建具有虚拟机节点池的 AKS 群集。

    以下示例会创建一个名为 myAKSCluster 的群集(该群集具有一个包含两个节点的虚拟机节点池),生成 SSH 密钥,将负载均衡器 SKU 设置为“标准”,并将 Kubernetes 版本设置为 1.28.5:

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type "VirtualMachines" \
        --node-count 2 \
        --kubernetes-version 1.28.5
    

将虚拟机节点池添加到现有群集

  • 使用 az aks nodepool add 命令将混合 SKU 节点池添加到现有群集,并将 --vm-set-type 标志设置为 "VirtualMachines"

    以下示例将名为 myvmpool 的虚拟机节点池添加到 myAKSCluster 群集。 节点池有 3 个节点,最大 VM SKU 为 Standard_D4s_v3:

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name myvmpool \
        --vm-set-type "VirtualMachines" \
        --vm-sizes "Standard_D4s_v3" \
        --node-count 3
    

将手动缩放配置文件添加到节点池

  • 使用 az aks nodepool manual-scale add 将手动缩放配置文件添加到节点池,并将 --vm-sizes 标志设置为 "Standard_D2s_v3"

    以下示例将一个手动缩放配置文件添加到 myAKSCluster 群集中的 myvmpool 节点池。 节点池包含两个 VM SKU 为 Standard_D2s_v3 的节点:

    az aks nodepool manual-scale add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name myvmpool \
        --vm-sizes "Standard_D2s_v3" \
        --node-count 2
    

更新现有的手动缩放配置文件

  • 使用 az aks nodepool manual-scale update 命令更新节点池中的现有手动缩放配置文件,并将 --vm-sizes 标志设置为 "Standard_D2s_v3"

    注意

    使用 --current-vm-sizes 参数指定要更新的现有节点池的大小。 可以更新 --vm-sizes 和/或 --node-count。 如果使用其他工具或 REST API,更新节点池缩放配置文件时需要传入完整 agentPoolProfiles.virtualMachinesProfile.scale 字段。

    以下示例将一个手动缩放配置文件更新到 myAKSCluster 群集中的 myvmpool 节点池。 该命令将节点数更新为 5 个,并将 VM SKU 从 Standard_D4s_v3 更改为 Standard_D8s_v3:

    az aks nodepool manual-scale update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name myvmpool \
        --current-vm-sizes "Standard_D4s_v3" \
        --vm-sizes "Standard_D8s_v3" \
        --node-count 5
    

删除手动缩放配置文件

  • 使用 az aks nodepool manual-scale delete 命令删除现有的手动缩放配置文件。

    注意

    --current-vm-sizes 参数指定要删除的现有节点池的大小。 如果使用其他工具或 REST API 更新节点池缩放配置文件,请传入完整的 agentPoolProfiles.virtualMachinesProfile.scale 字段。

    以下示例会删除 myvmpool 节点池中 Standard_D8s_v3 VM SKU 的手动缩放配置文件。

    az aks nodepool manual-scale delete \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name myvmpool \
        --current-vm-sizes "Standard_D8s_v3"
    

后续步骤

本文介绍了如何在 AKS 中使用虚拟机节点池。 若要详细了解 AKS 中的节点池,请参阅创建节点池