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

EKS集群使用Spot实例时如何设置价格上限

EKS Spot实例配置限制规避方案

大量生产环境用户都在EKS集群中使用Spot实例做成本优化,你遇到的Terraform配置限制有成熟的可落地解决方案,且AWS默认规则已经规避了Spot价格暴涨带来的超额付费风险:Spot实例默认最高出价等于同配置按需实例价格,即使市场价格涨幅超过按需,你最多只需支付按需实例的费用,超出部分AWS不会收取,同时系统会自动中断超出价格的Spot实例。

具体规避方案

方案1:独立配置Launch Template传递Spot参数(兼容性最高)

不要在EKS节点组资源中定义实例市场相关配置,将Spot价格等参数写入独立的EC2启动模板资源,再由EKS节点组关联该启动模板即可,示例配置如下:

# 定义带Spot市场参数的启动模板
resource "aws_launch_template" "eks_spot_worker" {
  name_prefix   = "eks-spot-worker-"
  instance_type = "t3.large"
  image_id      = data.aws_ami.eks_worker.id
  iam_instance_profile {
    name = aws_iam_instance_profile.eks_worker.name
  }

  # 这里配置Spot最高价格等市场参数
  market_options {
    market_type = "spot"
    spot_options {
      max_price = "0.08" # 可设置为同配置按需实例价格,规避超额付费
      spot_instance_type = "one-time"
    }
  }
}

# EKS节点组直接关联上述启动模板
resource "aws_eks_node_group" "spot" {
  cluster_name    = aws_eks_cluster.example.name
  node_group_name = "spot-node-group"
  node_role_arn   = aws_iam_role.eks_node.arn
  subnet_ids      = aws_subnet.private.*.id
  capacity_type   = "SPOT"

  launch_template {
    id      = aws_launch_template.eks_spot_worker.id
    version = "$Latest"
  }

  # 不要在这里添加任何instance_market_options相关配置,避免覆盖启动模板参数
}

方案2:升级Terraform AWS Provider版本

你遇到的无法在节点组中配置实例市场选项的问题已经在v3.74.0及以上版本的AWS Provider中修复,升级后可以直接在aws_eks_node_group的instance_market_options块中配置max_price参数。

EKS Spot生产使用最佳实践

大部分企业使用EKS Spot实例时会配套以下能力保障业务稳定性:

  • 部署AWS Node Termination Handler,提前感知Spot中断事件,自动排空节点上的业务Pod
  • 配置Cluster Autoscaler,Spot实例中断后自动扩容新的计算资源
  • 选择多实例类型、多可用区部署Spot节点组,降低批量中断概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:06:02