部署Microsoft软件定义的网络(SDN)
适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
本文介绍如何为所有 AKS Arc 负载均衡方案使用 SDN 软件负载均衡器将 AKS 基础结构和工作负荷 VM 部署到 SDN 虚拟网络。 Azure Arc 启用的 AKS 提供完全支持的容器平台,可在 Kubernetes 容器业务流程平台上运行云原生应用程序。 该体系结构支持运行虚拟化的 Windows 和 Linux 工作负载。
限制
以下功能不在作用域内,在此 GA 版本中不受支持:
- 将 Pod 和容器附加到 SDN 虚拟网络。
- Pod 使用 Flannel 或 Calico(默认值)作为网络提供商。
- 使用 SDN 网络安全组实施网络策略。
- SDN 网络安全组仍可以使用 SDN 工具(REST/PowerShell/Windows Admin Center/SCVMM)在 AKS Arc 外部配置,但 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 的部署条件。
- AKS Arc 要求
- SDN 要求: 规划软件定义的网络基础结构
注意
SDN 与 AKS Arc 的集成只需要网络控制器和软件负载均衡器。 网关 VM 是可选的。
安装和准备 AKS Arc 的 SDN
第一步是安装 SDN。 若要安装 SDN,我们建议使用 SDN Express 或 Windows 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 本地计算机来驱动 AKS Arc 的创建。在安装之前需要执行三个步骤:
配置 SDN 的 AKS 网络设置;例如,使用:
- SDN 虚拟网络“10.20.0.0/24” (10.20.0.0.0 – 10.20.0.255)。 虚拟化网络,可以使用任何 IP 子网。 此子网不需要存在于物理网络上。
- vSwitch 名称“External”。Azure 本地计算机上的外部 vSwitch。 确保使用用于 SDN 部署的同一 vSwitch。
- 网关“10.20.0.1”。此地址是虚拟网络的网关。
- 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 本地计算机上的外部 vSwitch 的名称。 使用用于 SDN 部署的同一 vSwitch。 -k8sNodeIpPoolStart
-k8sNodeIpPoolEnd
SDN 虚拟网络的 IP 开始/结束范围。 -ipAddressPrefix
CIDR 表示法中的虚拟网络子网。 -gateway
-dnsServers
SDN 虚拟网络的网关和 DNS 服务器。 有关这些参数的详细信息,请参阅 New-AksHciNetworkSetting。
在步骤 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 逻辑网络中的地址范围。 在步骤 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 本地群集节点使用静态 IP 地址分配,则还必须提供参数
CloudServiceCidr
。 此参数是 MOC 云服务的 IP 地址,必须与 Azure 本地群集节点位于同一子网中。 有关详细信息,请参阅 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
将其用作LogicalNetworkId
. cmdletVipPoolStart
中的New-AksHciVipPoolSetting
参数vipPoolEnd
必须是此处引用的子网的一部分。-networkControllerLnetRef
通常,此值为“/logicalnetworks/HNVPA”。 -vipPool
用作负载均衡的前端 IP 的 VIP 池。 有关这些参数的详细信息,请参阅 Set-AksHciConfig。
登录到 Azure 并配置注册设置
按照 此处 的说明配置注册设置。
注意
如果没有所有者权限,建议使用 Azure 服务主体。
安装 AKS
AKS 配置完成后,即可在 Azure 本地安装 AKS。
Install-AksHci
安装成功后,将创建控制平面 VM(管理群集),并将其 VmNIC 附加到 SDN 网络。
从 Azure 本地环境中的 SDN 和 AKS 收集日志
使用 Azure 本地上的 SDN 和 AKS,我们可以隔离虚拟网络上的 AKS 节点。 由于它们是隔离的,因此我们必须导入新的 SDN AKS-HCI 日志收集脚本,并运行修改后的命令,该命令使用负载均衡器从节点检索日志:
Install-Module -Name AksHciSdnLogCollector -Repository PSGallery
Get-AksHciLogsSdn
反馈/问题
后续步骤
接下来,可以 创建工作负荷群集 并 部署应用程序。 Arc 启用的 AKS 中的所有 AKS VM NIC 都无缝连接到安装期间提供的 SDN 虚拟网络。 SDN 软件负载均衡器还用作所有 Kubernetes 服务的外部负载均衡器,并充当 Kubernetes 控制平面上的 API 服务器的负载均衡器。