ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~16 นาที· อัปเดตล่าสุด

Amazon EKS — K8s แบบ managed บน AWS

ปิดหลักสูตรด้วยการเชื่อม K8s เข้ากับโลก AWS

พื้นฐานที่ควรรู้: การรัน Kubernetes ด้วยตัวเองตั้งแต่ศูนย์ เป็นเรื่องที่ยากมาก เพราะต้องดูแลเซิร์ฟเวอร์หลัก (Control Plane) ให้ทำงานได้ตลอดเวลาไม่ให้ล่ม คลาวด์ต่างๆ จึงมีบริการประเภท Managed K8s เพื่อช่วยแบ่งเบาภาระในส่วนที่ยากนี้ออกไป

การเช่าคลัสเตอร์แบบมีผู้ดูแล

EKS เหมือนเช่าคลัสเตอร์ K8s แบบมีทีมช่างดูแล control plane ให้ — AWS จัดการ API server/etcd (ส่วนที่ยากและต้อง HA) ให้ ส่วนเราโฟกัสที่ worker node และแอปของเรา

Amazon EKS (Elastic Kubernetes Service) คือ K8s ที่ AWS ดูแล control plane ให้ (patch, HA, scaling ของ control plane) · เรายังคงใช้ kubectl และ manifest เดิมทุกอย่าง — สิ่งที่เรียนมาทั้งหลักสูตรใช้ได้หมด

AWS ดูแล control plane · เราดูแล worker + แอป

AWS จัดการให้ (managed)
API server
etcd
Scheduler/Controllers
บัญชี AWS ของเรา
EC2 / Fargateworker nodes
ELB/ALBจาก Service/Ingress
EBS/EFSจาก PVC
IAM (IRSA)สิทธิ์ของ Pod

kubectl และ manifest เดิมใช้ได้หมด — K8s วางบนโครงสร้าง AWS ที่เรียนมา

EKS: AWS ดูแล control plane · worker node เป็น EC2/Fargate ในบัญชีเรา · ต่อกับ ELB, EBS, IAM ของ AWS

EKS เชื่อม K8s กับบริการ AWS ยังไง

  • Worker nodes — เป็น EC2 (จัดการเองหรือ managed node group) หรือ Fargate (serverless ไม่ต้องดูแล node)
  • Service type LoadBalancer → สร้าง AWS ELB/NLB จริงให้ (ผ่าน AWS Load Balancer Controller → ALB สำหรับ Ingress)
  • PVC + StorageClass → ผูกกับ EBS/EFS จริง (ทบทวนจาก M4)
  • IRSA (IAM Roles for Service Accounts) — ผูก ServiceAccount ของ Pod กับ IAM role เพื่อเรียกบริการ AWS (S3, DynamoDB) อย่างปลอดภัย
  • Cluster Autoscaler / Karpenter — เพิ่ม/ลด EC2 node ตามจำนวน Pod ที่ Pending

สรุป Key Takeaways

  • EKS = managed K8s ที่ AWS ดูแล control plane ให้ · ใช้ kubectl/manifest เดิมทั้งหมด
  • เชื่อม K8s เข้ากับ AWS: node เป็น EC2/Fargate, Service→ELB, PVC→EBS/EFS, IRSA→IAM
  • EKS(K8s มาตรฐาน) vs ECS(ของ AWS ง่ายกว่า) · Fargate = serverless compute
  • ก้าวต่อไป: สร้าง EKS จริง + GitOps + สอบ CKA

คำถามที่พบบ่อย

EKS จัดการอะไรให้ อะไรยังเป็นหน้าที่เรา

AWS ดูแล control plane ให้ทั้งหมด (API server, etcd, HA ข้าม AZ) ส่วนเรายังดูแล: worker node (เลือกใช้ managed node group หรือ Fargate), networking add-on, การอัปเกรดเวอร์ชัน (ทั้ง control plane และ node), RBAC และความปลอดภัยของ workload — จ่ายค่า control plane รายชั่วโมง + ค่าเครื่องตามปกติ

Pod บน EKS จะใช้สิทธิ์ AWS (เช่น อ่าน S3) ยังไงให้ถูกวิธี

ใช้ IRSA (IAM Roles for Service Accounts) หรือ Pod Identity รุ่นใหม่ — ผูก IAM role กับ ServiceAccount ให้เฉพาะ pod นั้นได้ credential ชั่วคราว — ห้ามใช้วิธีแปะ role ที่ node เพราะทุก pod บนเครื่องจะได้สิทธิ์เท่ากันหมด ซึ่งกว้างเกินไป

Karpenter คืออะไร ต่างจาก Cluster Autoscaler ยังไง

ทั้งคู่เพิ่มเครื่องเมื่อ pod ไม่มีที่ลง แต่ Karpenter (ของ AWS) ฉลาดกว่า: เลือก instance type ที่พอดีกับ pod ที่รอจริงจากหลายร้อยแบบ (รวม Spot), จัด bin-packing และรวบเครื่องเมื่อว่าง — เป็นตัวเลือกหลักบน EKS ยุคนี้แทน CA แบบ node group เดิม

อ่านจบแล้วอย่าลืมทำเครื่องหมาย