创建没有公共 IP 地址的 Batch 池(预览版)

警告

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

重要

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

创建 Azure Batch 池时,无需公共 IP 地址即可预配虚拟机配置池。 本文介绍如何在没有公共 IP 地址的情况下设置 Batch 池。

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

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

要限制对这些节点的访问并减少这些节点在互联网中的可发现性,可以预配置一个没有公共 IP 地址的池。

先决条件

  • 身份验证。 若要在 虚拟网络中使用没有公共 IP 地址的池,Batch 客户端 API 必须使用Microsoft Entra 身份验证。 Azure Batch 支持 Microsoft Entra ID 的文档记录在 使用 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. Batch 计算节点的自定义终结点配置不适用于没有公共 IP 地址的池。
  3. 由于没有公共 IP 地址,因此不能 将自己的指定公共 IP 地址 用于这种类型的池。
  4. 基本 VM 大小 不适用于没有公共 IP 地址的池。

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

  1. 导航到 Azure 门户中的 Batch 帐户。
  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 发行版本。 请考虑更新到最新版本。

对互联网的出站访问

在没有公共 IP 地址的池中,除非正确配置网络设置,例如使用 虚拟网络 NAT,否则虚拟机将无法访问公共 Internet。 NAT 仅允许从虚拟网络中的虚拟机对 Internet 进行出站访问。 无法公开访问批处理创建的计算节点,因为它们没有关联的公共 IP 地址。

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

后续步骤