Kubernetes集群設置動態NFS配置教程

Kubernetes中的動態NFS存儲配置允許你按需自動為Kubernetes應用配置和管理 NFS(網絡文件系統)卷。它允許創建持久卷(PV)和持久卷聲明(PVC),而無需手動干預或預配置存儲。NFS配置程序負責動態創建PV并將其綁定到 PVC。它與NFS服務器交互,為每個PVC創建目錄或卷。

先決條件

  • 預裝Kubernetes集群
  • 具有Kubernetes集群管理員權限的普通用戶
  • 互聯網連接

1、準備 NFS 服務器

在Kubernetes主節點(Ubuntu 22.04)上安裝 NFS 服務器。登錄主節點并運行以下命令:

$ sudo apt update
$ sudo apt install nfs-kernel-server -y

創建以下文件夾并使用 NFS 共享它:

$ sudo mkdir /opt/dynamic-storage
$ sudo chown -R nobody:nogroup /opt/dynamic-storage
$ sudo chmod 777 /opt/dynamic-storage

在 /etc/exports 文件中添加以下條目:

$ sudo vi /etc/exports
/opt/dynamic-storage 192.168.1.0/24(rw,sync,no_subtree_check)

保存并關閉文件。

注意:不要忘記更改導出文件中適合你的部署的網絡。

要使上述更改生效,請運行:

$ sudo exportfs -a
$ sudo systemctl restart nfs-kernel-server
$ sudo systemctl status nfs-kernel-server

Kubernetes集群設置動態NFS配置教程

在工作節點上,使用以下 apt 命令安裝 nfs-common 包。

$ sudo apt install nfs-common -y

2、安裝和配置 NFS 客戶端配置程序

NFS 子目錄外部配置程序在Kubernetes集群中部署 NFS 客戶端配置程序。配置程序負責動態創建和管理由 NFS 存儲支持的持久卷(PV)和持久卷聲明(PVC)。因此要安裝 NFS 子目錄外部配置程序,首先使用以下命令集安裝 helm:

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

運行以下命令來啟用 helm 倉庫:

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

使用以下 helm 命令部署配置程序:

$ helm install -n nfs-provisioning --create-namespace nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=192.168.1.139 --set nfs.path=/opt/dynamic-storage

Kubernetes集群設置動態NFS配置教程

上面的 helm 命令將自動創建 nfs-provisioning 命名空間,并安裝 NFS 配置程序的容器莢/部署、名稱為 nfs-client 的存儲類,并將創建所需的 rbac。

$ kubectl get all -n nfs-provisioning
$ kubectl get sc -n nfs-provisioning

下面的輸出確認了配置程序容器莢和存儲類已成功創建。

Kubernetes集群設置動態NFS配置教程

3、創建持久卷聲明(PVC)

創建 PVC 來為你的容器莢或部署請求存儲。PVC 將從存儲類 nfs-client 請求特定數量的存儲:

$ vi demo-pvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: demo-claim
namespace: nfs-provisioning
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Mi

保存并關閉文件。

Kubernetes集群設置動態NFS配置教程

運行以下 kubectl 命令以使用上面創建的 YML 文件創建 PVC:

$ kubectl create -f demo-pvc.yml

驗證 PVC 和 PV 是否創建:

$ kubectl get pv,pvc -n nfs-provisioning

Kubernetes集群設置動態NFS配置教程

上面的輸出表明 PV 和 PVC 創建成功。

4、測試并驗證動態 NFS 配置

為了測試和驗證動態 NFS 配置,請使用以下 YML 文件啟動測試容器莢:

$ vi test-pod.yml
kind: Pod
apiVersion: v1
metadata:
name: test-pod
namespace: nfs-provisioning
spec:
containers:
- name: test-pod
image: busybox:latest
command:
- "/bin/sh"
args:
- "-c"
- "touch /mnt/SUCCESS && sleep 600"
volumeMounts:
- name: nfs-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: demo-claim

Kubernetes集群設置動態NFS配置教程

使用以下 kubectl 命令部署容器莢:

$ kubectl create -f test-pod.yml

驗證 test-pod 的狀態:

$ kubectl get pods -n nfs-provisioning

Kubernetes集群設置動態NFS配置教程

登錄到容器莢并驗證 NFS 卷是否已安裝。

$ kubectl exec -it test-pod -n nfs-provisioning /bin/sh

Kubernetes集群設置動態NFS配置教程

上面容器莢的輸出確認了動態 NFS 卷已安裝且可訪問。

最后刪除容器莢和 PVC,查看 PV 是否自動刪除。

$ kubectl delete -f test-pod.yml
$ kubectl delete -f demo-pvc.yml
$ kubectl get pv,pvc -n nfs-provisioning

Kubernetes集群設置動態NFS配置教程

廣告合作
QQ群號:707632017
標簽:

溫馨提示:

1、本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。

2、本站原創內容未經允許不得轉裁,轉載請注明出處“站長百科”和原文地址。

熱門教程

  • Z-Blog教程
    Z-Blog教程
    ZBlog教程分享ZBlog安裝教程、ZBlog建站教程和ZBlog使用教程等相關教程,包括如何創建...
  • CSS教程
    CSS教程
    CSS教程提供了關于如何使用CSS來設計和美化網頁的基礎知識和技巧,包括選擇器、樣式規則、盒模型、布...
  • WordPress教程
    WordPress教程
    WordPress教程提供了關于WordPress的基礎知識和技巧,包括安裝、設置、發布內容、選擇主...
  • 寶塔面板教程
    寶塔面板教程
    寶塔面板教程是一個致力于向用戶傳授寶塔面板的使用技巧和知識的學習資源,旨在幫助用戶快速上手和充分利用...
  • Xmind教程
    Xmind教程
    Xmind是一款功能強大的思維導圖軟件,它可以幫助用戶組織思維、整理信息、規劃項目等。Xmind教程...

3個月免費VPS

亞馬遜云科技