部署 Microsoft 软件定义的网络 (SDN)

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

本文介绍如何为所有 AKS Arc 负载均衡方案使用 SDN 软件负载均衡器将 AKS 基础结构和工作负载 VM 部署到 SDN 虚拟网络。 Azure Arc 启用的 AKS 提供了一个完全支持的容器平台,可在 Kubernetes 容器业务流程平台上运行云原生应用程序。 该体系结构支持运行虚拟化的 Windows 和 Linux 工作负载。

限制

以下功能不在范围,在此正式版中不受支持:

  • 将 Pod 和容器附加到 SDN 虚拟网络。
    • Pod 使用 Flannel 或 Calico (默认) 作为网络提供商。
  • 使用 SDN 网络安全组强制实施网络策略。
    • SDN 网络安全组仍可使用 SDN 工具在 AKS Arc 外部配置, (REST/PowerShell/Windows Admin Center/SCVMM) ,但 Kubernetes NetworkPolicy 对象不会对其进行配置。
  • 将 AKS Arc VM NIC 附加到 SDN 逻辑网络。
  • 使用 Windows Admin Center 进行安装。
  • 物理主机到 AKS Arc VM 的连接:VM NIC 已加入 SDN 虚拟网络,因此默认情况下无法从主机访问。 现在,可以通过使用 SDN 软件负载均衡器将公共 IP 直接附加到 VM 来手动启用此连接。

先决条件

若要使用 SDN 部署 Arc 启用的 AKS,请确保环境同时满足 AKS Arc 和 SDN 的部署条件。

注意

SDN 与 AKS Arc 的集成只需要网络控制器和软件负载均衡器。 网关 VM 是可选的。

安装和准备 AKS Arc 的 SDN

第一步是安装 SDN。 若要安装 SDN,我们建议使用 SDN ExpressWindows Admin Center。 可在此处找到用于部署所有所需 SDN 基础结构组件的参考配置文件:软件负载均衡器.psd1

SDN Express 部署完成后,应会显示一个屏幕,将状态报告为“正常”。

如果出现任何错误或报告为运行不正常,请参阅 SDN 疑难解答

在继续操作之前,SDN 必须正常运行。 如果在新环境中部署 SDN,我们还建议创建测试 VM 并验证与负载均衡器 VIP 的连接。 请参阅如何使用 Windows Admin Center 创建 VM 并将其附加到 SDN 虚拟网络

安装 AKS 的步骤

初始化并准备 AKS Arc 的所有物理主机。有关最新说明,请参阅 部署 AKS 主机

安装 AKS-HCI PowerShell 模块

有关 安装 AKS-HCI PowerShell 模块 的信息,请参阅安装 AksHci PowerShell 模块。

注意

完成此步骤后,刷新或重新加载任何打开的 PowerShell 会话以重新加载模块。

将资源提供程序注册到订阅

有关如何将资源提供程序注册到订阅的信息,请参阅 安装 AksHci PowerShell 模块

准备要部署的计算机

有关如何为部署准备计算机的信息,请参阅 准备计算机进行部署

配置 AKS 进行安装

