如何通过ARM模板为现有AKS集群新增nodepool
ARM模板为现有AKS集群新增节点池操作说明
结论
完全可以通过ARM模板为已部署完成的AKS集群添加额外节点池,不需要重建原有集群。
核心原理
节点池是AKS集群下的独立子资源,类型为Microsoft.ContainerService/managedClusters/agentPools,ARM支持对现有资源做增量更新,只要模板配置匹配现有集群的基础信息,就可以直接追加节点池配置,不会影响集群现有运行的工作负载和已有的节点池。
操作注意事项
- 模板中定义的AKS集群名、资源组、区域必须和现有集群完全一致,否则会被识别为新建集群资源,导致部署失败
- 新增节点池的名称需符合AKS命名规范:仅支持小写字母和数字,长度不超过12个字符;Linux节点池首字符必须为字母,Windows节点池首字符必须为数字
- 部署时必须选择增量部署模式,避免覆盖集群原有配置
- 若新增Windows节点池,需要提前确认现有AKS集群已开启Windows节点支持,否则部署会报错
参考模板片段
仅需在ARM模板中新增如下节点池定义即可,不需要重写原有集群的全部配置:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "clusterName": { "type": "string", "metadata": { "description": "现有AKS集群的名称" } }, "nodePoolName": { "type": "string", "metadata": { "description": "新增节点池的名称" } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "集群所在区域" } } }, "resources": [ { "type": "Microsoft.ContainerService/managedClusters/agentPools", "apiVersion": "2023-05-01", "name": "[concat(parameters('clusterName'), '/', parameters('nodePoolName'))]", "location": "[parameters('location')]", "properties": { "count": 3, "vmSize": "Standard_DS2_v2", "osType": "Linux", "mode": "User", "enableAutoScaling": false } } ] }
部署命令示例
使用Azure CLI执行增量部署的命令参考:az deployment group create --resource-group <你的资源组名称> --template-file ./add-nodepool.json --parameters clusterName=<现有AKS集群名> nodePoolName=<新增节点池名> --mode Incremental
内容的提问来源于stack exchange,提问作者Jerald Baker
相关产品推荐
相关产品推荐

