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 setup HA nginx đơn giản bằng keepalived sử dụng VIP

      VNG CLOUD đang cung cấp 1 dịch vụ cho phép người dùng khởi tạo Virtual IP Address (VIP) phục vụ cho nhu cầu High Avaibility (HA) của hệ thống. Hiện tại VIP là 1 private IP, chưa có Public VIP. 1.Khởi tạo VIP trên Portal VNG Cloud Sau khi khởi tạo VIP ...
    • Hướng dẫn thay đổi IP private cho vServer

      Tùy thuộc vào yêu cầu và mục đích sử dụng, ta có thể thay đổi private IP đối với vServer theo hướng dẫn bên dưới Lưu ý: việc thay đổi này sẽ làm interface bị down và không thể kết nối server trong thời gian thực hiện, do đó ở bước 2 cần thực hiện ...
    • Get Access Token cho API vServer sử dụng tool Postman

      Giới thiệu tổng quan: Khi sử dụng API vServer (https://vserver-api-docs.vngcloud.vn/service-docs/vserver.html) , trong mọi request đều yêu cầu Access Token nên dưới đây sẽ là hướng dẫn cụ thể Bước 1: Đầu tiên để get được Access Token thì cần có ...
    • Hướng dẫn upgrade pfsense lên version 2.7.2 và cập nhật bản vá CVE-6387

      HƯỚNG DẪN UPGRADE PFSENSE LÊN VERSION 2.7.2 VÀ CẬP NHẬT BẢN VÁ CVE-6387 Hiện tại Pfsense đã có bản vá cho CVE-6387 và thông tin changelog được cập nhật tại đây https://github.com/pfsense/FreeBSD-ports/commits/devel/sysutils/pfSense-pkg-System_Patches ...
    • Hướng dẫn generate Token để tạo Temp URL upload file trong vStorage API

      Generate Authen Token: - Truy cập https://iam.console.vngcloud.vn/service-accounts để tạo Service Account để lấy cặp ClientID và SecretID cho project vStorage Client ID: ec2d4f62-6580-406e-95e3-b17xxxxxxx Secret ID: 4ec7b98b-df1c-480e-bc01-38fxxxxxxx ...