如何安裝 NFS Subdir External Provisioner
簡介
在 Kubernetes 中,動態存儲是現代應用程式管理的重要部分。NFS Subdir External Provisioner 是一種簡單且高效的存儲解決方案,它允許 Kubernetes 動態分配基於 NFS 的持久化存儲卷(Persistent Volume)。該工具通過在 NFS 伺服器中創建子目錄,為每個 PVC(Persistent Volume Claim)提供獨立的存儲空間。
在本教程中,我們將介紹如何安裝和配置 NFS Subdir External Provisioner。
步驟 1:準備 NFS 伺服器
在安裝 NFS Subdir External Provisioner 前,需要一個可用的 NFS 伺服器。以下是配置 NFS 的簡單步驟:
確認 NFS 伺服器正常運行:
showmount -e <NFS_SERVER_IP>
重新加載 NFS 配置並啟動服務:
sudo exportfs -r
sudo systemctl restart nfs-kernel-server
修改 /etc/exports
文件,添加共享路徑:
echo "/mnt/nfs-share *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
創建共享目錄:
sudo mkdir -p /mnt/nfs-share
sudo chmod 777 /mnt/nfs-share
安裝 NFS 伺服器(假設您使用的是 Ubuntu):
sudo apt update
sudo apt install -y nfs-kernel-server
步驟 2:安裝 Helm
NFS Subdir External Provisioner 通常通過 Helm Chart 安裝。若尚未安裝 Helm,請先完成以下步驟:
驗證安裝是否成功:
helm version
下載 Helm:
curl -sSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
步驟 3:安裝 NFS Subdir External Provisioner
nfs.server
:填入您的 NFS 伺服器 IP。nfs.path
:填入您在步驟 1 中設置的共享目錄。
驗證安裝:
kubectl get pods -n nfs-provisioner
您應該能看到 NFS Provisioner 的 Pod 正常運行。
使用 Helm 安裝:
helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--namespace nfs-provisioner \
--create-namespace \
--set nfs.server=<NFS_SERVER_IP> \
--set nfs.path=/mnt/nfs-share
新增 Helm Chart Repository:
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
helm repo update
步驟 4:設置存儲類(StorageClass)
安裝完成後,會自動創建一個 StorageClass
,供 Kubernetes 使用 NFS 進行動態存儲分配。
設置默認存儲類(可選):
kubectl patch storageclass <STORAGE_CLASS_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
查看自動創建的 StorageClass
:
kubectl get storageclass
步驟 5:測試 PVC 和動態存儲
驗證 NFS 伺服器上是否創建了對應的子目錄:
ls /mnt/nfs-share
驗證 PVC 是否成功綁定:
kubectl get pvc
應用 PVC:
kubectl apply -f pvc-test.yaml
創建一個測試 PVC(pvc-test.yaml
):
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: <STORAGE_CLASS_NAME>
總結
NFS Subdir External Provisioner 是 Kubernetes 中一個非常方便的工具,能夠為基於 NFS 的存儲提供動態卷分配功能。它特別適合需要共享存儲資源的應用場景,如多個 Pod 同時訪問相同的存儲。
通過本教程,您現在應該能夠:
- 配置並啟用 NFS 伺服器。
- 使用 Helm 安裝 NFS Subdir External Provisioner。
- 測試和驗證動態存儲是否正常運行。
使用GPT整理