การจัดเก็บข้อมูลแบบถาวรบน Kubernetes Cluster ในองค์กร


Kubernetes รุ่นแรก ๆ เป็นแพลตฟอร์มการจัดการคอนเทนเนอร์ที่ออกแบบมาเพื่อรองรับแอปพลิเคชันที่ไม่มีสถานะ (stateless applications) ซึ่งไม่จำเป็นต้องจัดเก็บข้อมูลถาวร แต่ในทางปฏิบัติ มีแอปพลิเคชันจำนวนมากที่ต้องจัดเก็บข้อมูลถาวร เช่น ฐานข้อมูล เซิร์ฟเวอร์จัดเก็บไฟล์ ฯลฯ โดยผู้พัฒนา Kubernetes ก็เล็งเห็นถึงปัญหานี้ จึงได้เพิ่มคุณสมบัติสำหรับจัดการข้อมูลแบบถาวร เช่น Persistent Volumes (PVs), Persistent Volume Claims (PVCs), StatefulSet, ฯลฯ เข้ามาเพื่อให้การจัดการเกี่ยวกับการจัดเก็บข้อมูลแบบถาวรบน Kubernetes Cluster มีความยืดหยุ่นและใช้งานได้สะดวกขึ้น

Kubernetes Cluster บนบริการคลาวด์ (on-cloud) มักจะมีบริการที่จัดเก็บข้อมูลแบบถาวรให้อยู่แล้ว โดยผู้ใช้บริการสามารถระบุชนิดของที่จัดเก็บข้อมูลที่ต้องการได้ในขณะที่สร้าง PersistentVolumeClaim แต่สำหรับ Kubernetes Cluster ในองค์กร (on-premise) ผู้ดูแลคลัสเตอร์จะต้องจัดการที่จัดเก็บข้อมูลแบบถาวรด้วยตนเอง หรือติดตั้งซอฟต์แวร์สำหรับช่วยจัดการ โดยวิธีการที่พบเห็นได้ทั่วไปได้แก่

  1. จัดการที่จัดเก็บข้อมูลแบบถาวรด้วยตนเอง
  2. ใช้ซอฟต์แวร์ประเภท Provisioner
  3. ติดตั้งระบบจัดเก็บข้อมูลแบบกระจาย (distributed storage system) ในคลัสเตอร์

จัดการที่จัดเก็บข้อมูลแบบถาวรด้วยตนเอง

สำหรับวิธีนี้ ทุกครั้งที่มีการสร้าง PersistentVolumeClaim ในภายใน Kubernetes Cluster ผู้ดูแลคลัสเดตอร์จะต้องเป็นผู้จัดหาที่จัดเก็บข้อมูล และสร้าง PersistentVolume สำหรับที่จัดเก็บข้อมูลที่จัดเตรียมไว้ โดยอาจจะจัดหาที่จัดเก็บข้อมูลในโนดใดโนดหนึ่งของคลัสเตอร์ (local path) หรืออุปกรณ์จัดเก็บข้อมูลภายนอกผ่านโพรโทคอล NFS/iSCSI ตามความเหมาะสม

ใช้ซอฟต์แวร์ประเภท Provisioner

วิธีนี้เกิดจากการนำแนวคิด dynamic volume provisioning มาประยุกต์ใช้งาน โดยให้มี Pod หนึ่งในคลัสเตอร์ที่ทำหน้าที่ตรวจจับการสร้าง PersistentVolumeClaim ในคลัสเตอร์ หากตรวจพบว่าตรงตามเงื่อนไข จึงสร้าง PersistentVolume ให้โดยอัตโนมัติ ทำให้ผู้ดูแลคลัสเตอร์ไม่ต้องดำเนินการด้วยตนเอง ตัวอย่างซอฟต์แวร์ประเภท Provisioner ได้แก่

  • Local Path Provisioner จัดหาที่จัดเก็บข้อมูลในโนดใดโนดหนึ่งของคลัสเตอร์ (local path) โดยอัตโนมัติ
  • Kubernetes NFS Subdir External Provisioner จัดหาที่จัดเก็บข้อมูลใน NFS Server ภายนอก โดยจะสร้างโฟลเดอร์ย่อยขึ้นมาสำหรับจัดเก็บข้อมูลสำหรับแต่ละ PersistentVolumeClaim โดยอัตโนมัติ

ติดตั้งระบบจัดเก็บข้อมูลแบบกระจายในคลัสเตอร์

การติดตั้งระบบจัดเก็บข้อมูลแบบกระจาย (distributed storage system) ในคลัสเตอร์ ทำให้สามารถใช้ที่จัดเก็บข้อมูลของโนดภายในคลัสเตอร์ได้ โดยข้อมูลจะมีความทนทานกว่าการจัดเก็บข้อมูลในโนดใดโนดหนึ่ง เนื่องจากข้อมูลถูกกระจายอยู่ในหลายโนด อย่างไรก็ตาม ระบบจัดเก็บข้อมูลแบบกระจายในคลัสเตอร์มีความซับซ้อนสูง จึงควรวิเคราะห์ผลดีผลเสีย และวางแผนให้รอบคอบก่อนที่จะพิจารณาใช้งาน

ปัจจุบันมีระบบจัดเก็บข้อมูลแบบกระจายที่พัฒนามาสำหรับติดตั้งบน Kubernetes Cluster ซึ่งแต่ละระบบก็มีข้อดีและข้อจำกัดแตกต่างกันออกไป ตัวอย่างระบบจัดเก็บข้อมูลแบบกระจายที่สามารถทำงานบน Kubernetes Cluster ได้ เช่น

แสดงความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *