1.Đối với VPC tùy biến mua trước tài nguyên volume

Bước 1: Tạo Persistent Volume Claim:

  • PersistentVolumeClaim (hay còn gọi là PVC) là yêu cầu người dùng gửi ra để xin một ổ đĩa lưu trữ có kích thước cụ thể. Khi bạn tạo một PVC, Kubernetes sẽ dùng SC để tạo hoặc chọn một ổ đĩa phù hợp.
  • Tạo file persistent-volume-claim.yaml với nội dung sau:

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: my-pvc                           #[1] The PVC name

spec:

  accessModes:

    - ReadWriteOnce

  resources:

    requests:

      storage: 20Gi                                

  storageClassName: my-storage-class     # The same [1] in sc template

 

Chạy câu lệnh sau đây để triển khai tạo storage class:

kubectl apply -f persistent-volume-claim.yaml

 

Bước 2: Tạo pod dùng PVC

  • Tạo file podnginx-pvc.yaml với nội dung sau:

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: my-volume-name                     

  volumes:

    - name: my-volume-name                         

      persistentVolumeClaim:

        claimName: my-pvc                # The same [1] in pvc template

        readOnly: false

 

Chạy câu lệnh sau đây để triển khai tạo pod:

kubectl apply -f podnginx-pvc.yaml

 

Lúc này, hệ thống sẽ tự động tạo một Volume tương ứng với file yaml bên trên, volume này sẽ được attach vào node chứa pod dùng PVC đang chạy, ví dụ:

Kiểm tra pv, pod vừa tạo:

kubectl get pvc,pod

NAME                             STATUS   VOLUME         STORAGECLASS                             

persistentvolumeclaim/nginx-pvc   Bound  pvc-33c2...   csi-vnptcloud-ssd 

 

NAME            READY   STATUS    RESTARTS   AGE

pod/nginx-pod   1/1     Running   0          7m53s

 

 

 

 

2.Đối với VPC thường mua trực tiếp dịch vụ volume

Lưu ý: Khi sử dụng volume static kiểu dưới đây bắt buộc phải bỏ default cho tất cả storageclass để nó không tự động managed volume được tạo thủ công.

Kiểm tra storage và xóa default sc nếu có:

kubectl get sc

 

Bỏ default sc:

kubectl patch storageclass <name-sc> \

  -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'

 

 

 

Bước 1: Khởi tạo volume ở site volume trên Console VNPT Cloud Portal:

Bước 2: Tạo PV ứng với volume_id vừa tạo

apiVersion: v1

kind: PersistentVolume

metadata:

  name: nginx-pv      #[1] PV name

spec:

  capacity:

    storage: 2Gi

  accessModes:

    - ReadWriteOnce

  csi:

    driver: bs.csi.vnptplatform.vn

    volumeHandle: ff78c129-ba1a-43ee-9097-43f9f02c36d9        #ID volume

 

ID Volume được lấy trong màn hình chi tiết volume: 

Trang chủ > Dịch vụ hạ tầng > Block Storage > Volume > Chi tiết Volume

Chạy câu lệnh sau đây để tạo pv:

kubectl apply -f podnginx-pv.yaml

Bước 3: Tạo PVC ứng với PV

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: nginx-pvc      #[1] PVC name

spec:

  accessModes:

    - ReadWriteOnce

  resources:

    requests:

      storage: 2Gi

  volumeName: nginx-pv       #The same [1] in pv template

 

Chạy câu lệnh sau đây để tạo pvc:

kubectl apply -f podnginx-pvc.yaml

 

Bước 4: Tạo Pod sử dụng PVC

Tạo file podnginx.yaml với nội dung sau:

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: my-volume-name                     

  volumes:

    - name: my-volume-name                         

      persistentVolumeClaim:

        claimName: nginx-pvc             # The same [1] in pvc template

        readOnly: false

 

Chạy câu lệnh sau đây để triển khai tạo pod:

kubectl apply -f podnginx.yaml