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

委托 AKS 群集

Azure 专用 5G 核心服务中的封包核心实例在 Azure Stack Edge (ASE) 设备上已启用 Arc 的 Azure Kubernetes 服务 (AKS) 群集上运行。 本操作指南介绍了如何在 ASE 上置备 AKS 群集,以便准备好部署封包核心实例。

重要

此过程仅适用于 Azure 专用 5G 核心。 其他服务不支持 ASE 上的 AKS。

先决条件

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

这些步骤会修改 Azure Stack Edge 设备上的 Kubernetes 群集,以针对 Azure 专用多接入边缘计算 (MEC) 工作负载进行优化。

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

ASE Kubernetes 配置菜单的屏幕截图。已选中“Azure 专用 MEC”单选按钮。工作负载确认弹出窗口已覆盖。

你应会在本地 UI 中看到更新后的选项 -“Kubernetes”变为“Kubernetes(预览)”,如下图所示

配置菜单的屏幕截图,其中突出显示了“Kubernetes (预览版)”。

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

Azure 门户中 Azure Stack Edge 资源的屏幕截图。“Azure Kubernetes 服务(预览版)”显示在左侧菜单中的“Edge 服务”下。

设置高级网络

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

可以在此页面上输入所有设置,然后选择底部的“应用”以一次性应用所有设置

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

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

    现在应会看到类似于下图的内容:显示三个虚拟交换机的屏幕截图,其中的名称对应于交换机所在的网络接口。

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

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

    现在应会看到类似于下图的内容:显示三个虚拟交换机的屏幕截图,其中的名称对应于交换机所在的网络接口。

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

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

    你可以自行命名这些网络,但名称必须与部署 Azure 专用 5G 核心时在 Azure 门户中配置的名称匹配。 如果使用 VLAN 中继传输(HA 部署需要),则具有一个不含 IP 信息的单个 N6 虚拟网络。 配置移动网络时,将会完成 VLAN 和 IP 信息。 通过此设置,可以使用名称 N2、N3 和 N6。

    在访问 VLAN 或非 VLAN 模式下,每个附加数据网络都有一个 N6 虚拟网络。 可以使用 N2、N3 和最多 10 个 N6-DNX 作为名称(其中,X 是多个 DN 部署中的数据网络 [DN] 编号 1-10;对于单 DN 部署,则只需输入 N6)。 可以选择使用虚拟局域网标识符 (VLAN ID) 配置每个虚拟网络,以启用第 2 层流量分离。 以下示例适用于没有 VLAN 的 5G 多 DN 部署。

  1. 如果使用 VLAN 中继传输(HA 部署需要),请执行三次以下过程:
    1. 选择“添加虚拟网络”并在侧面板中填写信息
      • 虚拟交换机:为 N2 和 N3 选择 vswitch-port3。 为 N6 选择 vswitch-port4。
      • 名称:N2、N3或 N6。
      • VLAN 类型:干线 VLAN
      • 允许的 VLAN ID 范围:填写要配置的 VLAN ID 集。
    2. 选择“修改”保存此虚拟网络的配置
    3. 选择页面底部的“应用”,然后等待出现确认应用了设置的通知(钟形图标)。 应用设置大约需要 8 分钟。
  2. 如果使用访问 VLAN 或非 VLAN 模式,请执行三次以下过程,并针对每个补充数据网络执行一次(如果最多有 10 个数据网络,则总共 12 次):

    重要

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

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

显示高级网络的屏幕截图,其中包含虚拟交换机信息表和虚拟网络信息表。

  1. 如果使用 VLAN 中继传输(HA 部署需要),请执行三次以下过程:
    1. 选择“添加虚拟网络”并在侧面板中填写信息
      • 虚拟交换机:为 N2 和 N3 选择“vswitch-port5”。 为 N6 选择“vswitch-port6”。
      • 名称:N2、N3或 N6。
      • VLAN 类型:干线 VLAN
      • 允许的 VLAN ID 范围:填写要配置的 VLAN ID 集。
    2. 选择“修改”保存此虚拟网络的配置
    3. 选择页面底部的“应用”,然后等待出现确认应用了设置的通知(钟形图标)。 应用设置大约需要 8 分钟。
  2. 如果使用访问 VLAN 或非 VLAN 模式,请执行三次以下过程,并针对每个补充数据网络执行一次(如果最多有 10 个数据网络,则总共 12 次):

    重要

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

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

该页面现在应如下图所示:

显示高级网络的屏幕截图,其中包含虚拟交换机信息表和虚拟网络信息表。

添加计算和 IP 地址

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

  1. 在“计算虚拟交换机”下,选择“修改”
    1. 选择具有计算意向的 vswitch(例如,vswitch-port2)
    2. 输入管理网络上节点 IP 地址范围内的六个 IP 地址。
    3. 输入服务 IP 地址范围内的某一个 IP 地址(同样在管理网络上)。 此项用于访问分组核心实例的本地监视工具。
    4. 选择面板底部的“修改”以保存配置

    重要

    如果使用 VLAN 中继传输(HA 部署需要),则此时不会对虚拟网络执行任何 IP 配置。 配置移动网络时,将会完成 IP 配置。

  2. 在“虚拟网络”下,选择虚拟网络。 在 VLAN 中继传输模式下,这可以是 N2、N3 和 N6。 否则,请从 N2 、N3 、N6-DNX(其中 X 是 DN 编号 1-10 )中进行选择。 在侧面板中:
    1. 为 Kubernetes 启用虚拟网络并添加 IP 地址池。 如果使用的不是 VLAN 中继传输模式,则还要添加 IP 地址池:
    2. 对于标准部署,请为相应的地址(之前收集的 N2、N3 或 N6-DNX)添加一个 IP 地址范围。 例如 10.10.10.20-10.10.10.20
    3. 对于 HA 部署,请为每个虚拟网络添加两个 IP 地址范围,其中 N2 和 N3 容器 IP 地址位于本地访问子网中,N6 容器 IP 地址位于相应的本地数据子网中。
    4. 对每个 N2、N3 和 N6-DNX 虚拟网络重复上述操作。
    5. 选择面板底部的“修改”以保存配置
  3. 选择页面底部的“应用”,然后等待应用设置。 应用设置大约需要 5 分钟。

页面外观现在应如下图所示(在 VLAN 中继传输模式下):

显示带有两个表的 Kubernetes(预览版)的屏幕截图。第一个表称为计算虚拟交换机,第二个表称为虚拟网络。绿色对勾表示已为 Kubernetes 启用虚拟网络。

在 ASE 上启用虚拟机管理

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

启动群集并设置 Arc

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

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

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

    Kubernetes 概述窗格的屏幕截图,其中显示了用于配置 Kubernetes 服务的“添加”按钮。

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

  4. 确保选中“已启用 Arc 的 Kubernetes”复选框

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

    “配置已启用 Arc 的 Kubernetes”窗格的屏幕截图,其中显示了在何处输入自定义位置 OID。

  6. 将在与 Azure Stack Edge 资源相同的资源组中自动创建已启用 Arc 的 Kubernetes 服务。 如果 Azure Stack Edge 资源组不位于支持 Azure 专用 5G Core 的区域,则必须更改此区域。

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

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

  9. 按照提示设置服务。

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

部署后,门户的概述页面中将显示“Kubernetes 服务正在运行”

设置 kubectl 访问

需有 kubectl 访问权限才能验证群集是否已成功部署。 要获取对群集的只读 kubectl 访问权限,可以从 ASE 本地 UI 下载 kubeconfig 文件。 在“设备”下,选择“下载配置”

Kubernetes 仪表板的屏幕截图,其中显示了下载配置的链接。

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

设置门户访问权限

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

Azure Kubernetes 服务(预览版)概述窗格的一部分的屏幕截图,其中显示了已启用 Arc 的 Kubernetes 的“管理”链接。

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

“Kubernetes 资源(预览版)”菜单的屏幕截图,其中显示了命名空间、工作负载、服务和入口、存储和配置选项。

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

Kubernetes 资源登录屏幕的屏幕截图。其中显示了一个用于输入服务帐户持有者令牌的框和一个登录按钮。

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

Kubernetes 资源(预览版)中的“工作负载”窗格的屏幕截图。“Pod”选项卡处于活动状态并显示有关正在运行的组件的详细信息。

验证群集配置

应使用按照设置 kubectl 访问权限中所述从 UI 下载的 kubeconfig 运行以下 kubectl 命令,来验证 AKS 群集设置是否正确

kubectl get nodes

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

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

kubectl get pods -A

此外,现在应该可以从门户中的 Azure Stack Edge 资源看到你的 AKS 群集。

收集 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. 创建 Network Function Operator 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. 创建 Packet Core Monitor 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 命名空间中应有 1 个 Pod,packet-core-monitor 命名空间中也应有 1 个 Pod

回退

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

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

  • Azure Stack Edge 资源
  • 自动生成的与 Azure Stack Edge 资源关联的密钥保管库
  • 自动生成的与 Azure Stack Edge 资源关联的存储帐户
  • Azure Kubernetes 群集(如果已成功创建)
  • 自定义位置(如果已成功创建)

部署后更改 ASE 配置

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

注意

在此过程中,封包核心将不可用。 如果你要对运行正常的封包核心实例进行更改,我们建议在维护时段运行此过程,以尽量减少对服务的影响。

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

封包核心现在应该可以使用已更新的 ASE 配置来运行。 若要更新封包核心配置,请参阅修改封包核心实例

后续步骤

你的 Azure Stack Edge 设备现已准备好使用 Azure 专用 5G 核心。 对于 HA 部署,还需要配置路由器。 否则,下一步是收集部署专用网络所需的信息。