Kubernetes (มักเรียกย่อว่า K8s) เป็นแพลตฟอร์ม container orchestration แบบโอเพนซอร์ส มันทำให้การ deploy, การ scale, การเชื่อมต่อเครือข่าย และการซ่อมแซมตัวเองของแอปพลิเคชันที่รันแบบ container เป็นอัตโนมัติทั่วทั้ง cluster ของเครื่องหลายเครื่อง คุณจึงเพียงอธิบาย สถานะที่ต้องการ (desired state) แล้ว Kubernetes จะทำงานอย่างต่อเนื่องเพื่อทำให้ความเป็นจริงตรงกับสถานะนั้น
ปัญหา: การรัน container ในระดับใหญ่นั้นยาก
You have containers (from Docker), but in production you must also answer:
→ แต่ละ container รันบนเครื่อง (machine) ไหน? (scheduling)
→ ถ้า container crash ล่ะ? (self-healing / restart)
→ ถ้าทั้ง node ตายล่ะ? (reschedule ไปที่อื่น)
→ 50 replica จะค้นหาและคุยกันได้อย่างไร? (service discovery)
→ จะ roll out เวอร์ชันใหม่โดยไม่มี downtime ได้อย่างไร? (rolling update)
→ จะ scale จาก 3 เป็น 30 replica ตอนทราฟฟิกพุ่งได้อย่างไร? (autoscaling)
การทำทั้งหมดนี้ด้วยมือบนเซิร์ฟเวอร์หลายเครื่องนั้นขยายขนาดไม่ไหว