选择一个 Azure Stack HCI 服务器来推动 AKS Arc 的创建。安装前需要执行三个步骤:

  1. 为 SDN 配置 AKS 网络设置;例如,使用:

    1. SDN 虚拟网络“10.20.0.0/24” (10.20.0.0 – 10.20.0.255) 。 虚拟化网络,可以使用任何 IP 子网。 此子网不需要存在于物理网络上。
    2. vSwitch 名称“External”。Azure Stack HCI 服务器上的外部 vSwitch。 确保使用用于 SDN 部署的同一 vSwitch。
    3. 网关“10.20.0.1。此地址是虚拟网络的网关。
    4. DNS 服务器“10.127.130.7”。虚拟网络的 DNS 服务器。
    $vnet = New-AksHciNetworkSetting –name "myvnet" –vswitchName "External" -k8sNodeIpPoolStart "10.20.0.2" -k8sNodeIpPoolEnd "10.20.0.255"
    -ipAddressPrefix "10.20.0.0/24" -gateway "10.20.0.1" -dnsServers "10.127.130.7"
    
    参数 说明
    -name Arc (启用的 AKS 中虚拟网络的名称必须为小写) 。
    -vswitchName Azure Stack HCI 服务器上的外部 vSwitch 的名称。 使用用于 SDN 部署的同一 vSwitch。
    -k8sNodeIpPoolStart
    -k8sNodeIpPoolEnd
    SDN 虚拟网络的 IP 开始/结束范围。
    -ipAddressPrefix 采用 CIDR 表示法的虚拟网络子网。
    -gateway
    -dnsServers
    SDN 虚拟网络的网关和 DNS 服务器。

    有关这些参数的详细信息,请参阅 New-AksHciNetworkSetting

  2. 在步骤 1 中使用的同一 PowerShell 窗口中,创建 VIP 池以通知 AKS 可从 SDN 负载均衡逻辑网络使用的 IP:

    $VipPool = New-AksHciVipPoolSetting -name "publicvip" -vipPoolStart "10.127.132.16" -vipPoolEnd "10.127.132.23
    
    参数 说明
    -name 配置 SDN 负载均衡器时提供的“PublicVIP”逻辑网络。 在 cmdlet 中,此名称必须为小写。
    -vipPoolStart 用于公共负载均衡器 VIP 池的逻辑网络的 IP 起始范围。 必须使用来自“PublicVIP”SDN 逻辑网络的地址范围。
    -vipPoolEnd 用于公共负载均衡器 VIP 池的逻辑网络的 IP 端范围。 必须使用来自“PublicVIP”SDN 逻辑网络的地址范围。
  3. 在步骤 2 中使用的同一 PowerShell 窗口中,通过提供对目标 SDN 网络的引用来创建 SDN 的 AKS 配置,并 ($vnet 提供网络设置,$vipPool) 我们之前定义的:

    Set-AksHciConfig 
    –imageDir "C:\ClusterStorage\Volume1\ImageStore" 
    –workingDir "C:\ClusterStorage\Volume1\WorkDir"
    –cloudConfigLocation "C:\ClusterStorage\Volume1\Config" 
    –vnet $vnet –useNetworkController
    –NetworkControllerFqdnOrIpAddress "nc.contoso.com" 
    –networkControllerLbSubnetRef "/logicalnetworks/PublicVIP/subnets/my_vip_subnet" 
    –networkControllerLnetRef "/logicalnetworks/HNVPA" 
    -vipPool $vipPool
    

    HNVPA 逻辑网络用作 AKS Arc 虚拟网络的基础提供程序。

    如果对 Azure Stack HCI 群集节点使用静态 IP 地址分配,则还必须提供 CloudServiceCidr 参数。 此参数是 MOC 云服务的 IP 地址,必须与 Azure Stack HCI 群集节点位于同一子网中。 有关详细信息,请参阅 Microsoft 本地云服务

    参数 说明
    –imageDir AKS Arc 存储其 VHD 映像的路径。 此路径必须是共享存储路径或 SMB 共享。
    –workingDir 存储模块小文件的路径。 此路径必须是共享存储路径或 SMB 共享。
    -cloudConfigLocation 存储云代理配置的目录的路径。 此路径必须是共享存储路径或 SMB 共享。
    -vnet 在上一步中创建的 AksHciNetworkSetting 变量的名称
    -useNetworkController 启用与 SDN 的集成。
    -networkControllerFqdnOrIpAddress 网络控制器 FQDN。 可以通过在网络控制器 VM 上执行 Get-NetworkController 并使用 RestName 参数来获取 FQDN。
    -networkControllerLbSubnetRef 对网络控制器中配置的公共 VIP 逻辑网络子网的引用。 可以通过运行 Get-NetworkControllerLogicalSubnet cmdlet 获取此子网。 使用此 cmdlet 时,请将 PublicVIP 用作 LogicalNetworkIdVipPoolStart cmdlet 中的 New-AksHciVipPoolSettingvipPoolEnd 参数必须是此处引用的子网的一部分。
    -networkControllerLnetRef 通常,此值为“/logicalnetworks/HNVPA”。
    -vipPool 用作负载均衡的前端 IP 的 VIP 池。

    有关这些参数的详细信息,请参阅 Set-AksHciConfig

登录到 Azure 并配置注册设置

按照 此处的说明 配置注册设置。

注意

如果没有所有者权限,建议使用 Azure 服务主体

安装 AKS

AKS 配置完成后,即可在 Azure Stack HCI 上安装 AKS。

Install-AksHci

安装成功后,将创建控制平面 VM (管理群集) ,并将其 VmNIC 附加到 SDN 网络。

从 HCI 上的 SDN 和 AKS 收集日志

借助 HCI 上的 SDN 和 AKS,我们可以在虚拟网络上实现 AKS 节点的隔离。 由于它们是隔离的,因此必须导入新的 SDN AKS-HCI 日志收集脚本,并运行修改后的命令,该命令使用负载均衡器从节点检索日志:

Install-Module -Name AksHciSdnLogCollector -Repository PSGallery
Get-AksHciLogsSdn

反馈/问题

请参阅此处的 SDN 和 AKS-HCI自助资源

后续步骤

接下来,可以 创建工作负载群集部署应用程序。 Arc 启用的 AKS 中所有 AKS VM NIC 均无缝附加到安装期间提供的 SDN 虚拟网络。 SDN 软件负载均衡器还用作所有 Kubernetes 服务的外部负载均衡器,并充当 Kubernetes 控制平面上的 API 服务器的负载均衡器 () 。