单机部署

可以在单台计算机或多台计算机上部署 AKS Edge Essentials。 在单台计算机 Kubernetes 部署中,Kubernetes 控制节点和工作器节点在同一台计算机上运行。 本文介绍如何在专用网络上的计算机上创建 Kubernetes 控制节点。

先决条件

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

步骤 1:单台计算机配置参数

可以使用以下命令生成创建单计算机群集所需的参数:

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

此命令创建名为 aksedge-config.json 的配置文件,其中包含创建具有 Linux 节点的单计算机群集所需的配置。 该文件是在当前工作目录中创建的。 有关创建配置文件的更多选项,请参阅以下示例。 此处提供了配置参数的详细说明。

单计算机部署的关键参数包括:

  • DeploymentType:此参数定义部署类型,并指定为 SingleMachineCluster
  • Network.NetworkPlugin默认为 flannel。 这是 K3S 群集的默认值。 如果使用 K8S 群集,请将 CNI 更改为 calico
  • 可以根据此处所述的部署配置设置以下参数:LinuxNode.CpuCount、、LinuxNode.MemoryInMBLinuxNode.DataSizeInGBWindowsNode.CpuCountWindowsNode.MemoryInMBInit.ServiceIPRangeSizeNetwork.InternetDisabled

步骤 2:创建单台计算机群集

  1. 现在可以运行 New-AksEdgeDeployment cmdlet 来部署具有单个 Linux 控制平面节点的单机 AKS Edge 群集:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

步骤 3:验证群集

通过运行以下命令确认部署成功:

kubectl get nodes -o wide
kubectl get pods -A -o wide

下图显示了 K3S 群集上的 Pod:

显示所有正在运行的 Pod 的屏幕截图。

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

注意

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

如果要将 Windows 节点添加到现有的仅限 Linux 的单计算机群集,请先使用以下命令创建配置文件:

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

这会在当前工作目录中创建配置文件 ScaleConfig.json 。 还可以修改配置文件中的 Windows 节点参数,以指定需要分配给 Windows 节点的资源。 使用 配置文件,可以运行以下命令,将节点添加到单机群集:

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

部署选项示例

使用配置参数创建 JSON 对象

可以编程方式编辑 JSON 对象并将其作为字符串传递:

$jsonObj = New-AksEdgeConfig -DeploymentType SingleMachineCluster
$jsonObj.User.AcceptEula = $true
$jsonObj.User.AcceptOptionalTelemetry = $true
$jsonObj.Init.ServiceIpRangeSize = 10
$machine = $jsonObj.Machines[0]
$machine.LinuxNode.CpuCount = 4
$machine.LinuxNode.MemoryInMB = 4096

New-AksEdgeDeployment -JsonConfigString ($jsonObj | ConvertTo-Json -Depth 4)

使用 NodePort 服务创建简单群集

可以创建一个没有服务 IP 的简单群集, (ServiceIPRangeSize 设置为 0) :

New-AksEdgeDeployment -JsonConfigString (New-AksEdgeConfig | ConvertTo-Json -Depth 4)

将资源分配给节点

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

{
  "SchemaVersion": "1.5",
  "Version": "1.0",
  "DeploymentType": "SingleMachineCluster",
  "Init": {
    "ServiceIPRangeSize": 10
  },
  "Network": {
      "NetworkPlugin": "flannel"
  },
  "User": {
      "AcceptEula": true,
      "AcceptOptionalTelemetry": true
  },
  "Machines": [
       {
         "LinuxNode": {
              "CpuCount": 4,
              "MemoryInMB": 4096
          }
       }
   ]
}

注意

如果指定了 ServiceIPRangeSize,则 AKS Edge Essentials 会从内部交换机分配 IP 地址以运行 Kubernetes 服务。

还可以选择将参数作为 JSON 字符串传递,如前所述:

$jsonObj = New-AksEdgeConfig -DeploymentType SingleMachineCluster
$jsonObj.User.AcceptEula = $true
$jsonObj.User.AcceptOptionalTelemetry = $true
$jsonObj.Init.ServiceIpRangeSize = 10
$machine = $jsonObj.Machines[0]
$machine.LinuxNode.CpuCount = 4
$machine.LinuxNode.MemoryInMB = 4096

New-AksEdgeDeployment -JsonConfigString ($jsonObj | ConvertTo-Json -Depth 4)

创建混合工作负载群集

可以创建包含 Linux 和 Windows 节点的群集。 可以使用 命令创建配置文件:

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

创建配置文件后,可以使用以下命令部署群集:

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

后续步骤