จำกัดขนาดของ PersistentVolumeClaim ไม่ให้เกินกว่าที่กำหนด

Damrongsak Reetanon
2 min readJan 22, 2021

--

มีคำถามหนึ่งที่น่าสนใจ “เราสามารถจำกัดขนาดของ PersistentVolumeClaim ไม่ให้เกินกว่าที่กำหนดได้ไหม” ในบางสถานะการณ์ในฐานะ Kubernetes Administrator ก็ต้องการกำหนดให้ผู้ใช้ใน Kubernetes Cluster ไม่ให้ร้องขอ storage ขนาดใหญ่เกินความจำเป็นมาใช้งาน

คำตอบคือ สามารถทำได้โดยใช้ Kubernetes Object ที่ชื่อว่า LimitRange จำกัดขนาดของ PersistentVolumeClaim ได้ เช่นถ้าต้องการให้ผู้ใช้สร้าง PersistentVolumeClaim ได้ไม่เกิน 2 GB

]# cat > max-pvc.yaml <<EOF
apiVersion: v1
kind: LimitRange
metadata:
name: max-pvc
spec:
limits:
- type: PersistentVolumeClaim
max:
storage: 2Gi
EOF
]# kubectl apply -f max-pvc.yaml
limitrange/max-pvc created
]# kubectl get limitranges
NAME CREATED AT
max-pvc 2021-01-22T19:24:59Z

สร้าง PersistentVolume ขนาด 1GB, 2GB, 5GB และ 10GB เพื่อทดสอบการสร้าง PersistentVolumeClaim

]# kubectl get persistentvolumes
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
data0 1Gi RWO Retain Available slow 14s
data1 1Gi RWO Retain Available slow 14s
data2 2Gi RWO Retain Available slow 14s
data3 2Gi RWO Retain Available slow 14s
data4 5Gi RWO Retain Available slow 14s
data5 5Gi RWO Retain Available slow 14s
data6 10Gi RWO Retain Available slow 14s
data7 10Gi RWO Retain Available slow 14s

ทดสอบสร้าง PersistentVolumeClaim ที่มีการร้องของ PersistenVolume ขนาด 2GB พบว่า สามารถสร้างได้ตามปกติ

]# kubectl get persistentvolumeclaims
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-2g Bound data2 2Gi RWO slow 11s

ทดสอบสร้าง PersistentVolumeClaim ที่มีการร้องของ PersistenVolume ขนาด 5GB พบว่า ไม่สามารถสร้างได้

]# kubectl apply -f pvc5G.yaml 
Error from server (Forbidden): error when creating "pvc5G.yaml": persistentvolumeclaims "pvc-5g" is forbidden: maximum storage usage per PersistentVolumeClaim is 2Gi, but request is 5Gi

#มูลค่าความสุข

--

--

Damrongsak Reetanon
Damrongsak Reetanon

Written by Damrongsak Reetanon

OpenSource |Cloud Computing|Automation|DevOps

No responses yet