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.yaml
apiVersion: 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
kubernetes

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 PVC , tạo manifest như sau:

2.persistent-vol-claim.yaml
apiVersion: 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
kubernetes

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

Đăng ký nhận bài viết mới