Hướng dẫn sử dụng NFS làm Persistent Storage cho cluster VKS

Hướng dẫn sử dụng NFS làm Persistent Storage cho cluster VKS


Hướng dẫn sử dụng NFS làm Persistent Storage cho cluster VKS


Do Persistent Volume hiện tại trên chỉ hỗ trợ mode ReadWriteOnce(RWO), không hỗ trợ ReadWriteMany(RWX) nên trong bài viết này VNG Cloud hướng dẫn Quý Khách sử dụng NFS Server hoặc vStorage Filestore làm Persistent Storage cho cluster VKS

I. Sử dụng vServer làm NFS server:
1. Cấu hình NFS Server:

*Yêu cầu:  Server cùng subnet với các worker node

Trong bài viết thì NFS server có thông tin như sau:

IP: 10.30.15.3

Data path: /mnt/NFS

Worker node cùng range 10.30.15.0/24


Cài đặt NFS Server:

sudo su

apt update && sudo apt -y upgrade

apt install -y nfs-server

mkdir /mnt/NFS


cat <<EOF >> /etc/exports

/mnt/NFS 10.30.15.0/24(rw,no_subtree_check,no_root_squash)

EOF


systemctl enable --now nfs-server

exportfs -ar


2. Cấu hình trên VKS cluster:

Đầu tiên ta cần tạo Storage Class để các hệ thống CI/CD có thể chủ động request Persistent Storage thay vì phải request thủ công:


helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner


helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \

 --create-namespace \

 --namespace nfs-provisioner \

 --set nfs.server=10.30.15.3 \

 --set nfs.path=/mnt/NFS



Tiếp theo ta có thể tạo PersistentVolumeClaim(PVC) bằng Storage Class trên bằng manifest sau:


apiVersion: v1

kind: PersistentVolumeClaim

metadata:

 name: demo-pvc

spec:

 accessModes:

   - ReadWriteMany

 storageClassName: nfs-client

 resources:

   requests:

     storage: "2Gi"



Sau đó ta tạo app, mount pvc và expose Nodeport để kiểm tra:

Tạo file deployment.yml và apply:


apiVersion: apps/v1

kind: Deployment

metadata:

 name: demoapp

 labels:

   app.kubernetes.io/name: pv-demo

spec:

 selector:

   matchLabels:

     app: demoapp

 template:

   metadata:

     labels:

       app: demoapp

   spec:

     containers:

     - name: demoapp

       image: vcr.vngcloud.vn/107444-khaivt/vks-pv-demo:latest

       ports:

       - containerPort: 3000

         name: http

       resources:

         requests:

           memory: "128Mi"

           cpu: "64m"

         limits:

           memory: "750Mi"

           cpu: "500m"

       volumeMounts:

         - name: data

           mountPath: /app/storage

     volumes:

       - name: data

         persistentVolumeClaim:

           claimName: demo-pvc




Tạo file svc.yml để expose app bằng NodePort:


apiVersion: v1

kind: Service

metadata:

 name: demoapp

spec:

 type: NodePort

 ports:

   - name: http # tên port của service

     protocol: TCP

     port: 3001

     targetPort: http # tên port của container bên file deployment

     nodePort: 30090

 selector:

   app: demoapp



Truy cập app bằng url: http://IP-Node:NodePort (ở đây là http://61.28.229.74:30090/) và upload 1 file


Kiểm tra lại data trên NFS server:


Vậy là ta đã hoàn thành việc cấu hình NFS server làm Persistent Storage cho cluster VKS.

Trong phần tiếp theo ta sẽ dùng dịch vụ vStorage FileStore để làm NFS storage cho VKS mà không cần phải cấu hình NFS server


II. Sử dụng vStorage Filestore làm NFS storage:




2. Khởi tạo Storage Class:
Do ở phần trước ta đã tạo 1 storage class nfs-client dùng NFS server nên ở phần này ta tạo 1 storage class khác dùng filestore để so sánh và dễ phân biệt nhé:


 helm install second-nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \

   --namespace nfs-provisioner \

   --set nfs.server=hcm04.efs.vngcloud.vn \

   --set nfs.path=/NFS-filestore \

   --set storageClass.name=second-nfs-client \

--set storageClass.provisionerName=k8s-sigs.io/second-nfs-subdir-external-provisioner



Tương tự ta cũng tạo 1 pvc bằng Storage Class second-nfs-client bằng manifest sau:


apiVersion: v1

kind: PersistentVolumeClaim

metadata:

 name: demo-pvc

spec:

 accessModes:

   - ReadWriteMany

 storageClassName: second-nfs-client

 resources:

   requests:

     storage: "20Gi"



Cuối cùng ta cũng thực hiện deploy app, service(tương tự như trên) và test thử:



Do không trực tiếp kiểm tra data trên vStorage Filestore được nên ta thử mount filestore vào server để kiểm tra data (https://docs.vngcloud.vn/vng-cloud-document/vn/vstorage/filestorage/cac-tinh-nang-cua-filestorage/mount-filestorage-toi-server)


sudo mount -t nfs -o vers=4,hard,timeo=600,retrans=3,rsize=1048576,wsize=1048576,resvport,async hcm04.efs.vngcloud.vn:/NFS-filestore /mnt/filestore



Vậy là ta đã hoàn thành việc sử dụng NFS làm Persisten Storage cho cluster VKS bằng 2 cách là sử dụng NFS server và vStorage Filestore.


    • Related Articles

    • Hướng dẫn sử dụng Storage Gateway

      Help Center Hướng Dẫn Cấu Hình và Sử Dụng Storage Gateway VNG Cloud Hướng dẫn từng bước để truy cập, cấu hình Credential, tạo user, tạo file share và kết nối client NFS/SMB với Storage Gateway. 1. Truy Cập Storage Gateway Bước 1: Sau khi khởi tạo ...
    • Hướng dẫn setup HA nginx đơn giản bằng keepalived sử dụng VIP

      Help Center Cấu hình High Availability với VIP, NGINX và Keepalived trên VNG Cloud Hướng dẫn triển khai cụm HA sử dụng Virtual IP Address kết hợp NGINX và keepalived trên nền tảng VNG Cloud, đảm bảo dịch vụ tiếp tục hoạt động khi một node gặp sự cố. ...
    • Hướng dẫn sử dụng vstorage api HAN02 lấy tempURL để upload file

      Help Center Hướng dẫn tạo Token và upload file qua Temp URL trên vStorage API HAN01 Mô tả các bước xác thực bằng Service Account và sử dụng Temp URL để upload object lên vStorage tại region HAN01. 1. Tạo Authen Token Bước 1: Truy cập trang quản lý ...
    • Hướng dẫn thay đổi IP private cho vServer

      Help Center Thay đổi Private IP cho vServer Hướng dẫn thay đổi địa chỉ IP nội bộ của vServer thông qua portal và cấu hình lại trực tiếp trên hệ điều hành. ⚠ Lưu ý: Quá trình thay đổi IP sẽ khiến network interface tạm thời bị down, làm gián đoạn kết ...
    • Get Access Token cho API vServer sử dụng tool Postman

      Help Center Hướng dẫn lấy Access Token để gọi vServer API Mô tả cách tạo Service Account và lấy Access Token thông qua Postman, phục vụ việc xác thực các request tới vServer API. 1. Tổng quan Mọi request gửi tới vServer API ...