AWS EKS Kubernetes深度实战:从创建集群到生产部署完整指南

📅 · AWS 国际版实战教程 - ChengziCloud

一句话结论

Meta Description: AWS EKS Kubernetes深度实战教程,涵盖集群创建、节点组配置、应用部署、自动扩缩容、监控告警全流程,附价格对比与常见问题解答。

本文要点
  • 为什么选择AWS EKS管理Kubernetes
  • EKS集群创建:控制面与网络架构
  • 节点组与计算选项详解
  • 应用部署实战
  • 自动扩缩容:Cluster Autoscaler + HPA
  • 监控与日志
  • EKS与替代方案价格对比

Meta Description: AWS EKS Kubernetes深度实战教程,涵盖集群创建、节点组配置、应用部署、自动扩缩容、监控告警全流程,附价格对比与常见问题解答。

关键词:AWS EKS、EKS教程、Kubernetes on AWS、EKS定价、EKS vs 自建K8s、容器编排、生产级K8s集群

一、为什么选择AWS EKS管理Kubernetes

决策口诀:中小规模用Fargate免运维,大规模用托管节点组省成本,混合云选EKS Anywhere。

Kubernetes是容器编排的事实标准,但自建K8s控制面需要投入大量精力维护etcd、API Server、Scheduler等核心组件。AWS EKS(Elastic Kubernetes Service)将控制面完全托管在AWS上,用户只需关注工作负载和数据面节点。

2026年EKS支持Kubernetes 1.31,所有控制面组件由AWS自动打补丁和升级。AWS承担控制面99.95% SLA,你不再需要手动升级etcd或担心控制面组件版本落后。

EKS的核心优势包括:控制面完全托管免运维、与AWS生态(IAM、VPC、ECR、CloudWatch)深度集成、支持托管节点组和Fargate两种数据面模式、支持EKS Anywhere本地部署、支持自定义安全组和私有集群等企业级特性。

二、EKS集群创建:控制面与网络架构

2.1 前置准备

创建EKS集群前,你需要准备以下资源:

  1. AWS账号:已有可跳过。尚未注册请参考 AWS免费套餐注册指南
  2. VPC网络:EKS要求至少2个跨可用区的子网(推荐3个AZ)
  3. IAM角色:需要EKS集群服务角色和节点实例角色
  4. eksctl工具:AWS官方推荐的EKS集群管理CLI

安装eksctl:


curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version

2.2 一键创建生产级集群


eksctl create cluster \
  --name my-prod-cluster \
  --region ap-northeast-1 \
  --version 1.31 \
  --nodegroup-name prod-workers \
  --node-type m5.large \
  --nodes 3 \
  --nodes-min 2 \
  --nodes-max 6 \
  --with-oidc \
  --managed

这条命令会在ap-northeast-1(东京)区域创建:

  • 一个由AWS完全托管的Kubernetes 1.31控制面
  • 一个托管节点组,运行m5.large实例
  • 3个初始Worker节点,支持2~6节点自动伸缩
  • OIDC Provider(用于IAM角色绑定Service Account)

整个创建过程约10-15分钟,eksctl会自动配置VPC子网和安全组。

2.3 kubectl连接集群


aws eks update-kubeconfig --region ap-northeast-1 --name my-prod-cluster
kubectl get nodes
kubectl cluster-info

三、节点组与计算选项详解

3.1 托管节点组 vs 自管节点组

对比维度托管节点组自管节点组Fargate
AWS管理完全托管仅节点生命周期完全无服务器
AMI更新自动手动维护无需关心
滚动更新支持手动配置无需关心
适用场景通用工作负载特殊AMI/内核定制短期/批处理/简单应用
价格溢价无无略高(按秒计费)
弹性伸缩Cluster Autoscaler自行配置自动按需

3.2 EKS定价构成

EKS费用由三部分组成:

费用项目价格(美东区域)说明
EKS控制面$0.10/小时($72/月)每个集群固定费用,与节点数无关
托管节点组无额外费用仅支付底层EC2实例费用
Fargate$0.0464/vCPU/小时 + $0.005/GB/小时按实际使用量计费

