Persistent Volume trong Kubernetes
PersistentVolume (pv
) là một phần không gian lưu trữ dữ liệu tronnng cluster,
các PersistentVolume giống với Volume bình thường tuy nhiên nó tồn tại độc lập với POD (pod bị xóa PV vẫn tồn tại),
có nhiều loại PersistentVolume có thể triển khai như NFS, Clusterfs ...
(xem tại
Các kiểu PersistentVolume
)
PersistentVolumeClaim (pvc
) là yêu cầu sử dụng không gian lưu trữ (sử dụng
PV). Hình dung PV giống như Node, PVC giống như POD. POD chạy nó sử dụng các tài nguyên của NODE, PVC hoạt động
nó sử dụng tài nguyên của PV.
Tạo Persistent Volume trong Kubernetes
Ví dụ này, sẽ tạo PV loại hostPath
, tức ánh xạ một thư mục trên máy chạy POD. Tạo một
manifest như sau:
Tham khảo API PV
1.persistent-vol.yamlapiVersion: v1 kind: PersistentVolume metadata: name: pv1 labels: name: pv1 spec: storageClassName: mystorageclass capacity: storage: 5Gi accessModes: - ReadWriteOnce hostPath: path: "/v1"
# triển khai kubectl apply -f 1.persistent-vol.yaml # liệt kê các PV kubectl get pv -o wide # thông tin chi tiết kubectl describe pv/pv1
Tạo Persistent Volume Claim trong Kubernetes
PVC (Persistent Volume Claim) là yêu cầu truy cập đến PV, một PV chỉ có một PVC
Tham khảo API PVC API và PVC , tạo manifest như sau:
2.persistent-vol-claim.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc1 labels: name: pvc1 spec: storageClassName: mystorageclass accessModes: - ReadWriteOnce resources: requests: storage: 150Mi
# triển khai kubectl apply -f 2.persistent-vol-claim.yaml kubectl get pvc,pv -o wide kubectl describe pvc/pvc1
Sử dụng PVC với Pod
apiVersion: apps/v1 kind: DaemonSet metadata: name: myapp spec: selector: matchLabels: name: myapp template: metadata: name: myapp labels: name: myapp spec: volumes: # Khai báo VL sử dụng PVC - name: myvolume persistentVolumeClaim: claimName: pvc1 containers: - name: myapp image: busybox resources: limits: memory: "50Mi" cpu: "500m" command: - sleep - "600" volumeMounts: - mountPath: "/data" name: myvolume