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

Do các dữ liệu trong POD là dạng dữ liệu lưu trữ tạm thời, khi POD xóa đi thì toàn bộ các dữ liệu sẽ mất đi vì vậy Quý khách cần sử dụng Persistent Storage để lưu trữ dữ liệu quan trọng mà không mất đi sau khi xóa POD. Trong bài viết này vHost sẽ hướng dẫn Quý khách sử dụng NFS làm Persistent Storage cho hệ thống Kubernetes

Yêu cầu

  • Một NFS Server cùng network với các worker node của Kubernetes.
  • Tối thiểu 1 worker node

Hướng dẫn cấu hình trên NFS Server

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

IP: 10.1.1.180
Data path: /data

Các worker node có cùng range IP 10.1.1.0/24

Cài đặt NFS Server:

apt update && apt -y upgrade

apt install -y nfs-server

mkdir /data

cat <<EOF >> /etc/exports
/data 10.1.1.0/24(rw,no_subtree_check,no_root_squash)
EOF

systemctl enable --now nfs-server

exportfs -ar

Hướng dẫn cấu hình trên Kubernetes cluster

Trong bài viết này sẽ hướng dẫn tạo Storage Class để các hệ thống CI/CD có thể chủ động requets 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.1.1.180 \
  --set nfs.path=/data

Kiểm tra lại kết quả:

Tiếp theo tiếp tục kiểm thử bằng cách tạo PersistentVolumeClaim bằng manifest sau:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: vhost-db1
  labels:
    storage.k8s.io/name: nfs
    storage.k8s.io/part-of: kubernetes-complete-reference
    storage.k8s.io/created-by: vhost
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: nfs-client
  resources:
    requests:
      storage: 1Gi

Tiến hành apply manifest và kiểm tra lại kết quả PVC đã tạo:

Khai báo và sử dụng PVC đã tạo cho POD:

apiVersion: v1
kind: Pod
metadata:
  name: vhosttest-pod
spec:
  containers:
    - name: example
      image: busybox
      volumeMounts:
        - mountPath: "/data"
          name: nginx
      stdin: true
      stdinOnce: true
      tty: true
  volumes:
    - name: nginx
      persistentVolumeClaim:
        claimName: vhost-db1

Triển khai POD:

Tạo data mẫu trong POD và kiểm tra lại trên NFS Server:

Đã thấy data của POD xuất hiện trên NFS Server:

Thông qua bài viết này vHost đã hướng dẫn cấu hình NFS server làm Persistent Storage cho Kubernetes. Nếu Quý khách cần hỗ trợ thêm thông tin, có thể liên hệ với đội ngũ kỹ sư của chúng tôi tại support@vhost.vn.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top