Skip to main content

EKS(Elastic Kubernetes Service)

AWS 托管的 K8s control plane。你管 workload,AWS 管 master。


架構

EKS Cluster
├── Control Plane(AWS 管,你看不到這層)
│ ├── API Server
│ ├── etcd
│ └── Controller Manager / Scheduler
└── Node Group(你的 EC2 worker node)
└── Node(EC2 instance)
└── Pod
└── Container(image 從 ECR pull)

你管什麼 vs AWS 管什麼

你管AWS 管
Deployment / Service / IngressAPI Server 高可用
Node Group 規格與數量etcd 備份
Namespace、RBACControl plane 版本升級
HPA / VPA / Cluster AutoscalerControl plane 自動修復
Pod resource limits

常用指令

# 取得 kubeconfig(連到 EKS cluster)
aws eks update-kubeconfig --region us-east-1 --name my-cluster

# 確認目前 context
kubectl config current-context

# 看 node 狀態
kubectl get nodes

# 看 pod 狀態
kubectl get pods -n my-namespace

# 看 pod log
kubectl logs -n my-namespace my-pod --tail=100

# 進入 container
kubectl exec -it -n my-namespace my-pod -- /bin/sh

什麼時候用

用 EKS:

  • 服務已經 containerized,需要 orchestration
  • 需要 rolling update、auto scaling、service discovery
  • 多服務之間有依賴關係(Ingress routing、service mesh)

不用 EKS,改用:

  • 單一小服務 → Lambda 或 ECS(更簡單)
  • 只有一台機器的需求 → 直接 EC2

一句話總結

概念一句話
EKSK8s control plane 是 AWS 的,node 是你的 EC2
Node Group一組規格相同的 EC2,組成 K8s worker
PodK8s 最小部署單位,跑一個或多個 container
Fargate連 node 都不用管,按 Pod CPU/Memory 計費