1. Tổng quan

Trong môi trường Kubernetes, Network File System (NFS) là một giải pháp lưu trữ phổ biến nhờ tính linh hoạt, dễ triển khai và khả năng chia sẻ dữ liệu giữa nhiều pod. Việc sử dụng NFS Server làm Storage Class trong dịch vụ VNPT K8s giúp cung cấp khả năng lưu trữ động (dynamic provisioning) và hỗ trợ các ứng dụng yêu cầu truy cập dữ liệu đồng thời từ nhiều node.

Lợi ích của việc sử dụng NFS làm Storage Class

  • Dễ triển khai & quản lý: Chỉ cần một NFS server và cấu hình StorageClass trong Kubernetes.
  • Hỗ trợ RWX (ReadWriteMany): Cho phép nhiều pod truy cập cùng một Persistent Volume (PV).
  • Tăng khả năng mở rộng: Dễ dàng mở rộng dung lượng lưu trữ mà không ảnh hưởng đến ứng dụng.

Người dùng có thể sử dụng dịch vụ File Storage của VNPT Cloud, tham khảo tại đây. Hoặc người dùng có thể tự cài đặt NFS Server để tích hợp.

2. Hướng dẫn kết nối đến NFS Server trên VNPT Kubernetes Service

Dưới đây là hướng dẫn kết nối và triển khai NFS Subdir External Provisioner trên VNPT Kubernetes Service

Bước 1: Đứng từ VM đã kết nối được tới cụm VNPT Kubernetes Service và cài đặt Helm.

curl -L https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

Bước 2: Thêm Helm repo cho nfs-subdir-external-provisioner

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

Cài đặt NFS Provisioner

helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \ 
  --version 4.0.18 \
  --namespace nfs-client \
  --create-namespace \
  --set nfs.server=<IP/Domain NFS Server> \
  --set storageClass.name=nfs-client \
  --set nfs.path=<Đường dẫn NFS> \
  --set storageClass.volumeBindingMode=WaitForFirstConsumer

Trong đó:

  • nfs.server: IP hoặc hostname của NFS server
  • storageClass.name: Tên StorageClass được tạo
  • nfs.path: Folder được export từ NFS server (NFS share)
  • storageClass.volumeBindingMode: Cấu hình binding mode cho storage class

Bước 3: Kiểm tra trạng thái

  • Kiểm tra trạng thái pod sau khi cài đặt, đảm bảo pod đã running
kubectl get pods -n <your-namespace> -l app=nfs-subdir-external-provisioner

  • Kiểm tra Storage Class đã được tạo
kubectl get storageclass | grep nfs-client