จัดการข้อมูลใน Kubernetes

การเก็บข้อมูลใน Kubernetes มีทั้งแบบ ชั่วคราว (Ephemeral) ที่มีอายุตาม Pod และแบบ ถาวร (Persistent) ที่ใช้ Persistent Volumes (PV) และ Persistent Volume Claims (PVC) เพื่อแยกข้อมูลออกจากวงจรชีวิต Pod นอกจากนี้ Kubernetes ยังรองรับการจัดเก็บข้อมูลหลากหลายประเภท ทั้งแบบไฟล์ บล็อก และอ็อบเจ็กต์จากคลาวด์ หรือฮาร์ดแวร์ภายใน โดยใช้ StorageClass ในการกำหนดคุณสมบัติของพื้นที่จัดเก็บข้อมูลแบบไดนามิก และใช้ Volumes ต่างๆ เช่น emptyDir หรือ Secrets เพื่อจัดการข้อมูลภายใน Pod

พื้นที่เก็บข้อมูล

พื้นที่เก็บข้อมูลจริง ๆ ที่แอปพลิเคชันใช้ ซึ่งโดยธรรมชาติแล้ว Container จะมีข้อมูลที่ไม่ถาวร หมายถึงหาก Container ถูกลบ ข้อมูลก็จะหายไปด้วย Kubernetes จึงมีกลไกในการจัดการพื้นที่เก็บข้อมูลที่ถาวร (Persistent Storage) เพื่อให้ข้อมูลไม่หายไปแม้ Container จะถูกสร้างใหม่หรือย้ายไปรันที่อื่นก็ตาม

PersistentVolume (PV)

คือ พื้นที่เก็บข้อมูลจริง ๆ ที่ผู้ดูแลระบบ (Administrator) ได้จัดเตรียมไว้ให้สำหรับคลัสเตอร์ Kubernetes เปรียบเสมือนเป็น "ฮาร์ดดิสก์เปล่า" ที่พร้อมให้ใช้งาน ซึ่งจะมีการระบุขนาด, ประเภท (เช่น NFS, iSCSI, หรือพื้นที่บน Cloud), และวิธีการเข้าถึง

คุณสมบัติหลัก

  • เป็นทรัพยากรระดับคลัสเตอร์ (Cluster-scoped resource)
  • ถูกสร้างและจัดการโดยผู้ดูแลระบบ
  • เป็นแหล่งเก็บข้อมูลที่ Container สามารถนำไปใช้ได้

PersistentVolumeClaim (PVC)

คือ "คำขอ" หรือ "การร้องขอ" เพื่อขอใช้พื้นที่เก็บข้อมูลจาก PV เปรียบเสมือน "ผู้ใช้งานที่ต้องการจองพื้นที่" บนฮาร์ดดิสก์ โดยผู้ใช้จะระบุว่าต้องการพื้นที่ขนาดเท่าไหร่และมีวิธีการเข้าถึงอย่างไร ซึ่ง Kubernetes จะทำหน้าที่ค้นหา PV ที่มีคุณสมบัติตรงกับคำขอและจับคู่ (bind) ให้โดยอัตโนมัติ

คุณสมบัติหลัก:

  • เป็นทรัพยากรระดับ Namespace (Namespace-scoped resource)
  • ถูกสร้างและจัดการโดยผู้ใช้งานหรือนักพัฒนา
  • ใช้เพื่อเชื่อมโยง Container กับ PV ที่เหมาะสม