Skip to main content

Kubernetes Volumes

Introduction

Kubernetes Volumes เป็นเครื่องมือที่ใช้ในการจัดการข้อมูลที่ต้องการให้มีการเก็บรักษาใน Pod ที่อยู่ใน Kubernetes ซึ่งช่วยให้ข้อมูลเหล่านี้สามารถอยู่รอดข้ามการรีสตาร์ทหรือการย้าย Pod ไปยังโหนดอื่น ๆ ได้ โดย Kubernetes รองรับหลายประเภทของ Volume ที่สามารถเลือกใช้ตามความต้องการของระบบ

Types of Volumes

  1. emptyDir

    • emptyDir คือ Volume ที่ถูกสร้างขึ้นใหม่เมื่อ Pod ถูกสร้างขึ้น และจะถูกลบเมื่อ Pod หยุดทำงานหรือถูกลบ
    • ใช้ในการเก็บข้อมูลที่ไม่จำเป็นต้องเก็บรักษาระยะยาว
  2. hostPath

    • hostPath ทำให้ Pod สามารถเข้าถึงไฟล์ระบบของโหนดที่โฮสต์ Pod อยู่
    • ใช้เมื่อคุณต้องการให้ Pod เข้าถึงไฟล์หรือข้อมูลในโฮสต์
  3. nfs

    • nfs ใช้การแชร์ไฟล์ระหว่างหลาย Pod ผ่าน NFS Server
    • ใช้ในการทำงานร่วมกันระหว่าง Pod หลายตัวที่ต้องการเข้าถึงข้อมูลเดียวกัน
  4. persistentVolumeClaim (PVC)

    • PVC คือการร้องขอ Volume จาก PersistentVolume (PV) ที่มีการจัดการภายนอก Kubernetes เช่น บริการ Cloud Storage
    • เป็นวิธีการที่มีความยืดหยุ่นและเหมาะสมสำหรับการเก็บข้อมูลระยะยาว
  5. configMap

    • ใช้ในการเก็บข้อมูลที่ไม่ใช่ไฟล์ (เช่น ค่าคอนฟิกต่างๆ) ที่ Pod สามารถเข้าถึงได้
    • ช่วยให้ข้อมูลที่เป็นคอนฟิกสามารถแชร์ระหว่าง Pod ต่างๆ ได้
  6. 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 ที่เหมาะสมจะช่วยให้ระบบทำงานได้มีประสิทธิภาพมากยิ่งขึ้น