可以在单个计算机或多台计算机上部署 AKS Edge Essentials。 在单台计算机 Kubernetes 部署中,Kubernetes 控制节点和工作器节点在同一台计算机上运行。 本文介绍如何在专用网络上在计算机上创建 Kubernetes 控制节点。
先决条件
按照“设置计算机”中所述 设置主计算机。
步骤 1:单台计算机配置参数
运行以下命令,生成创建单个计算机群集所需的参数:
New-AksEdgeConfig -DeploymentType SingleMachineCluster -outFile .\aksedge-config.json | Out-Null
此命令创建名为 aksedge-config.json 的配置文件,其中包含使用 Linux 节点创建单计算机群集所需的配置。 该文件是在当前工作目录中创建的。 有关创建配置文件的更多选项,请参阅以下示例。
有关配置参数的详细说明,请参阅 部署 JSON 配置 。
单台计算机部署的关键参数包括:
DeploymentType:此参数定义部署类型。 指定SingleMachineCluster。Arc:此部分是必需的。 在 AKS Edge Essentials 部署期间,Arc 参数用于将 AKS Edge Essentials 群集连接到 Azure Arc。有关所需 Arc 参数的详细信息,请参阅 连接到 Arc 文档。Network.NetworkPlugin默认情况下为flannel. 此插件是 K3S 群集的默认值。 如果使用 K8S 群集,请将 CNI 更改为calico。根据此处所述的部署配置设置以下参数:
LinuxNode.CpuCount、、、LinuxNode.MemoryInMBLinuxNode.DataSizeInGB、WindowsNode.CpuCountWindowsNode.MemoryInMB、、Init.ServiceIPRangeSize和Network.InternetDisabled。若要加密 Kubernetes 机密存储,请通过将密钥管理服务(KMS)插件(预览版)设置为
Init.KmsPlugin enabletrue 来启用密钥管理服务。 有关详细信息,请参阅 在群集上启用机密加密。
重要
从 AKS Edge Essentials 1.10.868.0 版本开始,配置文件中需要包含 Arc 部分。 Azure Arc 连接在 AKS Edge Essentials 部署期间自动发生。
步骤 2:创建单个计算机群集
运行 New-AksEdgeDeployment cmdlet 部署一个包含单个 Linux 控制平面节点的单机 "AKS Edge" 群集。
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
重要
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。
步骤 3:验证群集
通过运行以下操作确认部署是否成功:
kubectl get nodes -o wide
kubectl get pods -A -o wide
下图显示了 K3S 群集上的 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)
提示
有关所有可用选项(包括网络设置(如代理设置),请参阅 部署 JSON 配置 。
使用 NodePort 服务创建简单群集
可以通过设置为 ServiceIPRangeSize 0 创建没有服务 IP 的简单群集:
New-AksEdgeDeployment -JsonConfigString (New-AksEdgeConfig | ConvertTo-Json -Depth 4)
将资源分配给节点
若要使用 GitOps 连接到 Arc 并部署应用,请为 LinuxNode.CpuCount (处理能力)、4 GB 或更多(RAM)分配 4 个 CPU 或更多 LinuxNode.MemoryinMB ,并向其中分配大于 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