ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~15 นาที

PersistentVolume, PVC และ StorageClass

ขอที่เก็บถาวรแบบไม่ต้องรู้ว่าดิสก์จริงอยู่ที่ไหน

เปรียบเทียบให้เห็นภาพ

เทียบกับการเช่าโกดัง: PVC (PersistentVolumeClaim) = "ใบขอ" ที่บอกว่าอยากได้พื้นที่ 10GB แบบเขียน-อ่านได้ · PV (PersistentVolume) = โกดังจริงที่ถูกจัดให้ · StorageClass = ผู้ให้เช่าที่สร้างโกดังใหม่ให้อัตโนมัติเมื่อมีใบขอ

นักพัฒนาขอผ่าน PVC · StorageClass สร้างดิสก์จริงให้

Podmount /data
อ้าง
PVCขอ 10Gi RWO
ตาม class
StorageClassgp3
สร้าง
PV (EBS)ดิสก์จริง

นักพัฒนาไม่ต้องรู้ว่าเบื้องหลังเป็น EBS/NFS — แค่เขียน PVC

Pod → PVC (ใบขอ) → StorageClass สร้าง PV (ดิสก์จริง เช่น EBS) ให้อัตโนมัติ

แนวคิดคือแยก"คนใช้" ออกจาก "คนจัดหา" — นักพัฒนาแค่เขียน PVC บอกความต้องการ ไม่ต้องรู้ว่าเบื้องหลังเป็น AWS EBS, NFS หรืออะไร · StorageClass ทำ dynamic provisioning สร้าง PV ให้เองเมื่อมี PVC เข้ามา

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data
spec:
  accessModes: ["ReadWriteOnce"]   # เขียนได้จาก node เดียว
  resources:
    requests:
      storage: 10Gi
  storageClassName: gp3            # ชื่อ StorageClass (เช่น AWS gp3)
pvc.yaml — ขอพื้นที่ 10Gi

สรุป Key Takeaways

  • PVC = ใบขอที่เก็บ (นักพัฒนาเขียน) · PV = ดิสก์จริง · StorageClass = สร้าง PV ให้อัตโนมัติ
  • แยกคนใช้ออกจากคนจัดหา — ไม่ต้องรู้ว่าเบื้องหลังเป็น EBS/NFS
  • RWO = node เดียวเขียน (block) · RWX = หลาย node เขียน (file/NFS/EFS)
  • reclaimPolicy Retain ปกป้องข้อมูลสำคัญตอนลบ PVC
อ่านจบแล้วอย่าลืมทำเครื่องหมาย