0Pricing
DevOps Bootcamp · บทเรียน

โวลุมถาวรและคำขอใช้โวลุม

ทำความเข้าใจวิธีจัดเตรียมพื้นที่จัดเก็บถาวรให้ Pod โดยใช้ Persistent Volumes และ Persistent Volume Claims

โวลุมถาวรและคำขอใช้โวลุม เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

Pod และข้อมูลชั่วคราว

Pod เกิดขึ้นและสิ้นสุดลง แต่ข้อมูลของแอปพลิเคชันมักต้องคงอยู่ต่อไป ลองนึกถึงฐานข้อมูลหรือไฟล์ที่ผู้ใช้อัปโหลด

  • เมื่อ Pod เริ่มต้นใหม่หรือถูกจัดตารางใหม่ ข้อมูลที่จัดเก็บไว้โดยตรงในระบบไฟล์ของคอนเทนเนอร์จะสูญหาย
  • ลักษณะชั่วคราวนี้เหมาะสำหรับแอปพลิเคชันแบบไม่มีสถานะ แต่ข้อมูลสำคัญต้องใช้โซลูชันที่คงทน
  • Kubernetes มีระบบที่ทรงพลังสำหรับจัดการพื้นที่จัดเก็บถาวร ซึ่งคงอยู่ตลอดวงจรชีวิตของ Pod

PersistentVolume: พื้นที่จัดเก็บของคลัสเตอร์

PersistentVolume (PV) คือพื้นที่จัดเก็บส่วนหนึ่งในคลัสเตอร์ Kubernetes ของคุณ

  • เป็นทรัพยากรที่มีขอบเขตระดับคลัสเตอร์ หมายความว่าไม่ได้เป็นของเนมสเปซใดโดยเฉพาะ
  • PVs จัดเตรียมโดยผู้ดูแลระบบหรือจัดเตรียมแบบไดนามิกโดย StorageClass
  • สิ่งเหล่านี้ซ่อนรายละเอียดของเทคโนโลยีพื้นที่จัดเก็บเบื้องหลัง (เช่น Google Persistent Disk, AWS EBS และพื้นที่ใช้ร่วมกันของ NFS)

การกำหนด PersistentVolume

PVs กำหนดด้วยรายละเอียดต่าง ๆ เช่น ความจุ โหมดการเข้าถึง และประเภทพื้นที่จัดเก็บ YAML นี้อธิบาย PV ที่ใช้ hostPath (สำหรับการทดสอบในเครื่อง) โดยมีพื้นที่จัดเก็บ 5 กิกะไบต์

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-local-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/mnt/data"

หมายเหตุ: โดยทั่วไป hostPath ใช้สำหรับการพัฒนาบนโหนดเดียว และไม่แนะนำให้ใช้ในสภาพแวดล้อมจริง

PersistentVolumeClaim: คำขอของ Pod

PersistentVolumeClaim (PVC) คือคำขอพื้นที่จัดเก็บจากผู้ใช้หรือแอปพลิเคชันภายในเนมสเปซที่กำหนด

  • Pod ไม่ได้ใช้ PV โดยตรง แต่จะขอพื้นที่จัดเก็บผ่าน PVC
  • PVC มีขอบเขตระดับเนมสเปซ จึงอยู่ภายในพื้นที่ของโครงการหรือทีมใดทีมหนึ่ง
  • PVC ระบุขนาดที่ต้องการ โหมดการเข้าถึง และคลาสพื้นที่จัดเก็บ (หากต้องการ)

PV และ PVC: ผู้จับคู่

Kubernetes จะจับคู่ PVC กับ PV ที่พร้อมใช้งานโดยอัตโนมัติผ่านกระบวนการที่เรียกว่า การผูก

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

โหมดการเข้าถึงสำหรับ PVs/PVCs

โหมดการเข้าถึงกำหนดวิธีเมานต์และใช้งานพื้นที่จัดเก็บโดย Pod โหมดเหล่านี้เป็นสิ่งที่ PVC ร้องขอและ PV รองรับ:

  • ReadWriteOnce (RWO): วอลุ่มสามารถเมานต์แบบอ่าน-เขียนได้โดยโหนดเดียว
  • ReadOnlyMany (ROX): วอลุ่มสามารถเมานต์แบบอ่านอย่างเดียวได้โดยหลายโหนด
  • ReadWriteMany (RWX): วอลุ่มสามารถเมานต์แบบอ่าน-เขียนได้โดยหลายโหนด

ความพร้อมใช้งานของโหมดเหล่านี้ขึ้นอยู่กับผู้ให้บริการพื้นที่จัดเก็บแต่ละราย

คลาสพื้นที่จัดเก็บสำหรับการทำงานอัตโนมัติ

