AKS Edge Essentials 中的完整 Kubernetes 部署

注意

在多台计算机上完全部署目前是一项实验性功能。 我们正在积极研究此功能。

可以将 AKS Edge Essentials 群集配置为在多台计算机上运行以支持分布式微服务体系结构。 AKS Edge Essentials 适用于静态配置,并且不启用动态 VM 创建/删除或群集生命周期管理,这与 Azure 本地云中的 AKS 或 AKS 不同。 AKS Edge Essentials 的每台计算机只有一个 Linux VM,如果需要,还可以有一个 Windows VM。 每个 VM 都有在安装时分配的 RAM、存储和物理 CPU 核心的静态分配。 在多节点部署中,其中一台计算机是具有 Kubernetes 控制节点的主计算机,另一台计算机是辅助计算机,具有工作器节点。 在此部署方案中,我们使用外部交换机配置 K8S 群集。 使用此配置,可以从网络上的另一台计算机运行 kubectl 、评估外部交换机上的工作负荷性能,等等。

先决条件

按照“设置计算机”一文中所述 设置计算机

步骤 1:完整的 Kubernetes 部署配置参数

可以使用以下命令生成创建可缩放群集所需的参数:

New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null

此命令创建名为 aksedge-config.json 的配置文件,其中包括使用 Linux 节点创建可缩放群集所需的配置。 该文件是在当前工作目录中创建的。 有关配置参数(如代理设置)的详细说明,请参阅 部署 JSON 配置。

有关创建配置文件的更多选项,请参阅以下示例。

要记下可缩放 Kubernetes 部署的关键参数包括:

  • 外部交换机信息:完整部署使用外部交换机实现跨节点的通信。 必须将参数指定MachineConfigType.NetworkConnection.AdapterName为或EthernetWi-Fi

    # get the list of available adapters in the machine
    Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
    

    如果在 Hyper-V 上创建了外部交换机,可以选择在配置文件中指定 vswitch 详细信息。 如果未在 Hyper-V 管理器中创建外部交换机并运行 New-AksEdgeDeployment 该命令,AKS Edge Essentials 会自动创建一个命名 aksedgesw-ext 的外部交换机并将其用于部署。

    注意

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

    Hyper-V 交换机管理器的屏幕截图。

  • IP 地址:必须为控制平面Kubernetes 服务和节点(VM)从网络分配免费的 IP 地址。 有关更多详细信息, 请参阅 AKS Edge Essentials 网络概述 。 例如,在具有 192.168.1.0/24 IP 地址范围的本地网络中,你可能在 DHCP 范围之外具有 1.151 及更高版本,因此可能是免费的。 AKS Edge Essentials 目前仅支持 IPv4 地址。 理想情况下,你知道可以使用哪些免费 IP 地址;但是,可以使用 GitHub 存储库中的 AksEdge-ListUsedIPv4s 脚本来查看当前正在使用的 IP,以避免在配置中使用这些 IP 地址。 必须在配置文件的 Network 部分中提供以下参数:ControlPlaneEndpointIpIp4GatewayAddressIp4PrefixLengthServiceIPRangeSizeServiceIPRangeStartDnsServers

重要

Kubernetes pod cidr 适用于 10.42.0.0/16 K3s 和 10.244.0.0/24 K8s。 Kubernetes service cidr 适用于 10.43.0.0/16 K3s 和 10.96.0.0/12 K8s。

  • 默认情况下,该值 Network.NetworkPluginflannel. Flannel 是 K3S 群集的默认 CNI。 在 K8S 群集中,将更改为 NetworkPlugincalico.
  • 除了上述参数,还可以根据部署配置设置以下参数,如下所示:、、、LinuxNode.CpuCountLinuxNode.MemoryInMBLinuxNode.DataSizeInGBLinuxNode.Ip4AddressWindowsNode.CpuCountWindowsNode.MemoryInMB和。WindowsNode.Ip4AddressInit.ServiceIPRangeSizeNetwork.InternetDisabled

步骤 2:验证配置文件

更新 aksedge-config.json 文件后,运行 AksEdgePrompt 工具。 此工具打开一个提升的 PowerShell 窗口,其中加载了模块。 然后运行以下命令,使用 Test-AksEdgeNetworkParameters cmdlet 验证网络参数:

Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json

步骤 3:创建完整的部署群集

如果 Test-AksEdgeNetworkParameters 返回 true,则可以创建部署。 可以使用 cmdlet 创建部署 New-AksEdgeDeployment

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

New-AksEdgeDeployment cmdlet 会自动检索 kubeconfig 文件。

步骤 4:验证部署

kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide

Kubernetes 群集的屏幕截图如下所示:

显示所有正在运行的 Pod 的示意图。

步骤 5:添加 Windows 工作器节点(可选)

注意

Windows 工作器节点是此版本中的实验性功能。 我们正在积极研究此功能。

如果要将 Windows 节点添加到现有仅限 Linux 的计算机,可以运行:

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

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

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

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

不同部署选项的示例配置

将资源分配给节点

若要使用 GitOps 连接到 Arc 并部署应用,请为 LinuxNode.CpuCount (处理能力)、4 GB 或更多 CPU 分配 4 GB 或更多( LinuxNode.MemoryinMB RAM),并分配大于 0 ServiceIpRangeSize的数字。 在这里,我们为 Kubernetes 服务分配 10 个 IP 地址:

{
    "Init": {
        "ServiceIpRangeSize": 10,
        "ServiceIPRangeStart": "192.168.1.151"
    },
    "Network": {
        "ControlPlaneEndpointIp": "192.168.1.191",
        "NetworkPlugin": "calico",
        "Ip4GatewayAddress": "192.168.1.1",
        "Ip4PrefixLength": 24,
        "DnsServers": ["192.168.1.1"]
    },
    "Machines": [
        {
            "NetworkConnection": {
                "AdapterName": "Ethernet"
            },
            "LinuxNode": {
                "CpuCount": 4,
                "MemoryInMB": 4096,
                "DataSizeInGB": 20,
                "Ip4Address": "192.168.1.171"
            }
        }
    ]
}

创建 Linux 和 Windows 节点

若要在计算机上运行 Linux 控制平面和 Windows 工作器节点,请使用以下命令创建配置文件:

New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null

使用 命令创建部署:

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
{
  "Machines": [
      {
          "NetworkConnection": {
              "AdapterName": "Ethernet"
          },
          "LinuxNode": {
              "CpuCount": 4,
              "MemoryInMB": 4096,
              "DataSizeInGB": 20,
              "Ip4Address": "192.168.1.171"
          },
          "WindowsNode": {
              "CpuCount": 2,
              "MemoryInMB": 4096,
              "Ip4Address": "192.168.1.172"
          }
      }
  ]
}

后续步骤