垂直节点缩放
适用于:Azure Local 22H2 上的 AKS、Windows Server 上的 AKS
可以更改给定节点池中虚拟机的大小,以增加 Azure Arc 启用的 AKS 中节点池可用的资源。
若要跟上Azure Kubernetes 服务(AKS)中的应用需求,可能需要调整运行工作负荷的节点数。 在某些情况下,通过添加节点水平缩放群集不足以满足应用对更多 CPU 核心或内存的需求。
如果没有垂直节点缩放,必须重新部署到新的节点池并移动应用。 这种情况在资源有限的边缘环境中可能并不理想。 为了提高这种灵活性,AKS Arc 引入了在给定节点池中更改 VM 的虚拟机(VM)大小(SKU)的功能。
AKS Arc 中的垂直节点缩放的工作原理
在 AKS Arc 中,目标群集节点池在内部作为 计算机进行管理。 machineDeployment 的一个属性是在执行 命令时选择的 VM 大小 (SKU)New-AksHciNodePool
。
若要将节点池更改为不同的 VM 大小 (SKU),可使用 Set-AksHciNodePool
命令更改工作器节点的 VM 大小,使用 Set-AksHciCluster
命令更改控制平面节点的 VM 大小。
使用新的 VM 大小(SKU)提交命令时,将创建节点池或群集的新 计算机部署 ,并替换现有计算机集。 此事件触发基础部署系统中的更新流。 与 OS 或 Kubernetes 版本升级类似,新 计算机Deployment 使用滚动更新替换节点池或控制平面中的一个虚拟机。 每个升级检查旧节点是否已正确封锁并排空,然后再将其删除。
注意
系统假定有足够的硬件资源可用于扩展新计算机集来代替旧计算机集。
示例流程
以下示例演示了垂直节点缩放。
将 Linux 工作器节点池的 VM 大小从 4 核和 6 GB 内存更改为 4 核和 8 GB 内存
首先,检查群集 mycluster
上节点池的当前 VM 大小。 从输出中,可以看到 VM 大小为 Standard_K8S3_v1
:
get-akshcinodepool -clustername mycluster
Status : {Error, Phase, Details}
ClusterName : mycluster
NodePoolName : mycluster-linux
Version : v1.22.4
OsType : Linux
NodeCount : 2
VmSize : Standard_K8S3_v1
Phase : scaling
Standard_K8S3_v1
可用 VM 大小的列表中显示它具有 4 个核心和 6 GB 的内存:
Get-AksHciVmSize
VmSize CPU MemoryGB
------ --- --------
Default 4 4
Standard_A2_v2 2 4
Standard_A4_v2 4 8
Standard_D2s_v3 2 8
Standard_D4s_v3 4 16
Standard_D8s_v3 8 32
Standard_D16s_v3 16 64
Standard_D32s_v3 32 128
Standard_DS2_v2 2 7
Standard_DS3_v2 2 14
Standard_DS4_v2 8 28
Standard_DS5_v2 16 56
Standard_DS13_v2 8 56
Standard_K8S_v1 4 2
Standard_K8S2_v1 2 2
Standard_K8S3_v1 4 6
要为 4 核和 8 GB 内存设置的新大小为 Standard_A4_v2
。 若要更新节点池 mycluster-linux
,请使用 Set-AksHciNodePool
已更新的 cmdlet 接受 -VMsize
参数:
Set-AksHciNodePool -ClusterName mycluster -name mycluster-linux -vmsize Standard_A4_v2
几分钟后,该过程完成。 可以通过再次运行 Get-AksHciNodePool
来检查结果,并验证 VmSize
现在 Standard_A4_v2
是否为:
get-akshcinodepool -clustername mycluster
Status : {Error, Phase, Details}
ClusterName : mycluster
NodePoolName : mycluster-linux
Version : v1.22.4
OsType : Linux
NodeCount : 2
VmSize : Standard_A4_v2
Phase : scaling
后续步骤
请参阅更新的 PowerShell 命令的文档: