ใช้ Local Path Provisioner ช่วยจัดสรรที่จัดเก็บข้อมูลถาวรภายใน Kubernetes Cluster โดยอัตโนมัติ 1


การจัดเก็บข้อมูลถาวรไว้บนโนดใดโนดหนึ่งของ Kubernetes Cluster มีความเสี่ยงที่ข้อมูลจะสูญหายหากโนดที่ใช้เก็บข้อมูลล้มเหลว อย่างไรก็ตาม ในกรณีที่ระบบงานมีความทนทานต่อการสูญหายของข้อมูล เช่น เป็นระบบแบบกระจาย (distributed system) เป็นระบบที่มีคุณสมบัติเกี่ยวกับการทำสำเนาข้อมูล (replication) หรือเป็นระบบทดสอบ อาจจะพิจารณาเลือกใช้วิธีเก็บข้อมูลถาวรไว้บนโนดใดโนดหนึ่ง โดยใช้คุณสมบัติ Local Persistent Volumes ของ Kubernetes ก็ได้

อย่างไรก็ตาม การใช้คุณสมบัติ Local Persistent Volumes มีขั้นตอนที่ค่อนข้างยุ่งยาก ดังนี้

  1. (ทำครั้งเดียว) ผู้ดูแลคลัสเตอร์สร้าง StorageClass สำหรับการจัดเก็บข้อมูลบน local storage
  2. ผู้ดูแลคลัสเตอร์จัดเตรียมที่ว่างและสร้างโฟลเดอร์บนโนดที่จะใช้จัดเก็บข้อมูล เช่น /mnt/data
  3. ผู้ดูแลคลัสเตอร์สร้าง PersistentVolume โดยระบุชื่อโนด และโฟลเดอร์ที่จะใช้จัดเก็บข้อมูล
  4. ผู้ใช้งานสร้าง PersistentVolumeClaim ให้ Pod หรือ Deployment ที่จะใช้ที่จัดเก็บข้อมูล

ซึ่งจะเห็นได้ว่าผู้ดูแลคลัสเตอร์จำเป็นต้องเข้ามามีบทบาททุกครั้งที่มีความต้องการใช้ที่จัดเก็บข้อมูลถาวร อาจจะส่งผลให้เกิดความล่าช้าในกระบวนการติดตั้งระบบได้

จึงเป็นที่มาของการใช้ Local Path Provisioner เพื่อจัดสรรที่จัดเก็บข้อมูลถาวรภายใน Kubernetes Cluster โดยอัตโนมัติ

การติดตั้ง

สามารถติดตั้งได้โดยใช้คำสั่งด้านล่าง ทั้งนี้ ควรเปลี่ยนหมายเลขรุ่น (v0.0.24) ให้เป็นรุ่นปัจจุบัน โดยสามารถดูหมายเลขรุ่นล่าสุดได้จาก หน้า release ของ Local Path Provisioner

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml

เมื่อติดตั้งเสร็จแล้ว สามารถดูได้โดยใช้คำสั่ง kubectl -n local-path-storage get pod ตามตัวอย่างด้านล่าง

$ kubectl -n local-path-storage get pod
NAME                                     READY     STATUS    RESTARTS   AGE
local-path-provisioner-d744ccf98-xfcbk   1/1       Running   0          7m

การใช้งาน

เมื่อติดตั้งเสร็จแล้ว ผู้ใช้สามารถสร้าง PersistentVolumeClaim โดยระบุ spec.storageClassName ให้เป็น local-path ตามตัวอย่างไฟล์ pvc.yaml ด้านล่าง

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-path-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 128Mi

เมื่อใช้คำสั่ง kubectl create -f pvc.yaml แล้วรอสักพัก จะพบว่า PersistentVolume จะถูกสร้างขึ้นมาโดยอัตโนมัติ โดยที่ผู้ดูแลคลัสเตอร์ไม่ต้องเข้ามามีส่วนร่วม

$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                    STORAGECLASS   REASON    AGE
pvc-bc3117d9-c6d3-11e8-b36d-7a42907dda78   2Gi        RWO            Delete           Bound     default/local-path-pvc   local-path               4s

ทั้งนี้ ผู้ดูแลคลัสเตอร์สามารถใช้คำสั่ง kubectl -n local-path-storage logs -f -l app=local-path-provisioner เพื่อดูประวัติการสร้าง PersistentVolume ได้


แสดงความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

หนึ่งความคิดเห็นบน “ใช้ Local Path Provisioner ช่วยจัดสรรที่จัดเก็บข้อมูลถาวรภายใน Kubernetes Cluster โดยอัตโนมัติ