Compartir a través de

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

在本文中,你将了解 AKS 的新虚拟机节点池类型。

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

概述

工作原理

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

若要启用多种虚拟机大小的缩放,虚拟机节点池类型使用ScaleProfile,该元素包含配置列表,列出所需的虚拟机大小和每种大小的数量,以指示节点池如何进行缩放。 A ManualScaleProfile 是一个缩放配置文件,它指定一个所需的虚拟机大小和节点池中该类型的总计数。 ManualScaleProfile 中只允许一个虚拟机大小。 需要为节点池中的每个虚拟机大小创建单独的 ManualScaleProfile。 在创建新的虚拟机节点池时,根据以下说明,使用 vm-size 字段为虚拟机规模添加初始手动缩放配置文件,并确保包含 node-count。 还可以按照 添加手动缩放配置文件的说明添加其他手动缩放配置文件

注意

创建新的虚拟机实例池时,可以有多个缩放配置文件,并且实例池中至少需要一个手动缩放配置文件。

优点

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

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

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

功能对比

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

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

限制

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

先决条件

  • Azure 订阅。 如果没有,可以创建一个试用帐户
  • 已安装并配置 Azure CLI 2.73.0 或更高版本。 若要查找版本,请运行 az --version。 有关安装或升级 Azure CLI 的详细信息,请参阅 安装 Azure CLI
  • 此功能需要 kubernetes 版本 1.27 或更高版本。 若要升级 kubernetes 版本,请参阅 升级 AKS 群集

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

注意

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

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

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

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

创建启用了 Windows 的群集和 Windows 虚拟机节点池

已启用 Windows 的群集中提供了虚拟机节点池。 以下示例使用虚拟机节点池创建名为 myAKSCluster 的群集。 这些步骤首先创建 Linux 系统池。

  1. 创建用户名,用作群集上 Windows Server 节点的管理员凭据。 以下命令会提示输入用户名,并将其设置为 WINDOWS_USERNAME ,以便在后面的命令中使用。

    echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
    
  2. 为你在上一步中创建的管理员用户名创建密码。 密码必须至少为 14 个字符,并且满足 [Windows Server 密码复杂性要求][windows-server-password]。

    echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
    
  3. 使用az aks create设置为标志的--vm-set-type命令"VirtualMachines"创建启用了 Windows 的 AKS 群集和虚拟机类型节点池。

    az aks create \ 
       --resource-group myResourceGroup \
       --name myAKSCluster \
       --node-count 2 \
       --enable-addons monitoring \
       --generate-ssh-keys \
       --windows-admin-username $WINDOWS_USERNAME \
       --windows-admin-password $WINDOWS_PASSWORD \
       --vm-set-type "VirtualMachines" \
       --network-plugin azure
    
  4. 使用将az aks nodepool add标志设置为--vm-set-type"VirtualMachines"命令,将虚拟机节点池添加到已启用 Windows 的现有群集。 以下示例将名为 npwin 的虚拟机节点池添加到 myAKSCluster 群集:

    az aks nodepool add
       --resource-group myResourceGroup \
       --cluster-name myAKSCluster \
       --os-type Windows \
       --name npwin \
       --vm-sizes "Standard_D2s_V3" \
       --node-count 1
       --vm-set-type "VirtualMachines"
    

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

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

    以下示例将名为 myvmpool 的虚拟机节点池添加到 myAKSCluster 群集。 节点池创建了一个ManualScaleProfile,其中将--vm-sizes设置为Standard_D4s_v3,并将--node-count设置为3:

    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"node-count设置为2。

    以下示例将一个手动缩放配置文件添加到 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 中的节点池,请参阅创建节点池