在這篇文章中,我們将向你展示如何在 Kubernetes(k8s)叢集中設定動态 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
本文由 LCTT原創編譯,Linux中國榮譽推出