如何将“Azure Stack HCI 和 Windows Server 上的 Azure Kubernetes 服务”与软件定义的网络和虚拟网络基础结构配合使用(公共预览版)

可以使用 PowerShell 在软件定义的网络 (SDN) 虚拟网络基础结构上部署“Azure Stack HCI 和 Windows Server 上的 Azure Kubernetes 服务 (AKS)”。

重要

软件定义的网络和虚拟网络基础结构与“Azure Stack HCI 和 Windows Server 上的 AKS”的集成目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

公共预览版的范围

可以将“Azure Stack HCI 和 Windows Server 上的 AKS”配置为:

  • 将“Azure Stack HCI 和 Windows Server上的 AKS”基础结构和工作负载虚拟机 (VM) 附加到 SDN 虚拟网络。
  • 将 SDN 软件负载均衡器 (SLB) 用于“Azure Stack HCI 和 Windows Server上的 AKS”负载均衡目的。

通过软件定义的网络,查看 Azure Stack HCI 和 Windows Server 上的 AKS 的基础结构概述。

“Azure Stack HCI 和 Windows Server 上的 AKS”上的 SDN 的限制

尚不支持以下功能:

  • 将 Pod 和容器附加到 SDN 虚拟网络。 Pod 将使用 Flannel 或 Calico (默认) 作为网络提供商。
  • 使用 SDN 访问控制列表实施网络策略。 SDN 访问控制列表仍可以使用 SDN 工具(例如 REST 终结点、PowerShell、Windows Admin Center 和 System Center Virtual Machine Manager)在“Azure Stack HCI 和 Windows Server 上的 AKS”外部配置,但 Kubernetes NetworkPolicy 对象不会对其进行配置。
  • 将“Azure Stack HCI 和 Windows Server上的 AKS”附加到 SDN 逻辑网络
  • 使用 Windows Admin Center 进行安装。
  • “Azure Stack HCI 和 Windows Server上的 AKS”VM 连接的物理主机:VM NIC 将加入 SDN 虚拟网络,因此默认情况下无法从主机访问。 可以通过使用 SDN 的软件负载均衡器将公共 IP 直接附加到 VM 来手动启用此功能。

先决条件

若要使用 SDN 部署“Azure Stack HCI 和 Windows Server上的 AKS”,需要确保环境同时满足“Azure Stack HCI 和 Windows Server上的 AKS”和 SDN 的部署条件。

注意

若要将 SDN 与“Azure Stack HCI 和 Windows Server 上的 AKS”集成,需要网络控制器和软件负载均衡器组件。 网关 VM 是可选的,并非必需。

安装和准备 SDN

若要将 SDN 与“Azure Stack HCI 和 Windows Server 上的 AKS”配合使用,需要设置 SDN,然后安装 AKS。

安装 SDN

第一步是安装 SDN。 若要安装 SDN,我们建议使用 SDN ExpressWindows Admin Center

可以在 Software Load Balancer.psd1 中找到部署所有所需 SDN 基础结构组件的参考配置文件

SDN Express 部署完成后,应该有一个屏幕,状态报告正常:

部署将指示状态为“活动”和“正常”

如果出现任何问题或报告为不正常,请参阅 SDN 故障排除

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

安装“Azure Stack HCI 和 Windows Server 上的 AKS”

初始化并准备“Azure Stack HCI 和 Windows Server上的 AKS”的所有物理主机。 有关最新说明,请参阅快速入门:使用 PowerShell 在 Azure Stack HCI 和 Windows Server 上设置 Azure Kubernetes 服务主机并部署工作负载群集

安装“Azure Stack HCI 和 Windows Server 上的 AKS”PowerShell 模块

请参阅安装 AksHci PowerShell 模块 以安装“Azure Stack HCI 和 Windows Server上的 AKS”PowerShell 模块。

注意

可能需要将 PowerShell ExecutionPolicy 更改为 Unrestricted,以便可以导入和执行其中一些脚本。 为此,可以运行 Set-ExecutionPolicy Unrestricted

完成上一步后,请按照安装 AksHci PowerShell 模块中的说明安装 PowerShellGet 和 AksHci 模块。

sdn_public_preview.zip从下载中心中检索。

提取 sdn_public_preview.zip 文件,并复制更新后的 PowerShell 模块。 在每个物理主机上:

  1. 分别替换和 AkshciMoc 目录中的 AksHci.psm1Moc.psm1 PowerShell 模块的内容。 可以在 PowerShell 模块路径 (%ProgramFiles%\\WindowsPowerShell\\Modules) 中找到这些内容。

  2. AkshciDownloadSdkKvaMoc 目录中使用的 Common.psm1 PowerShell 模块。

注意

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

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

按照将资源提供程序注册到订阅的说明,将资源提供程序注册到订阅。

准备要部署的计算机

按照准备要部署的计算机的说明,准备你的计算机进行部署。

配置“Azure Stack HCI 和 Windows Server 上的 AKS”以进行安装

