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

ดูแลคลัสเตอร์ในทางปฏิบัติ (+ Lab)

ตั้ง HPA + สร้างโหลด แล้วเฝ้าดูการสเกล

เปรียบเทียบให้เห็นภาพ

บทนี้รวมทุกอย่าง: จัด namespace, ตั้ง HPA, ยิงโหลดใส่ แล้วใช้ observability เฝ้าดูว่าระบบสเกลและฟื้นตัวยังไง

🧪 Lab: ดู HPA สเกลจริง

kubectl autoscale deployment/web --cpu-percent=50 --min=2 --max=10

# เปิดอีก terminal ยิงโหลด (busybox loop เรียก service)
kubectl run -it load --image=busybox --restart=Never -- \
  /bin/sh -c "while true; do wget -q -O- http://web; done"

# เฝ้าดูจำนวน Pod เพิ่มขึ้นตามโหลด
kubectl get hpa -w
kubectl get pods -w
ตั้ง HPA แล้วสร้างโหลดยิงเข้าไป

K8s Scheduler & Self-Healing

ตั้งจำนวน Pod ที่อยากได้ (desired) แล้วดู Scheduler วางลง node ที่ว่าง · ลองปิด node เพื่อดู Pod ถูกย้ายไปที่อื่นให้ครบเสมอ

Desired replicas:
4
(แต่ละ node รับได้ 4 Pod)
node-1
Pod
Pod
Pod
Pod
node-2
Pod
Pod
Pod
Pod
node-3
Pod
Pod
Pod
Pod
4
Desired
4
Running
0
Pending

✅ Scheduler กระจาย 4 Pod ลง node ที่ว่างอย่างสมดุล — ลองกด "ปิด node" ดูว่า Pod ถูกย้ายไปที่อื่นทันที

ทบทวน: ปรับ desired replicas เพื่อจำลองผลลัพธ์ที่ HPA จะสั่ง แล้วดู scheduler กระจาย Pod

สรุป Key Takeaways

  • HPA + โหลดจริง = เห็น Pod เพิ่มอัตโนมัติ แล้วลดเมื่อโหลดหาย
  • HPA มีดีเลย์และ cooldown — scale ขึ้นเร็วกว่าลงเพื่อกัน flapping
  • เก็บกวาด lab เสมอ โดยเฉพาะบน cloud
อ่านจบแล้วอย่าลืมทำเครื่องหมาย