如何在 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
在工作節點上,使用以下 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
上面的 helm
命令將自動創建 nfs-provisioning
命名空間,並安裝 NFS 配置程序的容器莢/部署、名稱為 nfs-client
的存儲類,並將創建所需的 rbac。
$ kubectl get all -n nfs-provisioning
$ kubectl get sc -n nfs-provisioning
完美,上面的輸出確認了配置程序容器莢和存儲類已成功創建。
步驟 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
保存並關閉文件。
運行以下 kubectl
命令以使用上面創建的 YML 文件創建 PVC:
$ kubectl create -f demo-pvc.yml
驗證 PVC 和 PV 是否創建:
$ kubectl get pv,pvc -n nfs-provisioning
太好了,上面的輸出表明 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
使用以下 kubectl
命令部署容器莢:
$ kubectl create -f test-pod.yml
驗證 test-pod
的狀態:
$ kubectl get pods -n nfs-provisioning
登錄到容器莢並驗證 NFS 卷是否已安裝。
$ kubectl exec -it test-pod -n nfs-provisioning /bin/sh
太棒了,上面容器莢的輸出確認了動態 NFS 卷已安裝且可訪問。
最後刪除容器莢和 PVC,查看 PV 是否自動刪除。
$ kubectl delete -f test-pod.yml
$ kubectl delete -f demo-pvc.yml
$ kubectl get pv,pvc -n nfs-provisioning
這就是這篇文章的全部內容,希望對你有所幫助。請隨時在下面的評論部分發表你的疑問和反饋。
(題圖:MJ/75dae36f-ff68-4c63-81e8-281e2c239356)
via: https://www.linuxtechi.com/dynamic-nfs-provisioning-kubernetes/
作者:Pradeep Kumar 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive