【问题标题】:AKS user node pools are recreating for every terraform runAKS 用户节点池正在为每次 terraform 运行重新创建
【发布时间】:2021-08-03 10:51:59
【问题描述】:

每次运行 terraform 时都会重新创建 AKS 用户节点池,但不会重新创建系统节点池。 下面是系统节点池的代码

resource "azurerm_kubernetes_cluster" "aks_cluster" {
#count = var.create_aks_cluster ? 1 : 0
name = var.aks_cluster_name
location = var.location
resource_group_name = var.resource_group_name
dns_prefix = var.dns_prefix
kubernetes_version = var.kubernetes_version
private_cluster_enabled = false
sku_tier = var.sku_tier
lifecycle {
ignore_changes = [
default_node_pool[0].node_count
]
}

下面是用户节点池的代码

resource "azurerm_kubernetes_cluster_node_pool" "aks_cluster_user_pool" {

  lifecycle {
    ignore_changes = [
      node_count
    ]
  }

  for_each = var.additional_node_pools

  kubernetes_cluster_id = azurerm_kubernetes_cluster.aks_cluster.id
  name                  = each.value.node_os == "Linux" ? substr(each.key, 0, 6) : substr(each.key, 0, 12)
  orchestrator_version  = var.kubernetes_version
  mode                  = "User"
  node_count            = each.value.node_count
  vm_size               = each.value.vm_size
  availability_zones    = each.value.zones
  enable_auto_scaling   = each.value.cluster_auto_scaling

  os_type   = each.value.node_os
  min_count = each.value.cluster_auto_scaling_min_count
  max_count = each.value.cluster_auto_scaling_max_count
  max_pods  = var.max_pods_per_node

  node_taints = each.value.taints
  #vnet_subnet_id        =var.subnet_aks_id
}

如何避免重新创建用户节点池?我们正在使用 azure 管道运行 terraform

【问题讨论】:

  • 当您运行 terraform plan 时,Terraform 告诉您用户池发生了什么变化?

标签: kubernetes terraform azure-aks


【解决方案1】:

因为你在 user_node_pool 中设置了mode = "User"

我认为您必须使用 mode = "System" 创建其他 node_pull。

【讨论】:

    【解决方案2】:

    以下是 terraform 计划日志:

      # module.aks_cluster.azurerm_kubernetes_cluster_node_pool.aks_cluster_user_pool["pool1"] must be replaced
    -/+ resource "azurerm_kubernetes_cluster_node_pool" "aks_cluster_user_pool" {
          - enable_host_encryption = false -> null
          - enable_node_public_ip  = false -> null
          ~ id                     = "agentPools/pool1" -> (known after apply)
            name                   = "pool1"
          - node_labels            = {} -> null
          ~ node_taints            = [ # forces replacement
              + "CriticalAddonsOnly=true:NoSchedule",
            ]
          ~ os_disk_size_gb        = 128 -> (known after apply)
          - tags                   = {} -> null
          - vnet_subnet_id         = "ventsubnet-id" -> null # forces replacement
            # (14 unchanged attributes hidden)
        }
    
       # module.aks_cluster.azurerm_kubernetes_cluster_node_pool.aks_cluster_user_pool["pool2"] must be replaced
    -/+ resource "azurerm_kubernetes_cluster_node_pool" "aks_cluster_user_pool" {
          - enable_host_encryption = false -> null
          - enable_node_public_ip  = false -> null
          ~ id                     = "agentPools/pool2" -> (known after apply)
          - max_count              = 0 -> null
          - min_count              = 0 -> null
            name                   = "pool2"
          - node_labels            = {} -> null
          ~ node_taints            = [ # forces replacement
              + "CriticalAddonsOnly=true:NoSchedule",
            ]
          ~ os_disk_size_gb        = 128 -> (known after apply)
          - tags                   = {} -> null
          - vnet_subnet_id         = "ventsubnet" -> null # forces replacement
            # (12 unchanged attributes hidden)
        }
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2021-09-28
      • 2021-10-24
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多