Cài đặt StorageClass cho Kubernetes với NFS

Trong loạt bài viết về điện toán đám mây gốc (Cloud Native), chúng ta đã tìm hiểu về Docker, Harbor, Kubernetes, và cấu hình NFS. Tiếp theo, bài viết này sẽ hướng dẫn cách triển khai StorageClass cho Kubernetes, sử dụng NFS làm backend lưu trữ.

Yêu cầu môi trường

  1. Đã cài đặt một cụm Kubernetes (ví dụ: v1.26.1).
  2. Đã cài đặt và cấu hình dịch vụ NFS.
  3. Hệ điều hành Ubuntu 22.04 LTS.

Các bước cài đặt

Các lệnh sau đây giả định bạn đang thực thi với quyền root và tại cùng một thư mục. Nếu bạn đang triển khai trên cụm Kubernetes, hãy thực hiện các thao tác trên nút master.

1. Cài đặt Helm

Helm là trình quản lý gói cho Kubernetes. Đầu tiên, tải xuống và cài đặt Helm:


wget https://get.helm.sh/helm-v3.11.1-linux-amd64.tar.gz
tar -zxvf helm-v3.11.1-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/
sudo chmod +x /usr/local/bin/helm
    

Thiết lập tự động hoàn thành lệnh Helm:


echo 'source <(helm completion bash)' >> /etc/profile
source /etc/profile
    

Thêm các kho lưu trữ cần thiết:


helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    

2. Tải và cấu hình `nfs-subdir-external-provisioner`

Tải xuống trình cung cấp lưu trữ NFS cho Kubernetes:


wget https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/releases/download/nfs-subdir-external-provisioner-4.0.16/nfs-subdir-external-provisioner-4.0.16.tgz
    

Giải nén và chỉnh sửa tệp `values.yaml`. Cập nhật địa chỉ kho lưu trữ ảnh (ví dụ: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner), địa chỉ máy chủ NFS và đường dẫn mount đã cấu hình.

Quan trọng: Thiết lập defaultClass: true để StorageClass này trở thành mặc định và đặt tên cho StorageClass theo ý muốn.

3. Cài đặt

Sau khi chỉnh sửa tệp values.yaml, thực hiện cài đặt bằng lệnh sau:


kubectl create namespace nfs-storage
helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --namespace nfs-storage \
    -f values.yaml
    

Hoặc bạn có thể cài đặt trực tiếp mà không cần tải tệp cấu hình:


helm repo add nfs-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=YOUR_NFS_SERVER_IP \
    --set nfs.path=/path/to/nfs/export \
    --set image.repository=registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner \
    --set image.tag=v4.0.2 \
    --set storageClass.defaultClass=true \
    --namespace nfs-storage
    

Kiểm tra StorageClass vừa tạo:


kubectl get storageclass
# Hoặc viết tắt
kubectl get sc
    

Kết quả sẽ hiển thị StorageClass mới được tạo, ví dụ: nfs-client.

Kiểm tra

Tạo một tệp test-claim.yaml để yêu cầu lưu trữ:


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-claim
spec:
  storageClassName: nfs-client  # Thay thế bằng tên StorageClass của bạn
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi
    

Áp dụng tệp cấu hình này:


kubectl apply -f test-claim.yaml
    

Kiểm tra PersistentVolumeClaim (PVC):


kubectl get pvc
    

Nếu mọi thứ hoạt động chính xác, bạn sẽ thấy một PVC được tạo và trạng thái của nó là Bound. Đồng thời, trên máy chủ NFS, bạn có thể truy cập vào thư mục chia sẻ đã cấu hình và xác nhận rằng một thư mục mới đã được tạo cho PVC này.

Thẻ: Kubernetes storageclass NFS Helm cloud-native

Đăng vào ngày 12 tháng 6 lúc 23:50