You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform 12.20.0下为EKS节点组EC2实例添加名称标签的问题

解决EKS节点组additional_tags中Name标签不生效的问题

看起来你遇到的问题是Terraform部署EKS时,节点组additional_tags里的Name标签没有同步到EC2实例上,但其他标签正常显示。我之前也碰到过类似的情况,核心原因和Auto Scaling Group(ASG)的标签传播设置有关,下面给你几个具体的解决方案:

1. 先确认问题根源

首先登录AWS控制台,找到对应节点组的Auto Scaling Group,查看它的标签列表:

  • 如果Name标签根本没出现在ASG上:说明模块没有正确将additional_tags中的Name同步到ASG配置
  • 如果Name标签在ASG上,但没有勾选在启动时传播:这就是核心问题——ASG的标签不会自动传递给EC2实例,必须显式开启这个选项

2. 针对旧版EKS模块的解决方案

你使用的是Terraform 12.20.0,对应的官方terraform-aws-eks模块应该是v10.x左右的旧版本,这类版本中additional_tags默认不会为标签设置propagate_at_launch = true,需要手动调整配置:

方案A:改用带传播设置的标签数组

将节点组中的additional_tags替换为tags数组,明确指定每个标签是否传播到实例:

node_groups = {
  app = {
    name = "app"
    # 其他原有配置...
    k8s_labels = { nodegroup = "app" }
    tags = [
      {
        key                 = "nodegroup"
        value               = "app"
        propagate_at_launch = true
      },
      {
        key                 = "Name"
        value               = "${var.environment}-app-node"
        propagate_at_launch = true
      },
      {
        key                 = "env"
        value               = var.environment
        propagate_at_launch = true
      },
      {
        key                 = "k8s.io/cluster-autoscaler/enabled"
        value               = "true"
        propagate_at_launch = true
      },
      {
        key                 = "k8s.io/cluster-autoscaler/${var.cluster-name}"
        value               = "true"
        propagate_at_launch = true
      }
    ]
  }
  # ml节点组做同样的修改...
}

方案B:启用标签传播参数

部分旧版EKS模块支持additional_tags_propagate参数,可以在node_groups_defaults中全局开启标签传播:

node_groups_defaults = {
  disk_size = 128
  key_name = var.key_name
  subnets = [ aws_subnet.{{}}.id, aws_subnet.{{}}.id, ]
  k8s_labels = { env = var.environment }
  additional_tags = {
    env = var.environment
    "k8s.io/cluster-autoscaler/enabled" = "true"
    "k8s.io/cluster-autoscaler/${var.cluster-name}" = "true"
  }
  # 添加这一行,让所有additional_tags自动传播到实例
  additional_tags_propagate = true
}

添加后,节点组additional_tags中的Name标签就会自动带上propagate_at_launch = true。

3. 验证配置

修改完配置后,运行terraform plan,在输出中查找对应ASG的标签配置,确认Name标签已经设置了传播属性。如果输出显示类似下面的内容,说明配置生效了:

+ tags_with_propagation = {
    + "Name"                      = "prod-app-node"
    + "env"                       = "prod"
    + "nodegroup"                 = "app"
    # 其他标签...
  }

4. 可选:升级EKS模块版本

如果你的项目允许,建议升级到兼容Terraform 12的新版EKS模块(比如v18.x),新版本默认会将additional_tags中的标签设置为自动传播到EC2实例,这类问题会被自动解决。不过升级前记得备份配置,检查模块变更日志,避免兼容性问题。

内容的提问来源于stack exchange,提问作者Jules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:02:41