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

Scaling และ Self-Healing ในทางปฏิบัติ (+ Lab)

สเกลขึ้นลงด้วยมือ และพิสูจน์ว่า K8s กู้ Pod ที่หายไปจริง

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

เรื่องนี้คือการเอาแนวคิดจากบทก่อนมาลองด้วยมือ — สั่งเพิ่มพนักงาน (scale up), ลองไล่พนักงานออกหนึ่งคน (ลบ Pod) แล้วดูว่าหัวหน้ากะเรียกคนใหม่มาแทนจริงไหม (self-healing)

สเกลด้วยมือ

# วิธี imperative (เห็นผลไว เหมาะทดลอง)
kubectl scale deployment/web --replicas=5

# วิธี declarative (แนะนำ): แก้ replicas ในไฟล์ แล้ว
kubectl apply -f deployment.yaml
ปรับจำนวน replicas

🧪 Lab: พิสูจน์ self-healing

# ดู Pod ปัจจุบัน (สมมติมี 3 ตัว)
kubectl get pods -l app=web

# ลบ Pod ทิ้งไป 1 ตัว
kubectl delete pod <ชื่อ-pod-ตัวหนึ่ง>

# ดูอีกที — จะเห็น Pod ใหม่ถูกสร้างแทนภายในไม่กี่วินาที!
kubectl get pods -l app=web -w   # -w = เฝ้าดูแบบ real-time
ลบ Pod ทิ้งแล้วดู K8s สร้างใหม่

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 ถูกย้ายไปที่อื่นทันที

ทบทวนด้วย simulation: ปรับ desired replicas และปิด node เพื่อดู self-healing กระจาย Pod

สรุป Key Takeaways

  • สเกลด้วย kubectl scale (imperative) หรือแก้ replicas ในไฟล์แล้ว apply (declarative)
  • ลบ Pod ตรง ๆ ไม่ได้ผล — ReplicaSet สร้างใหม่ให้ครบ desired เสมอ
  • จะลด Pod จริงต้องแก้ที่ Deployment ไม่ใช่ที่ Pod
  • auto-scaling (HPA) เป็นเรื่องของโมดูลถัดไป
อ่านจบแล้วอย่าลืมทำเครื่องหมาย