选择一台 HCI 计算机,以推动创建“Azure Stack HCI 和 Windows Server上的 AKS”。 安装之前需要执行两个步骤。

  1. 为 SDN 配置“Azure Stack HCI 和 Windows Server上的 AKS”网络设置。 例如,使用:

    1. SDN 虚拟网络 10.20.0.0/24 (10.20.0.0 - 10.20.0.255)

      这是一个虚拟化网络,可以使用任何 IP 子网。 此子网不需要存在于物理网络上。

    2. PublicVIP 逻辑网络 10.127.132.16/29 (10.127.132.16 - 10.127.132.23)

      这是配置 SDN 软件负载均衡器时提供的 PublicVIP 逻辑网络。

    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" -vipPoolStart "10.127.132.16" -vipPoolEnd "10.127.132.23" -useNetworkController -ipAddressPrefix "10.20.0.0/24" -gateway "10.20.0.1" -dnsServers "10.127.130.7"
      
      参数 说明
      -name “Azure Stack HCI 和 Windows Server上的 AKS”中的虚拟网名称
      -vswitchName HCI 服务器上的外部 vSwitch 的名称
      -k8sNodeIpPoolStart -k8sNodeIpPoolEnd SDN 虚拟网络的 IP 开始/结束范围
      -vipPoolStart -vipPoolEnd 用于负载均衡器 VIP 池的逻辑网络的 IP 开始/结束范围。 上面,我们使用了“PublicVIP”逻辑网络中的地址范围。
      -useNetworkController 启用与 SDN 的集成
      -ipAddressPrefix CIDR 表示法中的虚拟网络子网
      -gateway 网关
      -dnsServers DNS 服务器

      注意

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

  2. 在上一步中使用的同一 PowerShell 窗口中,为 SDN 创建“Azure Stack HCI 和 Windows Server上的 AKS”配置,方法是提供对目标 SDN 网络的引用并传入我们定义的网络设置 ($vnet):

    Set-AksHciConfig -imageDir "C:\clusterstorage\Volume1\images" -workingDir "C:\clusterstorage\Volume1\store" -cloudConfigLocation "C:\clusterstorage\Volume1\config" -vnet $vnet -useNetworkController -networkControllerFqdnOrIpAddress "nc.contoso.com" -networkControllerLbSubnetRef "/logicalnetworks/PublicVIP/subnets/my_vip_subnet" -networkControllerLnetRef "/logicalnetworks/HNVPA" -ring "SDNPreview" -catalog AKS-HCI -stable-catalogs-ext -version 1.0.10.40517
    

    注意

    HNVPA 逻辑网络将用作“Azure Stack HCI 和 Windows Server上的 AKS”虚拟网络的底层提供程序。

    注意

    如果使用 Azure Stack HCI 群集节点的静态 IP 地址分配,还必须提供 CloudServiceCidr 参数。 这是 MOC 云服务的 IP 地址,必须与 Azure Stack HCI 群集节点位于同一子网中。 Microsoft 本地云服务的更多详情

    参数 说明
    -imageDir 存储 VHD 映像的目录的路径。
    -workingDir “Azure Stack HCI 和 Windows Server上的 AKS”存储临时文件的目录路径。
    -cloudConfigLocation 存储云代理配置的目录的路径
    -vnet 在上一步中创建的 AksHciNetworkSetting 变量的名称
    -useNetworkController 启用与 SDN 的集成
    -networkControllerFqdnOrIpAddress 网络控制器 FQDN。 可以通过在网络控制器 VM 和 RestName 参数上执行 Get-NetworkController来获取 FQDN。
    -networkControllerLbSubnetRef 对网络控制器中配置的公共 VIP 逻辑网络子网的引用。 可以通过执行 Get-NetworkControllerLogicalSubnet 命令来获取此子网。 使用此命令时,请使用 PublicVIP 作为 LogicalNetworkId。 New-AksHciNetworkSetting cmdlet 中的 VipPoolStart 和 vipPoolEnd 参数必须是此处引用的子网的一部分。
    -networkControllerLnetRef 通常,这将是“/logicalnetworks/HNVPA”
    -version 使用 1.0.10.40517
    -ring 使用 SDNPreview
    -catalog 使用“Azure Stack HCI 和 Windows Server 上的 AKS” -stable-catalogs-ext

注意

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

检查 Azure Stack HCI 和 Windows Server 上的 AKS 是否已成功配置。

登录到 Azure 并配置注册设置

按照登录到 Azure 并配置注册设置说明来配置注册设置。

安装“Azure Stack HCI 和 Windows Server 上的 AKS”

AKS 配置完成后,即可准备安装“Azure Stack HCI 和 Windows Server上的 AKS”:

Install-AksHci

安装成功后,应该已经创建了一个控制平面 VM(管理群集)并将其 VmNIC 连接到你的 SDN 网络。

运行后,检查 Azure Stack HCI 和 Windows Server 上的 AKS 是否已成功安装。

反馈和支持

SDN 故障排除解决使用“Azure Stack HCI 上的 AKS”时的一般问题中提供了一些自助资源,分别用于 SDN 和“Azure Stack HCI 和 Windows Server上的 AKS”。 我们衷心感谢和感谢你的反馈和参与!

后续步骤