Storage Classes เป็นวิธีที่ช่วยให้ผู้ดูแลระบบอธิบาย "คลาส" ของพื้นที่จัดเก็บ (เช่น "fast-ssd" และ "slow-hdd")

  • แทนที่จะสร้าง PV ด้วยตนเอง StorageClass สามารถจัดเตรียม PV แบบไดนามิกเมื่อมี PVC ร้องขอ
  • วิธีนี้ทำให้การสร้าง PV ตามแม่แบบที่กำหนดไว้ล่วงหน้าเป็นไปโดยอัตโนมัติ
  • เป็นการแยกการจัดเตรียมพื้นที่จัดเก็บออกจากการใช้งาน ทำให้ผู้ใช้ใช้งานได้ง่ายขึ้น

ตัวอย่างการสร้าง PVC

มาสร้าง PVC ที่ร้องขอพื้นที่จัดเก็บ 1 กิกะไบต์ พร้อมการเข้าถึงแบบ ReadWriteOnce กัน PVC นี้จะค้นหา PV ที่มีอยู่หรือเรียกใช้การจัดเตรียมแบบไดนามิกผ่าน StorageClass

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-app-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard # Optional: if you have a 'standard' StorageClass

บันทึกเป็น pvc.yaml แล้วนำไปใช้ด้วย kubectl apply -f pvc.yaml

การใช้ PVC ใน Pod

เมื่อ PVC ถูกผูกแล้ว Pod สามารถใช้งานได้โดยอ้างอิงชื่อของ PVC ในการกำหนดค่าวอลุ่ม Pod ไม่จำเป็นต้องรู้เกี่ยวกับ PV เบื้องหลัง เพียงรู้จัก PVC ก็พอ

apiVersion: v1
kind: Pod
metadata:
  name: my-data-pod
spec:
  containers:
    - name: data-container
      image: busybox
      command: ["/bin/sh", "-c", "echo 'Hello from CoddyKit!' > /mnt/data/hello.txt && sleep 3600"]
      volumeMounts:
        - name: persistent-storage
          mountPath: /mnt/data
  volumes:
    - name: persistent-storage
      persistentVolumeClaim:
        claimName: my-app-pvc

Pod นี้จะเขียนไฟล์ลงในวอลุ่มถาวรที่เมานต์ไว้

การตรวจสอบ PVs และ PVCs

คุณสามารถตรวจสอบสถานะของทรัพยากรพื้นที่จัดเก็บถาวรได้โดยใช้ kubectl:

  • ดู PVs ทั้งหมด: kubectl get pv
  • ดู PVCs ทั้งหมดในเนมสเปซของคุณ: kubectl get pvc
  • ดูข้อมูลโดยละเอียด รวมถึงสถานะและเหตุการณ์:
    • kubectl describe pv <pv-name>
    • kubectl describe pvc <pvc-name>

ตรวจสอบให้แน่ใจว่า PVs มีสถานะเป็น Bound และ PVCs ถูก Bound กับ PV ที่ถูกต้อง

ทำความเข้าใจความแตกต่างระหว่าง PV กับ PVC

ผู้ใช้ต้องการติดตั้งฐานข้อมูลที่ต้องใช้พื้นที่จัดเก็บถาวรขนาด 50GB ทรัพยากรใดของ Kubernetes ที่แสดงถึง< i>คำขอพื้นที่จัดเก็บนี้จากแอปพลิเคชันของผู้ใช้โดยตรง

สรุปพื้นที่จัดเก็บถาวร

เราได้เรียนรู้วิธีที่ Kubernetes จัดการพื้นที่จัดเก็บที่คงทนสำหรับแอปพลิเคชันของคุณแล้ว:

  • PersistentVolumes (PVs) เป็นทรัพยากรระดับคลัสเตอร์ที่แสดงถึงพื้นที่จัดเก็บจริง
  • PersistentVolumeClaims (PVCs) คือคำขอพื้นที่จัดเก็บจากผู้ใช้
  • Kubernetes ผูก PVCs เข้ากับ PVs ที่เหมาะสมตามข้อกำหนด
  • โหมดการเข้าถึงกำหนดวิธีใช้พื้นที่จัดเก็บ (RWO, ROX, RWX)
  • คลาสพื้นที่จัดเก็บช่วยให้จัดเตรียม PVs แบบไดนามิกและทำให้การตั้งค่าเป็นอัตโนมัติ

ระบบนี้ทำให้ข้อมูลแอปพลิเคชันคงอยู่แม้ Pod จะถูกสร้างและสิ้นสุดลง จึงมอบความน่าเชื่อถือให้กับแอปพลิเคชันที่มีสถานะ

คำถามที่พบบ่อย

บทเรียน “โวลุมถาวรและคำขอใช้โวลุม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โวลุมถาวรและคำขอใช้โวลุม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โวลุมถาวรและคำขอใช้โวลุม”

ทำความเข้าใจวิธีจัดเตรียมพื้นที่จัดเก็บถาวรให้ Pod โดยใช้ Persistent Volumes และ Persistent Volume Claims คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “โวลุมถาวรและคำขอใช้โวลุม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ConfigMaps สำหรับการกำหนดค่า
  2. Secrets สำหรับข้อมูลละเอียดอ่อน
  3. โวลุมถาวรและคำขอใช้โวลุม
  4. StorageClasses และการจัดสรรแบบพลวัต
← กลับไปที่ DevOps Bootcamp