Terraform配置Azure K8s集群自动扩缩容的节点数疑问
Azure AKS节点池自动扩缩容与Terraform Apply的节点数冲突问题
前提场景
- 配置了AKS系统节点池
- 已设置
auto_scaling_enabled=true - 未配置忽略
node_count的变更(即没有lifecycle { ignore_changes = [node_count] }) - 自动扩缩容已经触发并增加了节点数
核心问题答案
再次执行terraform apply时,节点数会被强制缩减回node_count指定的初始值,Terraform AzureRM提供商并不会“智能”保留自动扩缩容调整后的节点数。
文档困惑解析
AzureRM提供商文档里的两段描述看似矛盾:
- 第一段说明启用自动扩缩容时,
node_count会作为节点池的初始期望节点数; - 第二段描述自动扩缩容会根据负载动态调整节点数。
但本质逻辑是:Terraform的核心职责是保证资源状态与配置文件完全一致。只要你在配置里明确指定了node_count,且没有通过ignore_changes忽略这个字段的变更,Terraform就会将实际节点数拉回配置值——不管自动扩缩容之前做了什么调整。如果想要让自动扩缩容的动态调整不被Terraform覆盖,必须在节点池的配置块中添加lifecycle规则忽略node_count的变更,示例如下:
resource "azurerm_kubernetes_cluster_node_pool" "system" { # 其他配置字段... auto_scaling_enabled = true node_count = 3 # 初始值,后续自动扩缩容调整后不会被Terraform强制覆盖 lifecycle { ignore_changes = [node_count] } }
内容的提问来源于stack exchange,提问作者alexaand
相关产品推荐
相关产品推荐

