Kubernetes Volumes
Introduction
Kubernetes Volumes เป็นเครื่องมือที่ใช้ในการจัดการข้อมูลที่ต้องการให้มีการเก็บรักษาใน Pod ที่อยู่ใน Kubernetes ซึ่งช่วยให้ข้อมูลเหล่านี้สามารถอยู่รอดข้ามการรีสตาร์ทหรือการย้าย Pod ไปยังโหนดอื่น ๆ ได้ โดย Kubernetes รองรับหลายประเภทของ Volume ที่สามารถเลือกใช้ตามความต้องการของระบบ
Types of Volumes
-
emptyDir
emptyDirคือ Volume ที่ถูกสร้างขึ้นใหม่เมื่อ Pod ถูกสร้างขึ้น และจะถูกลบเมื่อ Pod หยุดทำงานหรือถูกลบ- ใช้ในการเก็บข้อมูลที่ไม่จำเป็นต้องเก็บรักษาระยะยาว
-
hostPath
hostPathทำให้ Pod สามารถเข้าถึงไฟล์ระบบของโหนดที่โฮสต์ Pod อยู่- ใช้เมื่อคุณต้องการให้ Pod เข้าถึงไฟล์หรือข้อมูลในโฮสต์
-
nfs
nfsใช้การแชร์ไฟล์ระหว่างหลาย Pod ผ่าน NFS Server- ใช้ในการทำงานร่วมกันระหว่าง Pod หลายตัวที่ต้องการเข้าถึงข้อมูลเดียวกัน
-
persistentVolumeClaim (PVC)
- PVC คือการร้องขอ Volume จาก
PersistentVolume(PV) ที่มีการจัดการภายนอก Kubernetes เช่น บริการ Cloud Storage - เป็นวิธีการที่มีความยืดหยุ่นและเหมาะสมสำหรับการเก็บข้อมูลระยะยาว
- PVC คือการร้องขอ Volume จาก
-
configMap
- ใช้ในการเก็บข้อมูลที่ไม่ใช่ไฟล์ (เช่น ค่าคอนฟิกต่างๆ) ที่ Pod สามารถเข้าถึงได้
- ช่วยให้ข้อมูลที่เป็นคอนฟิกสามารถแชร์ระหว่าง Pod ต่างๆ ได้
-
secret
- ใช้สำหรับเก็บข้อมูลที่เป็นความลับ เช่น รหัสผ่านหรือ API keys
- ข้อมูลใน
Secretจะถูกเข้ารหัสและสามารถเข้าถึงได้เฉพาะโดย Pod ที่ต้องการ
Using Volumes in Pods
ตัวอย่างการใช้ volume ภายใน Pod คือการแสดงในไฟล์ YAML ของ Kubernetes
apiVersion: v1
kind: Pod
metadata:
name: volume-example
spec:
containers:
- name: myapp
image: myapp-image
volumeMounts:
- mountPath: /data
name: my-volume
volumes:
- name: my-volume
emptyDir: {}
ในตัวอย่างนี้ volumeMounts คือการเชื่อมต่อ Volume กับ Path ภายในคอนเทนเนอร์ และ volumes เป็นการกำหนดประเภทของ Volume ที่จะใช้
Persistent Storage
ใน Kubernetes การเก็บข้อมูลระยะยาวจะใช้ Persistent Volumes (PV) และ Persistent Volume Claims (PVC) เพื่อจัดการข้อมูลที่ไม่สามารถลบหายไปเมื่อ Pod หยุดทำงาน
Example of PVC with PV
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
ตัวอย่างนี้เป็นการร้องขอ Persistent Volume ที่มีขนาด 1Gi
Conclusion
Kubernetes Volumes เป็นเครื่องมือสำคัญในการจัดการข้อมูลของแอปพลิเคชันใน Kubernetes โดยช่วยให้ข้อมูลสามารถอยู่รอดข้ามการรีสตาร์ท Pod หรือการย้ายโหนดต่าง ๆ ได้ การเลือกประเภท Volume ที่เหมาะสมจะช่วยให้ระบบทำงานได้มีประสิทธิภาพมากยิ่งขึ้น