使用 Terraform 的生产 EKS 完整指南
发布: (2026年3月9日 GMT+8 02:56)
2 分钟阅读
原文: Dev.to
Source: Dev.to
概览
使用 Terraform 部署可投入生产的 EKS —— 包含 Karpenter 自动扩缩容、自愈节点、Pod 安全标准以及多可用区高可用。
EKS 是最受欢迎的托管 Kubernetes 服务,但许多生产环境的部署配置严重不足:缺少节点自动修复、没有 Pod 安全标准、手动扩容等。本指南涵盖构建生产级 EKS 集群所需的全部内容。
功能对比
| 功能 | EKS | AKS | GKE |
|---|---|---|---|
| 控制平面费用 | $0.10/小时 | 免费 | 免费(标准版) |
| Autopilot 模式 | 否(使用 Karpenter) | 否 | 是 |
| 节点自动修复 | 手动 / Lambda | 内置 | 内置 |
| 服务网格 | App Mesh / Istio | Istio | Anthos / Istio |
| GPU 支持 | p4d, g5 | NC、ND 系列 | T4, A100 |
Terraform 模块示例
module "eks" {
source = "github.com/kogunlowo123/terraform-aws-auto-healing-eks"
cluster_name = "production-cluster"
cluster_version = "1.29"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnet_ids
node_groups = [{
name = "general"
instance_types = ["m6i.xlarge", "m6i.2xlarge"]
min_size = 3
max_size = 20
desired_size = 5
}]
enable_karpenter = true
enable_cluster_autoscaler = false # Use Karpenter instead
enable_node_termination_handler = true
enable_auto_remediation = true
}
最佳实践
- 使用 Karpenter 代替 Cluster Autoscaler,实现更快的扩容和更好的资源打包。
- 为每个生产工作负载 启用 Pod 中断预算(Pod Disruption Budgets)。
- 部署 Node Termination Handler,优雅地关闭 Spot 实例。
- 使用 Calico 或 Cilium 实现网络策略。
- 开启控制平面日志并发送至 CloudWatch。
- 使用 IRSA(服务账户的 IAM 角色),而不是节点级别的 IAM 权限。
相关 Terraform 模块
terraform-aws-auto-healing-eks— 自愈的 EKS。terraform-aws-eks— 标准 EKS 模块。terraform-aws-vpc-complete— 为 EKS 提供的 VPC。
完整指南: