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

委托 AKS 群集

Azure 专用 5G 核心服务中的数据包核心实例在已启用 Arc 的 Azure Kubernetes 服务 (AKS) 群集上运行,该群集在 Azure Stack Edge (A标准版) 设备上运行。 本操作指南介绍如何在 A 上委托 AKS 群集标准版以便可以部署数据包核心实例。

重要

此过程只能用于 Azure 专用 5G 核心版。 其他服务不支持 A标准版 上的 AKS。

先决条件

在 Azure Stack Edge 设备上为 Azure 专用 MEC 配置 Kubernetes

这些步骤修改 Azure Stack Edge 设备上的 Kubernetes 群集,以针对 Azure 专用 MEC 工作负荷对其进行优化。

  1. 在本地 UI 中,选择 左侧菜单中的 Kubernetes
  2. “选择最能描述方案的选项”下,选择 环境中的 Azure 专用 MEC 解决方案。
  3. “工作负荷确认”弹出窗口中,选择“确认我在我的环境中运行 Azure 专用 MEC”,然后单击“应用”关闭弹出窗口。
  4. 单击“应用”保存所做的更改。

Screenshot of ASE Kubernetes configuration menu. The Azure Private MEC radio button is selected. The Workload confirmation popup is overlaid.

应用这些更改后,应会看到本地 UI 中的更新选项 – Kubernetes 将成为 Kubernetes(预览版),如下图所示。

Screenshot of configuration menu, with Kubernetes (Preview) highlighted.

如果转到Azure 门户并导航到 Azure Stack Edge 资源,应会看到Azure Kubernetes 服务选项。 你将在“启动群集”中设置Azure Kubernetes 服务并设置 Arc

Screenshot of Azure Stack Edge resource in the Azure portal. Azure Kubernetes Service (PREVIEW) is shown under Edge services in the left menu.

设置高级网络

现在,需要在这些交换机上配置虚拟交换机和虚拟网络。 你将使用 Azure Stack Edge 本地 UI 的高级网络 部分来执行此任务。

可以在选择底部的“应用”以一次性应用所有设置之前输入此页上的所有设置。

  1. 配置三个虚拟交换机。 在下一步之前,必须有一个与每个端口关联的虚拟交换机。 如果已设置其他虚拟网络功能(VNF),则虚拟交换机可能已存在。 在选择“修改”以保存该配置之前,选择“添加虚拟交换机”并相应地填充每个交换机的侧面板。

    • 在应启用计算的端口上创建虚拟交换机(管理端口)。 建议使用格式 vswitch-portX,其中 X 是端口号。 例如,在端口 2 上创建 vswitch-port2
    • 使用名称 vswitch-port3 在端口 3 上创建虚拟交换机。
    • 使用名称 vswitch-port4 在端口 4 上创建虚拟交换机。

    现在应会看到类似于下图的内容: Screenshot showing three virtual switches, where the names correspond to the network interface the switch is on.

  1. 配置三个虚拟交换机。 在下一步之前,必须有一个与每个端口关联的虚拟交换机。 如果已设置其他虚拟网络功能(VNF),则虚拟交换机可能已存在。 在选择“修改”以保存该配置之前,选择“添加虚拟交换机”并相应地填充每个交换机的侧面板。

    • 在应启用计算的端口上创建虚拟交换机(管理端口)。 建议使用格式 vswitch-portX,其中 X 是端口号。 例如,在端口 3 上创建 vswitch-port3
    • 使用名称 vswitch-port5 在端口 5 上创建虚拟交换机。
    • 使用名称 vswitch-port6 在端口 6 上创建虚拟交换机。

    现在应会看到类似于下图的内容: Screenshot showing three virtual switches, where the names correspond to the network interface the switch is on.

  1. 创建表示以下接口的虚拟网络(在“分配子网”和“IP 地址”中 为其分配了子网和 IP 地址):

    • 控制平面访问接口
    • 用户平面访问接口
    • 用户平面数据接口(s)

    可以自行命名这些网络,但名称必须与部署 Azure 专用 5G Core 时在Azure 门户中配置的名称匹配。 例如,可以使用名称 N2、N3 和最多 10 个 N6-DNX(其中 X 是多个 DN 部署中的 DN 数字 1-10;对于单个 DN 部署,仅使用 N6)。 可以选择使用虚拟局域网标识符(VLAN ID)配置每个虚拟网络,以启用第 2 层流量分离。 以下示例适用于不使用 VLAN 的 5G 多 DN 部署。

  1. 执行以下过程三次,以及每个补充数据网络一次(如果最多有十个数据网络,总共有 12 次):

    重要

    如果对数据网络使用端口 3,建议将其用于预期的最低负载。

    1. 选择“ 添加虚拟网络 ”并填写侧面板:
      • 虚拟交换机:选择 N2、N3 和最多四个 DN 的 vswitch-port3 ,然后选择 最多 6 个 DN 的 vswitch-port4
      • 名称N2N3N6-DNX (其中 X 是 DN 号 1-10)。
      • VLAN:VLAN ID,如果未使用 VLAN,则为 0
      • 网络网关:对 A标准版 端口上配置的 IP 地址使用正确的子网和网关(即使网关未在 A 上设置标准版端口本身)。
        • 例如, 10.232.44.0/2410.232.44.1
        • 如果子网没有默认网关,请使用子网中的另一个 IP 地址,该地址将响应 ARP 请求(例如 RAN IP 地址之一)。 如果通过交换机连接了多个 gNB,请选择网关的 IP 地址之一。
      • DNS 服务器DNS 后缀 应留空。
    2. 选择“修改”保存此虚拟网络的配置。
    3. 选择页面底部的“应用,并等待通知(钟形图标)确认已应用设置。 应用设置大约需要 8 分钟。 页面现在应如下图所示:

