天天看點

系統運維 | 如何在 Kubernetes 叢集中設定動态 NFS 配置

作者:硬核老王
系統運維 | 如何在 Kubernetes 叢集中設定動态 NFS 配置
在這篇文章中,我們将向你展示如何在 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
           
系統運維 | 如何在 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
           

上面的

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
           

太好了,上面的輸出表明 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 配置

這就是這篇文章的全部内容,希望對你有所幫助。請随時在下面的評論部分發表你的疑問和回報。

(題圖:MJ/75dae36f-ff68-4c63-81e8-281e2c239356)

via: https://www.linuxtechi.com/dynamic-nfs-provisioning-kubernetes/

作者:Pradeep Kumar選題:lkxed譯者:geekpi校對:wxy

本文由 LCTT原創編譯,Linux中國榮譽推出

繼續閱讀