创建不具有公共 IP 地址的 Batch 池(预览)

警告

此预览版将于 2023 年 3 月 31 日停用,并替换为没有公共 IP 地址的简化节点通信池。 有关详细信息,请参阅停用迁移指南

重要

  • 以下区域中,支持 Azure Batch 中没有公共 IP 地址的池,但这种支持目前处于公共预览版:法国中部、东亚、美国西部、美国中南部、美国西部 2、美国东部、北欧、美国东部 2、美国中部、西欧、美国中北部、美国西部、澳大利亚东部、日本东部、日本西部。
  • 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
  • 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

创建 Azure Batch 池时,可以预配没有公共 IP 地址的虚拟机配置池。 本文介绍如何设置没有公共 IP 地址的 Batch 池。

为何使用不具有公共 IP 地址的池?

默认情况下,将为 Azure Batch 虚拟机配置池中的所有计算节点分配一个公共 IP 地址。 Batch 服务使用此地址来计划任务以及与计算节点的通信,包括对 Internet 的出站访问。

要限制对这些节点的访问并减少从 Internet 发现的这些节点的能力,可以预配无公共 IP 地址的池。

先决条件

  • 身份验证。 若要在虚拟网络中使用没有公共 IP 地址的池,Batch 客户端 API 必须使用Microsoft Entra身份验证。 使用 Microsoft Entra ID 对Azure Batch服务进行身份验证中记录了对Microsoft Entra ID Azure Batch支持。 如果未在虚拟网络中创建池,则可以使用Microsoft Entra身份验证或基于密钥的身份验证。

  • 一个 Azure VNet。 如果要在虚拟网络中创建池,请遵循以下要求和配置。 若要提前准备具有一个或多个子网的 VNet,可以使用 Azure 门户、Azure PowerShell、Azure CLI 或其他方法。

    • VNet 必须与用于创建池的 Batch 帐户位于同一订阅和区域中。

    • 为池指定的子网必须提供足够的未分配 IP 地址来容纳面向该池的 VM 的数量;即,池的 targetDedicatedNodestargetLowPriorityNodes 属性的总和。 如果子网没有足够的未分配 IP 地址,池将分配部分计算节点,并发生调整大小错误。

    • 必须禁用专用链接服务和终结点网络策略。 可以使用 Azure CLI 完成此操作:

      az network vnet subnet update --vnet-name <vnetname> -n <subnetname> --resource-group <resourcegroup> --disable-private-endpoint-network-policies --disable-private-link-service-network-policies

重要

对于每 100 个专用或现成节点,Batch 会分配一个专用链路服务和一个负载平衡器。 这些资源受订阅的资源配额限制。 对于大型池,可能需要为一个或多个此类资源请求增加配额。 此外,不得将资源锁应用于由 Batch 创建的任何资源,因为这可能会由于用户启动的操作(如删除池或者将池大小调整为零)而导致资源清理被阻止。

当前限制

  1. 没有公共 IP 地址的池必须使用虚拟机配置而不是云服务配置。
  2. 对于没有公共 IP 地址的池,Batch 计算节点的自定义终结点配置不起作用。
  3. 由于没有公共 IP 地址,因此不能将自己指定的公共 IP 地址用于此类型的池。
  4. 基本 VM 大小不适用于没有公共 IP 地址的池。

在 Azure 门户中创建没有公共 IP 地址的池

  1. 导航到 Azure 门户中的批处理帐户。
  2. 在左侧的“设置”窗口中,选择“池”。
  3. 在“池”窗口中,选择“添加”。
  4. 在“添加池”窗口中,从“映像类型”下拉列表中选择要使用的选项。
  5. 为映像选择正确的发布服务器/付费选项/SKU。
  6. 指定剩余所需设置,包括“节点大小”、“目标专用节点”和“现成/低优先级节点”,以及任何所需的可选设置。
  7. (可选)选择要使用的虚拟网络和子网。 此虚拟网络必须与要创建的池位于同一资源组中。
  8. 在“IP 地址预配类型”中,选择“NoPublicIPAddresses”。

选择了 NoPublicIPAddresses 的“添加池”屏幕的屏幕快照。

使用 Batch REST API 来创建没有公共 IP 地址的池

下面的示例展示了如何使用 Batch 服务 REST API 来创建使用公共 IP 地址的池。

REST API URI

POST {batchURL}/pools?api-version=2020-03-01.11.0
client-request-id: 00000000-0000-0000-0000-000000000000

请求正文

"pool": {
     "id": "pool2",
     "vmSize": "standard_a1",
     "virtualMachineConfiguration": {
          "imageReference": {
               "publisher": "Canonical",
               "offer": "UbuntuServer",
               "sku": "20.04-lts"
          },
          "nodeAgentSKUId": "batch.node.ubuntu 20.04"
     }
     "networkConfiguration": {
          "subnetId": "/subscriptions/<your_subscription_id>/resourceGroups/<your_resource_group>/providers/Microsoft.Network/virtualNetworks/<your_vnet_name>/subnets/<your_subnet_name>",
          "publicIPAddressConfiguration": {
               "provision": "NoPublicIPAddresses"
          }
     },
     "resizeTimeout": "PT15M",
     "targetDedicatedNodes": 5,
     "targetLowPriorityNodes": 0,
     "taskSlotsPerNode": 3,
     "taskSchedulingPolicy": {
          "nodeFillType": "spread"
     },
     "enableAutoScale": false,
     "enableInterNodeCommunication": true,
     "metadata": [
          {
               "name": "myproperty",
               "value": "myvalue"
          }
     ]
}

重要

本文档引用临近或处于生命周期终止 (EOL) 日期的 Linux 发行版本。 请考虑更新到最新版本。

对 Internet 的出站访问

在没有公共 IP 地址的池中,你的虚拟机将无法访问公共 Internet,除非你适当地配置了网络设置,例如使用虚拟网络 NAT。 NAT 仅允许从虚拟网络中的虚拟机对 Internet 进行出站访问。 Batch 创建的计算节点将无法被公开访问,因为这些计算节点没有关联的公共 IP 地址。

提供出站连接的另一种方法是使用用户定义的路由 (UDR)。 使用此方法可以将流量路由到具有公共 Internet 访问权限的代理计算机。

后续步骤