Screenshot showing Advanced networking, with a table of virtual switch information and a table of virtual network information.

  1. 执行以下过程三次,以及每个补充数据网络一次(如果最多有十个数据网络,总共有 12 次):

    重要

    如果对数据网络使用端口 5,建议将其用于预期的最低负载。

    1. 选择“ 添加虚拟网络 ”并填写侧面板:
      • 虚拟交换机:选择 N2、N3 和最多 4 个 DN 的 vswitch-port5 ,并选择 vswitch-port6,最多选择 6 个 DN。
      • 名称N2N3N6-DNX (其中 X 是 DN 号 1-10)。
      • VLAN:VLAN ID,如果未使用 VLAN,则为 0
      • 网络网关:对 A标准版 端口上配置的 IP 地址使用正确的子网和网关(即使网关未在 A 上设置标准版端口本身)。
        • 例如, 10.232.44.0/2410.232.44.1
        • 如果子网没有默认网关,请使用子网中的另一个 IP 地址,该地址将响应 ARP 请求(例如 RAN IP 地址之一)。 如果通过交换机连接了多个 gNB,请选择网关的 IP 地址之一。
      • DNS 服务器DNS 后缀 应留空。
    2. 选择“修改”保存此虚拟网络的配置。
    3. 选择页面底部的“应用,并等待通知(钟形图标)确认已应用设置。 应用设置大约需要 8 分钟。 页面现在应如下图所示:

Screenshot showing Advanced networking, with a table of virtual switch information and a table of virtual network information.

添加计算和 IP 地址

