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

部署租户工作负载的先决条件

本指南介绍创建以下项的先决条件:

  • 用于虚拟网络功能 (VNF) 工作负荷的虚拟机 (VM)。
  • Nexus Kubernetes 云原生网络功能 (CNF) 工作负载的部署。

租户工作负载部署流的关系图。

网络先决条件

需要根据工作负载需求创建各种网络。 以下注意事项列表并不详尽。 请向相应的支持团队寻求帮助。

  • 确定支持工作负载所需的网络类型:
    • 第 3 层 (L3) 网络需要 VLAN 和子网分配。 子网必须足够大,才能支持向每个 VM 分配 IP。 平台会保留前三个可用 IP 地址供内部使用。 例如,若要支持 6 个 VM,则子网的最小 CIDR 为 /28(14 个可用地址 – 3 个保留地址 == 11 个可用地址)。
    • 第 2 层 (L2) 网络只需要单个 VLAN 分配。
    • 中继网络需要多个 VLAN 分配。
  • 确定每种类型需要的网络数。
  • 确定每个网络的 MTU 大小(最大值为 9000)。
  • 确定每个网络的 BGP 对等互连信息,以及它们是否需要相互通信。 应将需要相互通信的网络分组到同一 L3 隔离域,因为每个 L3 隔离域都可支持多个 L3 网络。
  • 平台会提供一个代理,以允许 VM 访问其他外部终结点。 创建 cloudservicesnetwork 实例需要代理终结点,因此请收集终结点列表。 可以在创建网络后修改终结点列表。

创建隔离域

隔离域支持同一机架(机架内通信)或不同机架(机架间通信)中托管的工作负载之间的通信。 可在此处找到有关创建隔离域的更多详细信息。

为租户工作负载创建网络

以下部分描述如何创建这些网络:

  • 第 2 层网络
  • 第 3 层网络
  • 中继网络

创建 L2 网络

根据需要为工作负载创建 L2 网络。 可以对每个所需的 L2 网络反复按照这些说明操作。

收集你为配置此网络的 VLAN 创建的 L2 隔离域的资源 ID。

  az networkcloud l2network create --name "<YourL2NetworkName>" \
    --resource-group "<YourResourceGroupName>" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId>" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --l2-isolation-domain-id "<YourL2IsolationDomainId>"

创建 L3 网络

根据需要为工作负载创建 L3 网络。 对每个所需的 L3 网络反复按照这些说明操作。

需要:

  • 为配置此网络的 VLAN 而创建的 L3 隔离域的 resourceID 值。
  • ipv4-connected-prefix 值,该值必须与 L3 隔离域中的 i-pv4-connected-prefix 值匹配。
  • ipv6-connected-prefix 值,该值必须与 L3 隔离域中的 i-pv6-connected-prefix 值匹配。
  • ip-allocation-type 值,该值可以是 IPv4IPv6DualStack(默认)。
  • vlan 值,该值必须匹配 L3 隔离域中的值。
  az networkcloud l3network create --name "<YourL3NetworkName>" \
    --resource-group "<YourResourceGroupName>" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId>" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --ip-allocation-type "<YourNetworkIpAllocation>" \
    --ipv4-connected-prefix "<YourNetworkIpv4Prefix>" \
    --ipv6-connected-prefix "<YourNetworkIpv6Prefix>" \
    --l3-isolation-domain-id "<YourL3IsolationDomainId>" \
    --vlan <YourNetworkVlan>

创建中继网络

根据需要为 VM 创建中继网络。 对每个所需的中继网络反复按照这些说明操作。

收集之前为配置此网络的 VLAN 而创建的 L2 和 L3 隔离域的 resourceId 值。 可以包含任意所需数量的 L2 和 L3 隔离域。

  az networkcloud trunkednetwork create --name "<YourTrunkedNetworkName>" \
    --resource-group "<YourResourceGroupName>" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId>" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --interface-name "<YourNetworkInterfaceName>" \
    --isolation-domain-ids \
      "<YourL3IsolationDomainId1>" \
      "<YourL3IsolationDomainId2>" \
      "<YourL2IsolationDomainId1>" \
      "<YourL2IsolationDomainId2>" \
      "<YourL3IsolationDomainId3>" \
    --vlans <YourVlanList>

创建云服务网络

若要创建 Operator Nexus 虚拟机 (VM) 或 Operator Nexus Kubernetes 群集,必须具有云服务网络。 如果没有此网络,则无法创建 VM 或群集。

