Manage volume
under construction
The English version of this document is under construction and will be available soon.
本文提供虛擬 K8s 服務的進階使用範例,包含 Volume 的建立/掛載/刪除以及 Service type 為 LoadBalancer 的相關使用說明。
Volume 管理
檢視 Volume
- 檢查系統可使用的 storage class
kubectl get storageclass
- 可以看到系統目前提供了 vds-hdd-sg 及 vds-ssd-sg storage class 使用
建立/掛載 Volume
以下範例將使用 storage class vds-hdd-sg 建立 PVC,建立 PVC 時會自動建立一個 PV,Kubernetes 會將新的 PV 繫結到該 PVC,讓其可以使用。
Step 1. 建立 PVC
- 編輯
pvc-hdd.yaml
(若想要 ssd 儲存,就用將 hdd 改為 ssd : pvc-ssd.yaml)
vi pvc-hdd.yaml
- 寫入
pvc-hdd.yaml
內容:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csi-pvc-cinder-hdd # csi-pvc-cinder-ssd
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: vds-hdd-sg
- 將此配置套用 kubernetes
kubectl apply -f pvc-hdd.yaml
- 查看 PVC 與 PV,可以看到已經建立 PVC,狀態為 Pending,且尚未建立 PV
kubectl get pvc
kubectl get pv
Step 2. 建立 Pod,並且綁定 PVC
- 編輯
nginx.yaml
,建立 Nginx Pod 並且建立綁定
vi nginx.yaml
- 寫入
nginx.yaml
內容:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/www/html
name: csi-data-cinderplugin
volumes:
- name: csi-data-cinderplugin
persistentVolumeClaim:
claimName: csi-pvc-cinder-hdd
readOnly: false
- 將
nginx.yaml
配置套用到 K8s cluster
kubectl create -f nginx.yaml
- 確認 PVC 狀態。可以看到 PVC 已經配置,且狀態為 Bound
kubectl get pvc
- 確認 PV 狀態。可以看到 Pod 已啟動,狀態為 running
kubectl get pod
- 檢視 Pod 狀態,可以看到 Event 中有掛載 PVC 的訊息
kubectl describe pod nginx
- 使用 df 指令檢視儲存空間使用狀況
kubectl exec -it nginx -- df -h | grep /var/lib/www/html
- 連入 Pod 檢視 Volume 掛載資訊
kubectl exec -it nginx bash
mount | grep vdb
- 可使用以下指令確認可在檔案系統進行讀寫
kubectl exec -it nginx bash
Step 3. 刪除 Pod、PVC
- 測試完畢,將 Pod 刪除
kubectl delete -f nginx.yaml
- 可以看到 PVC、PV 仍然存在
kubectl get pvc
kubectl get pv
- 需要再將 PVC 刪除,PV 才會被刪除
kubectl delete -f pvc-hdd.yaml
調整 Volume size
使用者可以透過編輯 PersistentVolumeClaim(PVC)對象,調整已存在 PV 的大小。使用者不需要手動與儲存後端互動,或者刪除再重建 PV 和 PVC 對象來增加 Volume 的大小。更多關於調整 PV 大小的說明,請參考 K8S Documentation-Expanding Persistent Volumes Claims。
調整 Volume 的大小,需要 PVC 在未掛載的情況下再進行 extend,之後再啟動 Pod,才可以看到 Pod ,詳細步驟如下:
Step 1. 刪除 Pod
因為 Pod 與 PVC 連動,無法直接將 PVC 自 Pod 卸載,因此變更 Volume 大小前需先將所有關連的 Pod 刪除,讓 PVC 為未掛載的狀態。
kubectl delete -f nginx.yaml
Step 2. 編輯 Volume size
kubectl edit pvc csi-pvc-cinder-hdd
- 修改 Volume size (此處將原本的 1Gi 改為 2Gi)
- 可以看到 PV 大小已由 1 轉為 2
kubectl get pv
Step 3. 重新建立 Pod,並掛載 PVC
參考前文重新建立 Pod,並掛載 PVC
進入 Pod 驗證檔案系統裡的大小,可以看到 Size 已更新為 2.0G
kubectl exec nginx -- df -h /var/lib/www/html