Linux中國

如何在 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

NFS-Service-Status-Kubernetes-Master-Ubuntu

在工作節點上,使用以下 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-install-nfs-provisioning-kubernetes-cluster

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

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

kubectl-get-all-nfs-provisioning-kubernetes-cluster

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

步驟 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

保存並關閉文件。

PVC-Yaml-Dynamic-NFS-Kubernetes

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

$ kubectl create -f demo-pvc.yml

驗證 PVC 和 PV 是否創建:

$ kubectl get pv,pvc -n nfs-provisioning

Verify-pv-pvc-dynamic-nfs-kubernetes-cluster

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

Pod-Yml-Dynamic-NFS-kubernetes

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

$ kubectl create -f test-pod.yml

驗證 test-pod 的狀態:

$ kubectl get pods -n nfs-provisioning

Verify-Test-Pod-Using-NFS-Volume-Kubernetes

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

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

Access-Dynamic-NFS-Inside-Pod-Kubernetes

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

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

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

Delete-Pod-PVC-Dynamic-NFS

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

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

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

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

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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國