虽然云服务网络自动启用对基本平台终结点的访问,但如果应用程序需要这些终结点,则需要添加其他终结点,例如 docker.io。 配置云服务网络代理是确保成功连接到所需终结点的关键步骤。 为此,可以使用 --additional-egress-endpoints 参数在初始创建或更新期间将流出量终结点添加到云服务网络。 虽然 URL 终结点的通配符看起来可能很方便,但出于安全原因,不建议这样做。 例如,如果要将代理配置为允许从托管 docker.io 的任何存储库拉取映像,则可以将 .docker.io 指定为终结点。

流出量终结点必须符合 RFC 1034、RFC 1035 和 RFC 1123 中所述的域名结构和主机名规范。 有效的域名包括字母数字字符、连字符(不在开头或结尾),并且可以有用点分隔的子域。 终结点可以是单个 FQDN,也可以是子域(带有 . 的域前缀)。 下面举几个例子来说明域和主机名的合规命名约定。

  • contoso.com:基域,充当 .com 顶级域下的第二级域。
  • sales.contoso.com:contoso.com 的子域,充当 .com 顶级域下的第三级域。
  • web-server-1.contoso.com:特定 Web 服务器的主机名,使用连字符分隔单词和数字。
  • api.v1.contoso.com:在基域 contoso.com 上合并两个子域(v1api)。
  • .api.contoso.comapi.contoso.com 下任何子域的通配符,涵盖多个第三级域。
  az networkcloud cloudservicesnetwork create --name "<YourCloudServicesNetworkName>" \
    --resource-group "<YourResourceGroupName >" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId >" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --additional-egress-endpoints "[{\"category\":\"<YourCategory >\",\"endpoints\":[{\"<domainName1 >\":\"< endpoint1 >\",\"port\":<portnumber1 >}]}]"

设置云服务网络后,可以使用它创建可以连接到指定的流出量终结点的 VM 或群集。 请记住,代理仅适用于 HTTPS。

注意

若要确保可正确拉取 VNF 映像,请确保 ACR URL 位于将用于运营商关系虚拟机的云服务网络的出口允许列表中。

此外,如果 ACR 启用了专用数据终结点,则你需要将所有新的数据终结点添加到出口允许列表。 若要查找 ACR 的所有可能终结点,请按照此处的说明进行操作。

使用代理访问虚拟机外部

使用此云服务网络创建 Operator Nexus VM 或 Operator Nexus Kubernetes 群集后,还需要在 VM 中设置适当的环境变量,以使用租户代理并在虚拟机外部进行访问。 如果需要访问虚拟机外部的资源(例如管理包或安装软件),则此租户代理非常有用。

要使用代理,需要设置以下环境变量:

export HTTPS_PROXY=http://169.254.0.11:3128
export https_proxy=http://169.254.0.11:3128

设置代理环境变量后,虚拟机将能够访问配置的流出量终结点。

注意

出于安全原因,使用代理访问虚拟机外部的资源时不支持 HTTP。 使用此云服务网络在 Operator Nexus VM 或 Operator Nexus Kubernetes 群集上管理包或安装软件时,需要使用 HTTPS 进行安全通信。

重要

使用代理时,正确设置no_proxy环境变量也很重要。 此变量可用于指定不应通过代理访问的域或 IP 地址。 如果未正确设置,可能会导致访问服务(例如 Kubernetes API 服务器或群集 IP)时出现问题。 请确保在no_proxy变量中包含 Kubernetes API 服务器的 IP 地址或域名以及任何群集 IP 地址。

Nexus Kubernetes 群集可用性区域

创建 Nexus Kubernetes 群集时,可以将群集安排到特定机架上,或将其分布到多个机架上。 此方法可以提高资源利用率和容错能力。

如果在创建 Nexus Kubernetes 群集时未指定区域,Azure Operator Nexus 平台会自动实施默认的反关联规则,将 VM 分布到各个机架和裸机节点上,而且并不保证。 此规则还旨在防止在已有来自同一群集的 VM 的节点上计划群集 VM,但此方法无法保证结果。

若要获取 Azure Operator Nexus 实例中可用区域的列表,可以使用以下命令:

    az networkcloud cluster show \
      --resource-group <Azure Operator Nexus on-premises cluster resource group> \
      --name <Azure Operator Nexus on-premises cluster name> \
      --query computeRackDefinitions[*].availabilityZone