โวลุมถาวรและคำขอใช้โวลุม
ทำความเข้าใจวิธีจัดเตรียมพื้นที่จัดเก็บถาวรให้ Pod โดยใช้ Persistent Volumes และ Persistent Volume Claims
โวลุมถาวรและคำขอใช้โวลุม เป็นบทเรียน Kubernetes Basics ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kubernetes Basics และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 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 จะถูกสร้างและสิ้นสุดลง จึงมอบความน่าเชื่อถือให้กับแอปพลิเคชันที่มีสถานะ
เรียนรู้ Kubernetes Basics ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “โวลุมถาวรและคำขอใช้โวลุม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โวลุมถาวรและคำขอใช้โวลุม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kubernetes Basics ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โวลุมถาวรและคำขอใช้โวลุม”
ทำความเข้าใจวิธีจัดเตรียมพื้นที่จัดเก็บถาวรให้ Pod โดยใช้ Persistent Volumes และ Persistent Volume Claims คุณปฏิบัติ Kubernetes Basics ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kubernetes Basics หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kubernetes Basics บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “โวลุมถาวรและคำขอใช้โวลุม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kubernetes Basics นี้ได้ไหม
ได้ บทเรียน Kubernetes Basics ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ConfigMaps สำหรับการกำหนดค่า
- Secrets สำหรับข้อมูลละเอียดอ่อน
- โวลุมถาวรและคำขอใช้โวลุม
- StorageClasses และการจัดสรรแบบพลวัต