省钱提醒:EKS控制面$0.10/小时是固定成本。如果你有多套工作负载,考虑在同一个EKS集群中用Namespace隔离,而不是创建多个集群。

3.3 不同实例类型的价格对比(美东区域,按需价格)

实例类型vCPU内存每小时价格月均费用(730h)推荐场景
t3.medium24GB$0.0416~$30测试/开发环境
m5.large28GB$0.096~$70通用工作负载
m5.xlarge416GB$0.192~$140中型微服务
c5.2xlarge816GB$0.34~$248计算密集型
r5.xlarge432GB$0.252~$184内存密集型
m5.4xlarge1664GB$0.768~$561大型数据库/有状态服务

⚠️ 文中价格为2026年美东区域参考价,实际费用随区域和实例库存变动,请以 AWS 官网为准。

3.4 Spot实例节省成本

在节点组中配置Spot实例可节省60-90%:


// eksctl spot节点组配置
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
managedNodeGroups:
  - name: spot-workers
    instanceTypes:
      - m5.large
      - m5a.large
      - m4.large
    spot: true
    minSize: 2
    maxSize: 10
    desiredCapacity: 3

使用Spot的注意事项:确保应用能处理实例中断(2分钟提前通知)、使用多实例类型降低被回收风险、结合Pod Disruption Budget保证服务可用性。

四、应用部署实战

4.1 部署示例应用

创建一个Nginx Deployment:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-app
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.25
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 256Mi

kubectl apply -f nginx-deployment.yaml
kubectl get pods -o wide
kubectl rollout status deployment/nginx-app

4.2 配置Service和Ingress


apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80

安装AWS Load Balancer Controller并配置Ingress规则,实现外部流量自动路由到集群内部Pod。该控制器会自动创建AWS ALB或NLB资源,无需手动配置负载均衡器。


eksctl create iamserviceaccount \
  --cluster=my-prod-cluster \
  --namespace=kube-system \
  --name=aws-load-balancer-controller \
  --attach-policy-arn=arn:aws:iam::policy/AWSLoadBalancerControllerIAMPolicy \
  --approve

配置好后,只需在Ingress资源中添加注解,AWS Load Balancer Controller会自动完成云上负载均衡器的创建和健康检查配置。这种声明式的流量管理方式极大简化了Kubernetes服务暴露的复杂度。

4.3 从私有ECR仓库拉取镜像


// 认证ECR
aws ecr get-login-password --region ap-northeast-1 | \
  docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com

// 配置ImagePullSecret
kubectl create secret docker-registry ecr-secret \
  --docker-server=123456789012.dkr.ecr.ap-northeast-1.amazonaws.com \
  --docker-username=AWS \
  --docker-password=$(aws ecr get-login-password)

五、自动扩缩容:Cluster Autoscaler + HPA

5.1 安装Cluster Autoscaler


eksctl create iamserviceaccount \
  --cluster=my-prod-cluster \
  --namespace=kube-system \
  --name=cluster-autoscaler \
  --attach-policy-arn=arn:aws:iam::policy/AmazonEKSClusterAutoscalerPolicy \
  --approve

kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/cluster-autoscaler-autodiscover.yaml

5.2 Horizontal Pod Autoscaler(HPA)


apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-app
  minReplicas: 2
  maxReplicas: 20
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70

工作原理:当Pod平均CPU使用率超过70%时,HPA自动增加副本数;当使用率降低时,自动缩减。Cluster Autoscaler感知到Pod无法调度时,自动向EC2申请新节点。

六、监控与日志

6.1 CloudWatch Container Insights


ClusterName=my-prod-cluster
RegionName=ap-northeast-1
FluentBitHttpPort='2020'
FluentBitReadFromHead='Off'

curl https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/container-insights/fluent-bit.yaml | \
  sed "s/{{cluster_name}}/${ClusterName}/g;s/{{region_name}}/${RegionName}/g;s/{{http_server_port}}/${FluentBitHttpPort}/g;s/{{read_from_head}}/${FluentBitReadFromHead}/g" | \
  kubectl apply -f -

安装完成后,在CloudWatch控制台的Container Insights面板即可看到集群CPU、内存、网络、Pod等多维度指标。

6.2 Prometheus + Grafana监控栈

