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

如何修改terraform aws_eks_node_group自动创建的autoscaling_group最大实例生命周期参数

操作方案
  • 确认前提:你的AWS Terraform Provider版本 >= 3.22.0,该版本开始支持ASG的max_instance_lifetime参数配置
  • 步骤1:添加数据源,匹配EKS自动生成的目标ASG
# 按EKS集群和节点组标签过滤ASG
data "aws_autoscaling_groups" "eks_node_asg" {
  filter {
    name   = "tag:eks:cluster-name"
    values = ["<你的EKS集群名称>"]
  }
  filter {
    name   = "tag:eks:nodegroup-name"
    values = ["<你的EKS节点组名称>"]
  }
}

# 获取目标ASG的详细配置
data "aws_autoscaling_group" "target_asg" {
  name = one(data.aws_autoscaling_groups.eks_node_asg.names)
}
  • 步骤2:执行命令获取ASG名称,导入到Terraform状态
    先执行terraform apply让数据源生效,再执行terraform state show data.aws_autoscaling_group.target_asg | grep name拿到ASG的完整名称,随后执行导入命令:
    terraform import aws_autoscaling_group.eks_managed_asg <上一步拿到的ASG完整名称>
  • 步骤3:添加ASG资源配置,仅管理max_instance_lifetime参数
resource "aws_autoscaling_group" "eks_managed_asg" {
  name                 = data.aws_autoscaling_group.target_asg.name
  # 单位为秒,示例值2592000对应30天,可按需修改
  max_instance_lifetime = 2592000

  # 忽略所有其他属性,避免和EKS的托管逻辑冲突
  lifecycle {
    ignore_changes = all
  }
}
  • 步骤4:执行terraform plan确认只有max_instance_lifetime参数会被修改,确认无误后执行terraform apply即可完成配置。

注意事项:

  1. 配置生效后,ASG会自动终止运行时长超过阈值的实例,并用新实例替换,建议先在非生产环境验证
  2. 配置了ignore_changes = all后,你后续对aws_eks_node_group资源的修改(比如扩缩容、更换实例类型)会由EKS自动同步到ASG,Terraform不会覆盖这些修改,仅会维持你设置的max_instance_lifetime参数值不变
  3. 建议同时配置PodDisruptionBudget,避免实例批量终止影响业务可用性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:27:03