在本地 Azure Stack Edge UI 中,转到 Kubernetes(预览版) 页。 设置所有配置,然后应用一次,就像设置高级网络样。

  1. 在“计算虚拟交换机”下,选择“修改”。
    1. 选择计算意向的 vswitch(例如 vswitch-port2
    2. 在管理网络上的节点 IP 地址范围内输入六个 IP 地址。
    3. 在服务 IP 地址的范围中输入一个 IP 地址,同时在管理网络上输入一个 IP 地址。 这将用于访问数据包核心实例的本地监视工具。
    4. 选择 面板底部的“修改 ”以保存配置。
  2. 在“虚拟网络”下,从 N2N3N6-DNX(其中 X 是 DN 号 1-10)中选择虚拟网络。 在侧面板中:
    1. 为 Kubernetes 启用虚拟网络并添加 IP 地址池。 为相应的地址添加一个 IP 地址范围(如前面收集的 N2、N3 或 N6-DNX)。 例如, 10.10.10.20-10.10.10.20
    2. 对每个 N2、N3 和 N6-DNX 虚拟网络重复上述操作。
    3. 选择 面板底部的“修改 ”以保存配置。
  3. 选择 页面底部的“应用 ”,并等待应用设置。 应用设置大约需要 5 分钟。

页面现在应如下图所示:

Screenshot showing Kubernetes (Preview) with two tables. The first table is called Compute virtual switch and the second is called Virtual network. A green tick shows that the virtual networks are enabled for Kubernetes.

Screenshot showing Kubernetes (Preview) with two tables. The first table is called Compute virtual switch and the second is called Virtual network. A green tick shows that the virtual networks are enabled for Kubernetes.

在 A 上启用 VM 管理标准版

  1. 访问Azure 门户,并转到在Azure 门户中创建的 Azure Stack Edge 资源。
  2. 选择 边缘服务
  3. 选择“虚拟机”。
  4. 选择启用

启动群集并设置 Arc

如果在 Azure Stack Edge 上运行其他 VM,建议立即停止这些 VM,并在部署群集后再次启动它们。 群集需要访问运行 VM 的特定 CPU 资源可能已在使用。

  1. 访问Azure 门户,并转到在Azure 门户中创建的 Azure Stack Edge 资源。

  2. 若要部署群集,请选择 Kubernetes 选项,然后选择“ 添加 ”按钮以配置群集。

    Screenshot of Kubernetes Overview pane, showing the Add button to configure Kubernetes service.

  3. 对于节点大小,请选择Standard_F16s_HPN

  4. 确保选中已启用 Arc 的 Kubernetes 检查 框。

  5. 选择“更改”链接,然后输入从“检索对象 ID”(OID)获取的自定义位置的 Microsoft Entra 应用程序对象 ID (OID)。

    Screenshot of Configure Arc enabled Kubernetes pane, showing where to enter the custom location OID.

  6. 已启用 Arc 的 Kubernetes 服务会自动在 Azure Stack Edge 资源所在的同一资源组中创建。 如果 Azure Stack Edge 资源组不在支持 Azure 专用 5G 核心的区域,则必须更改该区域。

  7. 单击“配置以应用配置。

  8. 检查“区域”和“Microsoft Entra 应用程序对象 ID”(OID)字段显示相应的值,然后单击“创建”。

  9. 请完成提示以设置服务。

创建 Kubernetes 群集大约需要 20 分钟。 在创建期间,Azure Stack Edge 资源上可能会显示一个严重警报。 此警报是预期的,几分钟后应消失。

部署后,门户应显示 Kubernetes 服务正在概述页上运行

设置 kubectl 访问

需要 kubectl 访问权限才能验证群集是否已成功部署。 若要对群集进行只读 kubectl 访问,可以从 A标准版 本地 UI 下载 kubeconfig 文件。 在“设备”下,选择“下载配置”。

Screenshot of Kubernetes dashboard showing link to download config.

下载的文件称为 config.json。 此文件有权描述 Pod 和查看日志,但无权使用 kubectl exec 访问 Pod。

设置门户访问权限

在Azure 门户中打开 Azure Stack Edge 资源。 转到Azure Kubernetes 服务窗格(显示在“启动群集并设置 Arc”中),然后选择“管理”链接以打开 Arc 窗格。

Screenshot of part of the Azure Kubernetes Service (PREVIEW) Overview pane, showing the Manage link for Arc enabled Kubernetes.

使用 Kubernetes 资源(预览)菜单中的选项浏览群集:

Screenshot of Kubernetes resources (preview) menu, showing namespaces, workloads, services and ingresses, storage and configuration options.

最初会显示一个登录请求框。 用于登录的令牌是从设置 kubectl 访问中的本地 UI 检索的 kubeconfig 文件获取的。 有一个以标记为前缀的字符串:在 kubeconfig 文件的末尾附近。 将此字符串复制到门户中的框中(确保未复制换行符),然后选择 “登录”。

Screenshot of sign-in screen for Kubernetes resource. There's a box to enter your service account bearer token and a sign-in button.

现在可以查看有关群集上运行的内容的信息 - 下面是“工作负荷”窗格中的示例

Screenshot of Workloads pane in Kubernetes resources (preview). The pods tab is active and shows details about what's running.

验证群集配置

应通过使用在“设置 kubectl 访问”中从 UI 下载的 kubeconfig 运行以下 kubectl 命令来验证 AKS 群集是否已正确设置:

kubectl get nodes

此命令应返回两个节点,一个名为 nodepool-aaa-bbb 和一个名为 target-cluster-control-plane-ccc

若要查看所有正在运行的 Pod,请运行:

kubectl get pods -A

此外,AKS 群集现在应在门户中的 Azure Stack Edge 资源中可见。

收集 Kubernetes 扩展的变量

收集下表中的每个值。

变量名称
在其中部署 Azure 资源的 Azure 订阅的 ID。 SUBSCRIPTION_ID
在其中部署 AKS 群集的资源组的名称。 可以使用Azure 门户Azure Kubernetes 服务窗格中的“管理”按钮找到此项。 RESOURCE_GROUP_NAME
AKS 群集资源的名称。 可以使用Azure 门户Azure Kubernetes 服务窗格中的“管理”按钮找到此项。 RESOURCE_NAME
在其中部署 Azure 资源的区域。 这必须与将移动网络部署到的区域匹配,该区域必须是 AP5GC 支持的区域之一。

此值必须是 区域的代码名称
LOCATION
要为 AKS 群集创建的自定义位置资源的名称

此值必须以字母数字字符开头和结尾,并且必须仅包含字母数字字符或 -.
CUSTOM_LOCATION

安装 Kubernetes 扩展

Azure 专用 5G 核心专用移动网络需要自定义位置和特定的 Kubernetes 扩展,需要在 Azure Cloud Shell 中使用 Azure CLI 进行配置。

  1. 使用 Azure Cloud Shell 登录到 Azure CLI,并从下拉菜单中选择 Bash

  2. 使用部署所需的值设置以下环境变量:

    SUBSCRIPTION_ID=<subscription ID>
    RESOURCE_GROUP_NAME=<resource group name>
    LOCATION=<deployment region, for example eastus>
    CUSTOM_LOCATION=<custom location for the AKS cluster>
    ARC_CLUSTER_RESOURCE_NAME=<resource name>
    TEMP_FILE=./tmpfile
    
  3. 准备 shell 环境:

    az account set --subscription "$SUBSCRIPTION_ID"
    az extension add --upgrade --name k8s-extension
    az extension add --upgrade --name customlocation
    
  4. 创建网络函数操作员 Kubernetes 扩展:

    cat > $TEMP_FILE <<EOF
    {
      "helm.versions": "v3",
      "Microsoft.CustomLocation.ServiceAccount": "azurehybridnetwork-networkfunction-operator",
      "meta.helm.sh/release-name": "networkfunction-operator",
      "meta.helm.sh/release-namespace": "azurehybridnetwork",
      "app.kubernetes.io/managed-by": "helm",
      "helm.release-name": "networkfunction-operator",
      "helm.release-namespace": "azurehybridnetwork",
      "managed-by": "helm"
    }
    EOF 
    
    az k8s-extension create \
    --name networkfunction-operator \
    --cluster-name "$ARC_CLUSTER_RESOURCE_NAME" \
    --resource-group "$RESOURCE_GROUP_NAME" \
    --cluster-type connectedClusters \
    --extension-type "Microsoft.Azure.HybridNetwork" \
    --auto-upgrade-minor-version "true" \
    --scope cluster \
    --release-namespace azurehybridnetwork \
    --release-train preview \
    --config-settings-file $TEMP_FILE 
    
  5. 创建数据包核心监视器 Kubernetes 扩展:

    az k8s-extension create \
    --name packet-core-monitor \
    --cluster-name "$ARC_CLUSTER_RESOURCE_NAME" \
    --resource-group "$RESOURCE_GROUP_NAME" \
    --cluster-type connectedClusters \
    --extension-type "Microsoft.Azure.MobileNetwork.PacketCoreMonitor" \
    --release-train stable \
    --auto-upgrade true 
    
  6. 创建自定义位置:

    az customlocation create \
    -n "$CUSTOM_LOCATION" \
    -g "$RESOURCE_GROUP_NAME" \
    --location "$LOCATION" \
    --namespace azurehybridnetwork \
    --host-resource-id "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Kubernetes/connectedClusters/$ARC_CLUSTER_RESOURCE_NAME" \
    --cluster-extension-ids "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Kubernetes/connectedClusters/$ARC_CLUSTER_RESOURCE_NAME/providers/Microsoft.KubernetesConfiguration/extensions/networkfunction-operator"
    

应会看到新的自定义位置在指定资源组中的Azure 门户中显示为资源。 kubectl get pods -A使用命令(有权访问 kubeconfig 文件)还应显示与已安装的扩展对应的新 Pod。 azurehybridnetwork 命名空间中应有一个 Pod,一个 Pod 位于 packet-core-monitor 命名空间中

回退

如果在 Azure Stack Edge 配置中出错,可以使用门户删除 AKS 群集(请参阅 在 Azure Stack Edge 上部署 Azure Kubernetes 服务)。 然后,可以通过本地 UI 修改设置。

或者,可以使用本地 UI 中的“设备重置”边栏选项卡执行完全重置(请参阅 Azure Stack Edge 设备重置和重新激活),然后重启此过程。 在这种情况下,在完成 Azure Stack Edge 重置后,还应删除Azure 门户中留下的任何关联资源。 这将包括以下部分或全部内容,具体取决于你完成的过程有多远:

  • Azure Stack Edge 资源
  • Azure Stack Edge 资源关联的自动生成的 KeyVault
  • 与 Azure Stack Edge 资源关联的自动生成存储Account
  • Azure Kubernetes 群集 (如果已成功创建)
  • 自定义位置 (如果已成功创建)

部署后更改 A标准版 配置

部署数据包核心后,可能需要更新 A标准版 配置,例如添加或删除附加的数据网络或更改 IP 地址。 若要更改 A标准版配置,请销毁自定义位置和Azure Kubernetes 服务资源,更改 A标准版配置,然后重新创建这些资源。 这样,就可以暂时断开数据包核心的连接,而不是销毁并重新创建它,从而最大程度地减少所需的重新配置。 可能还需要对数据包核心配置进行等效更改。

注意

在此过程中,数据包核心将不可用。 如果要更改正常的数据包核心实例,建议在维护时段内运行此过程,以最大程度地减少对服务的影响。

  1. 导航到Azure 门户中的资源组概述(对于包含数据包核心的资源组)。 选择“数据包核心控制平面”资源,然后选择“修改数据包核心”。 将 Azure Arc 自定义位置 设置为 “无 ”,然后选择“ 修改”。
  2. 导航到包含 自定义位置 资源的资源组。 选择自定义位置资源的刻度框,然后选择“删除”。 确认删除。
  3. 导航到 Azure Stack Edge 资源并删除Azure Kubernetes 服务的所有配置
  4. 访问 A标准版本地 UI 并根据需要更新配置。
  5. 重新创建 Kubernetes 群集。 请参阅 “启动群集”并设置 Arc
  6. 重新创建自定义位置资源。 选择 数据包核心控制平面 资源,然后选择“ 配置自定义位置”。

数据包核心现在应位于具有更新的 A标准版 配置的服务中。 若要更新数据包核心配置,请参阅 修改数据包核心实例

后续步骤

Azure Stack Edge 设备现已准备好使用 Azure 专用 5G 核心版。 下一步是收集部署专用网络所需的信息。