Kubernetes คืออะไร ?
Kubernetes เป็นระบบ open-source ที่ถูกพัฒนาโดย Google เพื่อช่วยในการจัดการและควบคุมการทำงานของแอปพลิเคชันที่อยู่ใน containers
เผยแพร่เมื่อ
- cloud computing
- kubernetes

ถ้าทีมคุณรันแอปพลิเคชันบน container ตั้งแต่สองสามตัวขึ้นไป ไม่ช้าก็เร็วจะเจอคำถามเดิมๆ: ใครรีสตาร์ต container ที่ล่มตอนตีสาม ใครเพิ่ม container ตอน traffic พุ่ง และใครดูแลให้ทุกอย่างรันอยู่บนเครื่องที่ทรัพยากรยังเหลือพอ Kubernetes ถูกสร้างมาเพื่อตอบคำถามพวกนี้โดยอัตโนมัติ
Kubernetes คืออะไร
Kubernetes (มักเขียนย่อว่า K8s) เป็นระบบ open-source สำหรับจัดการ container จำนวนมาก ทั้งการรัน การกระจาย และการกู้คืน เดิมพัฒนาโดย Google จากประสบการณ์รันระบบขนาดใหญ่มาหลายปี ปัจจุบันเป็นโปรเจกต์ open-source ที่มีชุมชนและ ecosystem รองรับกว้างมาก ทั้งบน cloud สาธารณะและเครื่องในองค์กรเอง
ชื่อ Kubernetes มาจากภาษากรีก แปลว่า “คนถือหางเสือเรือ” (helmsman) — คนที่ควบคุมทิศทางเรือ ตรงกับบทบาทของระบบที่คอยกำกับ container หลายร้อยตัวให้ทำงานตามที่ตั้งใจ
ประเด็นสำคัญ: Kubernetes ไม่ได้รันแอปของคุณให้เอง แต่ดูแลว่า container ที่บรรจุแอปของคุณ รันอยู่ พร้อมใช้งาน และมีทรัพยากรเพียงพอ ตามสเปกที่คุณประกาศไว้เสมอ
ทำไมถึงสำคัญ และแก้ปัญหาอะไร
พอจำนวน container เริ่มเยอะ การจัดการด้วยมือจะกลายเป็นภาระ:
- Container ล่มแล้วใครรีสตาร์ต — กลางคืน วันหยุด ไม่มีใครนั่งเฝ้า
- Traffic พุ่งแล้วขยายยังไง — เปิดเครื่องเพิ่มทีละตัวเองไม่ทัน
- เครื่องบางตัวแน่น บางตัวว่าง — ทรัพยากรถูกใช้ไม่เต็มที่ จ่ายเงินเปล่า
- อัปเดตเวอร์ชันใหม่ยังไงให้ผู้ใช้ไม่เจ็บ — หยุดระบบทั้งหมดแล้วเปิดใหม่ยังเสี่ยง
Kubernetes จัดการทั้งหมดนี้จากไฟล์กำหนดค่า (manifest) ชุดเดียว คุณประกาศว่าระบบควรเป็นอย่างไร — ใช้ container image อะไร กี่ตัว ใช้ CPU และหน่วยความจำเท่าไร Kubernetes คอยรักษาสถานะนั้นให้คงอยู่ตลอดเวลา ถ้ามีอะไรเบี่ยงไป ระบบแก้ให้เอง
ผลลัพธ์คือระบบที่กู้ตัวได้เองเมื่อเกิดความผิดปกติ ใช้ทรัพยากรคุ้มค่าขึ้น และทีมมีเวลาไปทำงานพัฒนาแทนการนั่งจัดการ server
ความสามารถหลักที่ใช้บ่อย
Self-healing — ถ้า container ล่ม Kubernetes รีสตาร์ตให้เอง ถ้า node ทั้งเครื่องดับ container ที่เคยรันอยู่จะถูกย้ายไป node อื่นที่ยังใช้ได้
Auto-scaling — เพิ่มหรือลดจำนวน container ตาม load จริง รองรับ traffic ที่ขึ้นลง โดยไม่ต้องกันทรัพยากรสำรองไว้ตลอดเวลา
Deployment และ rolling update — สั่งปล่อยเวอร์ชันใหม่แล้วระบบค่อยๆ เปลี่ยนทีละส่วน ผู้ใช้ไม่เจอ downtime เวอร์ชันใหม่มีปัญหาก็ rollback กลับไปเวอร์ชันเดิมได้ทันที
Service discovery และ load balancing — container หากันเจอผ่านชื่อ DNS ภายใน cluster และ request ถูกกระจายไปตาม container ที่พร้อมใช้งานโดยอัตโนมัติ
Resource management — กำหนดค่า CPU และ memory ขั้นต่ำ-สูงสุดให้แต่ละ workload ระบบจัดลำดับการวาง container บน node ให้เหมาะสม
Monitoring และ logging — สถานะของทุก workload ทั้ง health check และ log พร้อมดูผ่านเครื่องมือมาตรฐาน เช่น Prometheus และ Grafana
ใช้จริงเมื่อไหร่
เว็บแอปที่กำลังจะเปิดตัว — ทีมไม่ต้องเดาว่าผู้ใช้จะเข้ามากี่คน ตั้ง auto-scaling ไว้ ระบบขยายตาม traffic จริง และถ้า instance ไหนตาย ระบบเปิดตัวใหม่ให้เองระหว่างที่ทีมยังไม่ทันรู้ตัว
ทีมที่ทำ CI/CD ต่อเนื่อง — pipeline build และ test เสร็จก็ deploy ต่อได้เลยด้วย manifest เดียวกันทุก environment ระบบแยกเวอร์ชันใหม่ออกจากเดิมชัดเจน ทำให้ release ได้บ่อยขึ้น
ระบบที่แตกเป็นหลาย microservices — แต่ละ service รันแยกอิสระ สเกลต่างกันได้ตาม load ของมันเอง และคุยกันผ่าน service discovery ของ Kubernetes พอ service หนึ่งล่ม ระบบกู้ให้เองโดยส่วนอื่นยังทำงานต่อ
สังเกตว่าทั้งสามกรณีไม่ได้ต่างกันที่เทคโนโลยี แต่ต่างที่ปัญหาที่ทีมต้องการปล่อยมือ — Kubernetes จัดการเรื่องนั้นให้อัตโนมัติ
สรุป
Kubernetes ทำให้การรัน container จำนวนมากกลายเป็นงานที่คาดเดาได้ ระบบกู้ตัวเองเมื่อเกิดความผิดพลาด ขยายตาม load จริง ปล่อยเวอร์ชันใหม่โดยไม่มี downtime และจัดสรรทรัพยากรอย่างชัดเจนด้วยไฟล์กำหนดค่าที่ตรวจสอบและเก็บเป็นประวัติได้
Zotect ให้คำปรึกษาและวางระบบ Kubernetes รวมถึง container orchestration ตั้งแต่ออกแบบ cluster ให้เหมาะกับ workload จนถึงวางระบบ monitoring หลัง deploy — ดูรายละเอียดที่หน้า Modern Infrastructure หรือ ติดต่อทีมงาน