对于需要自建监控栈的场景,推荐使用kube-prometheus-stack Helm chart:


helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install kube-prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace

七、EKS与替代方案价格对比

方案控制面费用计算费用(3节点m5.large)月度总费用运维复杂度
EKS(托管节点)$72~$210(EC2按需)~$282低
EKS(Spot节点)$72~$63-84(60-70%折扣)~$135-156中
EKS(Fargate,3×2vCPU)$72~$330(vCPU+内存)~$402最低
自建K8s(EC2单节点)$0~$70(t3.large)~$70最高
ECS(Fargate)$0~$330~$330低
GKE Autopilot~$74按Pod计费~$150-400最低
阿里云ACK(托管版)¥600+/月~¥200(3节点)~¥800+中

关键结论:EKS控制面$0.10/小时对于3节点以上集群有明显优势。如果你只需要少量容器运行,ECS Fargate可能更便宜(无控制面费用)。如果你需要完整的Kubernetes API和生态,EKS是AWS上唯一的选择。

八、常见问题 FAQ

Q: EKS免费套餐包含控制面费用吗? A: 不包含。EKS控制面$0.10/小时不在AWS 12个月免费套餐范围内。免费套餐只涵盖EC2实例(t2.micro/t3.micro)和部分其他服务。想省钱建议用单节点EKS + Spot实例。

Q: EKS支持哪些AWS区域? A: EKS支持全球30+区域。推荐选择离用户最近的区域,如东京(ap-northeast-1)、新加坡(ap-southeast-1)、美西(us-west-2)。中国大陆用户可考虑香港(ap-east-1)或东京区域。

Q: EKS集群升级会中断服务吗? A: 控制面升级由AWS执行,通常无感知。工作负载升级(节点组AMIs)支持滚动更新,配合Pod Disruption Budget可实现零中断。eksctl提供 eksctl upgrade 命令自动处理升级流程。

Q: EKS和ACK(阿里云容器服务)怎么选? A: 如果你的业务主要在AWS生态(IAM、S3、Lambda等),选EKS。如果面向中国大陆用户或已深度使用阿里云,选ACK。两者都支持标准Kubernetes API,迁移成本不高。详见 阿里云ECS选购指南。

Q: 小团队/个人项目适合用EKS吗? A: 如果你有3个以上微服务需要编排,且团队有Kubernetes基础,EKS值得投入。如果你只有1-2个应用,Lightsail或ECS Fargate更简单。可参考 Lightsail vs EC2选型。

Q: 如何降低EKS集群成本? A: 五步省钱法:(1) 用Spot实例做无状态工作负载;(2) 启用Cluster Autoscaler自动伸缩节点;(3) 用节点亲和性把稳定负载放到预留实例;(4) 合理设置Pod的requests/limits避免资源浪费;(5) 用Savings Plans锁定长期折扣。详见 AWS账单管理指南。

九、总结

AWS EKS是生产级Kubernetes的最佳托管方案之一。它将控制面运维完全交给AWS,让你专注于应用和业务逻辑。 在实际落地过程中,很多团队容易陷入两个误区:一是过度追求完美的架构设计而迟迟不上线,二是为了省钱把所有工作负载都塞到一个集群里导致资源争抢。正确做法是先用最小规模跑通核心业务流程,再逐步优化和扩展。

EKS的核心建议可以总结为五句话:小规模用Fargate免运维、中大规模用托管节点组加Spot省钱、始终配置Cluster Autoscaler实现弹性伸缩、用Container Insights或Prometheus做好监控告警、定期检查集群安全配置和IAM权限最小化。对于需要完整Kubernetes API和丰富插件生态的团队,EKS是AWS上的最优选择。

如果你刚刚开始接触容器化部署,建议先从ECS Fargate入手熟悉容器概念,再迁移到EKS获取更强的编排能力。AWS的容器服务生态非常完善,无论选择哪种方案,都能获得稳定的生产级支持。结合AWS免费套餐和Savings Plans,即使是个人开发者也能以极低成本体验企业级容器编排能力。

⚠️ 文中价格为 2026 年参考价,实际费用随区域和官方调价变动,请以 AWS 官网为准。

🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。

本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多