Kubernetes คืออะไร?
Kubernetes คือ Platform Open Source ที่ช่วยบริหารจัดการคอนเทนเนอร์ (container) ให้ทำงานอัตโนมัติ (automation) โดยหลัก ๆ แล้ว Kubernetes (K8s) จะช่วยให้เราสามารถนำแอปพลิเคชันที่พัฒนาไปติดตั้ง หรือนำไปใช้งานได้อย่างมีประสิทธิภาพ ทั้งในเรื่องของการขยายขนาด อัพเกรดเวอร์ชันของระบบ เป็นต้น
สมมติว่าคุณเป็นบริษัทเดินเรือขนส่งสินค้าหลาย ๆ ลำที่ต้องขนส่งไปตามท่าเรือต่าง ๆ ในการจัดการเรือแต่ละลำด้วยตัวเองอาจเป็นเรื่องที่ยุ่งยากและผิดพลาดได้ง่าย แต่ถ้าคุณมีศูนย์ควบคุมอัตโนมัติที่คอยจัดการเส้นทาง จัดการการเทียบท่า และตรวจสอบสถานะของเรือทุกลำตลอดเวลา การทำงานก็จะง่ายขึ้นและเป็นระเบียบมากขึ้น
ในโลกของ Kubernetes ก็เปรียบเสมือนศูนย์ควบคุมที่เข้ามาทำหน้าที่จัดการคอนเทนเนอร์ (Container) ให้ทำงานร่วมกันอย่างมีประสิทธิภาพ
Container
คือหน่วยพื้นฐานที่สุดที่ใช้สำหรับรันแอปพลิเคชันของคุณ ซึ่งในกระบวนการพัฒนาระบบเราจะบรรจุโค้ด และทุกอย่างที่จำเป็นไว้ด้วยกัน
Contianer เปรียบเสมือนตู้สินค้าที่บรรจุสินค้า และพร้อมที่จะนำส่งไปยังลูกค้า ภายในตู้สินค้าอาจจะประกอบด้วยสินค้าหลากหลายชิ้นที่จำเป็น
Pod
คือหน่วยที่เล็กที่สุดในโลกของ Kubernetes ที่สามารถนำไปใช้งานได้โดย Pod จะประกอบไปด้วยหนึ่งหรือหลาย ๆ Container ที่ใช้ทรัพยากรร่วมกัน เช่น เครือข่าย (Network) และพื้นที่เก็บข้อมูล (Storage) ถ้าหากเรามีแอปพลิเคชันหลักและแอพพลิเคชันเสริมที่ต้องการทำงานร่วมกัน หรือใช้พื้นที่เก็บข้อมูลร่วมกัน เราจะนิยมใส่ไว้ใน Pod เดียวกัน
Pod เปรียบเสมือนเรือบรรทุกสินค้า และพร้อมที่จะนำส่งไปยังลูกค้า ภายในเรือบรรทุกสินค้า เราก็อาจจะอยากบรรทุกสินค้าที่ลูกค้าต้องการไปด้วยเรือลำเดียวกัน เพื่อให้สินค้าส่งถึงผู้รับได้อย่างรวดเร็วมากที่สุด
ReplicaSet
คือหน่วยที่รับผิดชอบในการรักษาสถานะของ Pod ให้มีจำนวนพร้อมใช้งานอยู่เสมอ หาก Pod ไหนล่มไป ReplicaSet จะสร้าง Pod ใหม่ขึ้นมาแทนให้ทันที
ReplicaSet เปรียบเสมือนบริษัทขนส่งสินค้าที่จะดูแล บำรุงรักษาเรือบรรทุกสินค้าให้มีจำนวนพร้อมใช้งานอยู่ตลอดเวลา หากเรือลำไหนล่มไป บริษัทก็จะดำเนินการส่งเรือลำใหม่มาแทนทันที เพื่อให้แน่ใจว่าการขนส่งจะไม่หยุดชะงัก
Deployment
คือหน่วยที่ทำหน้าที่รับผิดชอบ ReplicaSet อีกที ทำให้คุณสามารถอัปเดตแอปพลิเคชัน หรือย้อนกลับ เพิ่ม ลด จำนวนของ Pod ได้อย่างง่ายดาย ในการใช้งาน Deployment จะทำให้เราไม่ต้องคอยจัดการ ReplicaSet โดยตรง
Deployment เปรียบเสมือนผู้จัดการบริษัทขนส่งที่คอยจัดการการทำงานทั้งหมด จัดเตรียมเรือให้เพียงพอต่อความต้องการ ควบคุมการอัปเดตเรือรุ่นใหม่ เพื่อให้การขนส่งเป็นไปอย่างราบรื่นและมีประสิทธิภาพสูงสุด