在多台计算机上横向扩展

在主计算机上安装 AKS Edge Essentials 后,本文介绍如何将群集横向扩展到其他辅助计算机以创建多计算机部署。

注意

缩放到其他节点是一项实验性功能。

先决条件

  • 设置 可缩放的 Kubernetes 群集。
  • 按照“设置计算机”一文中所述设置辅助计算机。 不能在群集中混合不同的 Kubernetes 分发。 如果主计算机上的群集正在运行 K8s,则还必须 在辅助计算机上安装 K8s MSI。

步骤 1:从主计算机获取群集配置

在创建可缩放部署的主计算机上,在提升的 PowerShell 窗口中运行以下步骤,根据要求创建相应的配置文件。

  • 若要通过添加仅限 Linux 的工作节点进行缩放,请使用以下命令创建所需的配置文件,并指定 NodeType 为“Linux”,并为此节点提供唯一且可用的 IP 地址:

    New-AksEdgeScaleConfig -scaleType AddMachine -NodeType Linux -LinuxNodeIp x.x.x.x -outFile .\ScaleConfig.json | Out-Null
    
  • 若要通过添加更多 Linux 控制平面节点进行缩放,请指定 NodeType 为“Linux”,将 ControlPlane 标志设置为 true,并为 Linux 节点提供唯一的 IP 地址:

    New-AksEdgeScaleConfig -scaleType AddMachine -NodeType Linux -LinuxNodeIp x.x.x.x -ControlPlane -outFile .\ScaleConfig.json | Out-Null
    
  • 若要通过添加仅限 Windows 的工作器节点进行缩放,请指定 NodeType 为“Windows”并为 Windows 节点提供唯一的 IP 地址:

      New-AksEdgeScaleConfig -scaleType AddMachine -NodeType Windows -WindowsNodeIp x.x.x.x -outFile .\ScaleConfig.json | Out-Null
    
  • 若要添加 Linux 和 Windows 工作器节点,请指定 NodeType 为“LinuxAndWindows”,并为 Linux 和 Windows 节点提供唯一的 IP 地址:

    New-AksEdgeScaleConfig -scaleType AddMachine -NodeType LinuxandWindows -LinuxNodeIp x.x.x.x -WindowsNodeIp x.x.x.x -outFile .\ScaleConfig.json | Out-Null
    
  • 若要添加 Linux 控制平面节点和 Windows 工作器节点,请指定 NodeType 为“LinuxAndWindows”,将 ControlPlane 标志 true设置为,并为 Linux 和 Windows 节点提供唯一的 IP 地址:

    New-AksEdgeScaleConfig -scaleType AddMachine -NodeType LinuxandWindows -LinuxNodeIp x.x.x.x -WindowsNodeIp x.x.x.x  -ControlPlane -outFile .\ScaleConfig.json | Out-Null
    

这些命令导出必要的数据以 JSON 格式联接群集,将其作为 JSON 字符串返回,并将其存储在通过 outFile 参数指定的文件中。

注意

每次运行 New-AksEdgeScaleConfig 该命令时,以前创建的 ClusterJoinToken 命令都会失效,因此不能使用以前创建的 ScaleConfig.json 文件。 此外, ClusterJoinToken 有效期仅为 24 小时。

步骤 2:验证配置参数

.\ScaleConfig.json配置文件包括主计算机的配置。 查看和更新必要的部分,并提供与要缩放的计算机相关的详细信息。

  • 验证对 NetworkConnection.AdapterName 辅助计算机的引用。 如果在辅助计算机上 Hyper-V 上创建了外部交换机,可以选择在 ScaleConfig.json 文件中指定 vswitch 详细信息。 如果未在 Hyper-V 管理器中创建外部交换机并运行 New-AksEdgeDeployment 该命令,AKS Edge Essentials 会自动创建一个命名 aksedgesw-ext 的外部交换机并将其用于部署。

    注意

    在此版本中,如果使用交换机的 Wi-fi 适配器,则使用命令自动创建外部交换机 New-AksEdgeDeployment 时会出现一个已知问题。 在这种情况下,首先使用 Hyper-V 管理器 - 虚拟交换机管理器创建外部交换机,并将交换机映射到 Wi-fi 适配器。 然后提供配置 JSON 中的开关详细信息,如本部分所述。

  • 默认情况下为 flannel>Network.NetworkPlugin。 Flannel 是 K3S 群集的默认 CNI。 对于 K8S 群集,请更改为 NetworkPlugin calico.

  • 验证辅助节点的资源配置。 可以根据需要修改这些参数。 确保 为每个节点保留足够的内存。 如果在主计算机上指定 MacAddress ,请验证并提供与辅助计算机相关的正确 MAC 地址。

  • 控制平面节点的奇数是唯一受支持的设置。 因此,如果要纵向扩展/缩减控制平面,请确保有一个、三个或五个控制平面节点。

步骤 3:在辅助计算机上启动节点

现在,你已准备好在辅助计算机上启动节点,并将其添加到群集。

若要在辅助计算机上部署相应的节点,现在 可以使用在上一步中创建的ScaleConfig.json 文件:

New-AksEdgeDeployment -JsonConfigFilePath .\ScaleConfig.json

步骤 4:验证群集设置

在群集中的任何节点上,运行以下 cmdlet:

kubectl get nodes -o wide

应该能够看到群集的所有节点。

显示多个节点的屏幕截图。

步骤 5:添加更多节点

可以根据重复步骤 1-4 所需的 nodeType 生成新的 ScaleConfig 文件。 确保每次添加节点时都提供网络中可用的 IP 地址。

步骤 6:在已具有节点的计算机上添加第二个节点(Linux/Windows)(可选)

可以将另一个节点添加到已有节点的现有计算机。 例如,如果计算机正在运行 Linux 节点,则可以向其添加 Windows 节点:

New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null

还可以为 Windows VM 指定参数,例如 CpuCount 和/或 MemoryInMB

注意

仅在具有 ControlPlane 角色的 Linux 节点的计算机上运行New-AksEdgeScaleConfig

可以使用生成的配置文件并运行以下命令来添加 Windows 节点:

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

还可以在此处为 Windows VM 指定参数,例如 CpuCount 和/或 MemoryInMB

后续步骤