You need to enable JavaScript to run this app. 如何使用Terraform创建Fargate类型的EKS节点组?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Terraform创建Fargate类型的EKS节点组?

核心逻辑认知纠正

Fargate本质不属于EC2实例类型,它是AWS提供的Serverless容器运行时服务,和传统EKS托管节点组(基于EC2实例搭建的节点池)底层架构完全独立,根本不存在可选的instance_type = "Fargate"配置项——这也是之前尝试在普通节点组中填入该实例类型报错的根本原因。
eksctl创建带Fargate能力的EKS集群时,并不是真的生成名为Fargate的EC2实例节点,而是自动在集群内创建关联的Fargate Profile资源,通过匹配规则把符合条件的K8s Pod调度到Serverless运行时上,这套逻辑和EC2节点组的配置体系完全平行。

Terraform实现等效Fargate EKS集群的方案

因为架构逻辑的差异,不能复用传统EC2节点组的配置块实现Fargate能力,需要按以下步骤搭建:

  • 先部署EKS基础控制面,提前配置好对应的IAM角色、VPC网络、子网资源,这部分和普通EKS集群的基础配置没有区别,注意不需要提前创建依赖EC2实例的托管节点组。
  • 单独创建aws_eks_fargate_profile资源,这是实现Fargate调度能力的核心配置,用来定义Fargate运行时的匹配规则、关联权限、网络参数。
  • 根据业务需求定义Pod调度匹配规则,指定需要被调度到Fargate上的K8s命名空间、资源标签,确保对应工作负载可以被正常调度。

核心参考代码片段如下:

# 基础EKS控制面配置(省略VPC、IAM角色创建等前置依赖)
resource "aws_eks_cluster" "fargate_cluster" {
  name     = "serverless-eks-demo"
  role_arn = aws_iam_role.eks_control_plane.arn
  vpc_config {
    subnet_ids = var.private_subnet_id_list
  }
}

# Fargate Profile核心配置,替代错误的EC2节点组实例配置
resource "aws_eks_fargate_profile" "default_rule" {
  cluster_name           = aws_eks_cluster.fargate_cluster.name
  fargate_profile_name   = "general-workload-profile"
  pod_execution_role_arn = aws_iam_role.fargate_runtime.arn
  subnet_ids            = var.private_subnet_id_list

  # 定义Pod调度匹配规则
  selector {
    namespace = "kube-system"
  }
  selector {
    namespace = "app-namespace"
    labels = {
      env = "production"
    }
  }
}

注意事项:

  • Fargate是Serverless架构,不需要像EC2节点组那样手动配置desired_capacity/max_capacity/min_capacity这类节点容量参数,运行资源会由AWS根据实际调度的Pod数量自动动态调整。
  • 之前尝试的配置代码里还有一处参数拼写错误:min_capaicty遗漏了字母t,正确的参数名是min_capacity,不过这类容量参数只在EC2类型的节点组中生效,Fargate场景下完全不需要配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 14:54:00