Kubernetes ทำอะไรได้บ้าง (ภาพรวม)
สรุปความสามารถหลัก 5 อย่างของ K8s ก่อนลงลึก
ปูพื้นฐาน: Kubernetes มีหลักคิดที่เปลี่ยนจากการ "สั่งงานทีละสเต็ป" (Imperative) เป็นการ "สั่งผลลัพธ์ที่อยากได้" (Declarative)
มอง Kubernetes เป็นผู้จัดการโรงแรมอัจฉริยะ — คุณบอกแค่ว่า "อยากให้มีพนักงานต้อนรับ 5 คนประจำเสมอ" ผู้จัดการจะคอยนับ ถ้าใครลาป่วยก็เรียกคนมาแทนทันที ถ้าแขกล้นก็เพิ่มคน และจัดตารางว่าใครยืนจุดไหน — โดยที่คุณไม่ต้องสั่งทีละคน
หัวใจ: Declarative + Desired State
แนวคิดที่สำคัญที่สุดของ K8s คือ declarative — เราประกาศ "ปลายทางที่อยากได้" (เช่น "เว็บนี้ต้องมี 3 ก๊อปปี้รันอยู่เสมอ") ลงในไฟล์ ไม่ใช่สั่งทีละสเต็ปว่าต้องทำอะไร · K8s จะเทียบ desired state (สิ่งที่อยากได้) กับ current state (สิ่งที่เป็นอยู่) ตลอดเวลา แล้วปรับให้ตรงกันเอง เรียกว่า reconciliation loop
วนเทียบ desired ↔ current แล้วปรับให้ตรง
ทำซ้ำตลอดเวลา = self-healing · ไม่ว่าอะไรพัง ระบบดึงกลับสู่ desired เสมอ
ความสามารถหลัก 5 อย่าง
- Self-healing — container ล่ม/เครื่องดับ K8s สร้างใหม่ให้อัตโนมัติจนครบจำนวนที่สั่ง
- Scaling — เพิ่ม/ลดจำนวน container ตามโหลด (สั่งเองหรือให้ auto ตาม CPU/เมตริก)
- Service discovery & load balancing — ให้ชื่อคงที่กับกลุ่ม container และกระจาย traffic ให้
- Automated rollout & rollback — อัปเดตเวอร์ชันแบบค่อยเป็นค่อยไป ถ้าพังย้อนกลับได้
- Config & secret management — แยกค่าตั้งค่า/รหัสลับออกจาก image
สรุป Key Takeaways
- K8s ทำงานแบบ declarative: เราประกาศ desired state, K8s ปรับ current state ให้ตรงเองตลอดเวลา
- Reconciliation loop คือกลไกเบื้องหลัง self-healing
- 5 ความสามารถหลัก: self-healing, scaling, service discovery/LB, rollout/rollback, config/secret
คำถามที่พบบ่อย
Kubernetes ทำอะไรให้เราบ้างแบบเห็นภาพ
เราประกาศ "สภาพที่อยากได้" (desired state เช่น app นี้รัน 3 ชุด เวอร์ชันนี้) แล้ว K8s ทำให้เป็นจริงตลอดเวลา: เครื่องตายก็ย้าย pod ไปเครื่องอื่น, pod พังก็สร้างใหม่, deploy ใหม่ก็ทยอยเปลี่ยนทีละตัว — หัวใจคือ reconciliation loop ที่คอยเทียบสภาพจริงกับที่ประกาศ
K8s อ่านว่าอะไร แล้ว K8s ต่างจาก Docker ไหม
อ่านว่า "คูเบอร์เนติส" (K8s = K + 8 ตัวอักษร + s) — ไม่ใช่คู่แข่ง Docker: Docker สร้าง/รัน container ทีละเครื่อง ส่วน K8s จัดวง container นับพันข้ามหลายเครื่อง โดยข้างในใช้ container runtime (containerd) รัน container ที่ build ด้วย Docker ได้ตามปกติ

