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

HPA — สเกล Pod อัตโนมัติตามโหลด

เพิ่ม/ลดจำนวน Pod เองตาม CPU หรือเมตริก

พื้นฐานที่ควรรู้: ปริมาณผู้ใช้งานเว็บไซต์มักไม่เท่ากันตลอดทั้งวัน หากตั้งเครื่องเซิร์ฟเวอร์ไว้เยอะตลอดเวลาก็จะเปลืองเงิน แต่ถ้ามีน้อยไปเว็บก็จะล่มเมื่อคนเข้าเยอะ การทำ Auto-scaling คือการปรับจำนวนเครื่องตามการใช้งานจริงโดยอัตโนมัติ

ผู้จัดการร้านจอมเฝ้ามอง

HPA เหมือนผู้จัดการร้านที่จ้องกล้องวงจรปิด — ลูกค้าเยอะขึ้นก็เรียกพนักงานเพิ่ม (scale out) พอคนบางลงก็ให้กลับบ้าน (scale in) โดยอัตโนมัติ ไม่ต้องมีคนคอยสั่ง

จากบท Workloads เราสเกลด้วยมือ (kubectl scale) · HorizontalPodAutoscaler (HPA) ทำให้อัตโนมัติ: เฝ้าดูเมตริก (เช่น CPU เฉลี่ย) แล้วปรับ replicas ของ Deployment ให้อยู่ในช่วง min–max ที่ตั้งไว้

HPA อ่านเมตริก → เทียบเป้า → ปรับ replicas

metrics-serverCPU/RAM จริง
อ่าน
HPAเป้า CPU 50%
ปรับ
Deploymentreplicas 2→10

โหลดขึ้น → เพิ่ม Pod · โหลดลง → ลด Pod (ในช่วง min–max)

HPA อ่านเมตริกจาก metrics-server → เทียบกับเป้า → ปรับ replicas ของ Deployment ขึ้น/ลง
kubectl autoscale deployment/web \
  --cpu-percent=50 --min=2 --max=10

kubectl get hpa           # ดู TARGETS (ปัจจุบัน/เป้า) และ REPLICAS
สร้าง HPA: รักษา CPU ~50% ระหว่าง 2–10 Pod
kubectl get hpa
kubectl describe hpa <hpa-name>
💻 Hands-on: ตรวจสอบสถานะและรายละเอียดของ HPA

สรุป Key Takeaways

  • HPA = สเกลจำนวน Pod อัตโนมัติตามเมตริก (เช่น CPU) ในช่วง min–max
  • ต้องมี metrics-server + ตั้ง resources.requests ไม่งั้นคำนวณ % ไม่ได้
  • HPA(Pod แนวนอน) / VPA(ขนาด Pod) / Cluster Autoscaler(จำนวน node) คนละชั้น

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

HPA ต้องมีอะไรก่อนถึงทำงานได้

สองเงื่อนไขที่มือใหม่พลาด: (1) ต้องติดตั้ง metrics-server ใน cluster (kind/minikube ไม่มีมาให้) (2) pod ต้องตั้ง resource requests เพราะ HPA คิดเปอร์เซ็นต์จาก requests — ถ้า HPA ขึ้น <unknown> ให้เช็คสองข้อนี้ก่อนเลย

HPA กับ VPA กับ Cluster Autoscaler ต่างกันยังไง

สามแกน: HPA = เพิ่ม "จำนวน pod" ตามโหลด · VPA = ปรับ "ขนาด (requests)" ของ pod ให้พอดี · Cluster Autoscaler/Karpenter = เพิ่ม "จำนวนเครื่อง" เมื่อ pod ไม่มีที่ลง — ใช้ร่วมกันได้โดย HPA ขยาย pod แล้ว CA ขยายเครื่องรองรับ (แต่อย่าให้ HPA กับ VPA คุม metric เดียวกันพร้อมกัน)

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