NFS on Kubernetes

NFS 在 Kubernetes 上的應用筆記

這篇文章將探討如何在 Kubernetes 環境中使用 NFS (Network File System)。文章將提供一個基本的指南。

環境設定

項目 內容
NFS Server 10.250.75.111
NFS Path /mnt/nfs_shares

部署 NFS Storage Class

以下步驟將建立 Custom Provisioner,並串接 NFS Server。

  1. 建立 Provisioner 的 Service Account

請參考 here

建立名為 nfs-client-provisioner 的 Service Account

kubectl apply -f account.yaml
  1. 建立 Provisioner Deployment

請參考 here

kubernetes-sigs/nfs-subdir-external-provisioner: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

為了避免出錯,strategy.type 設定為 Recreate,而 replicas 設為 1

使用 kubernetes-sigs/nfs-subdir-external-provisioner 作為 provisioner,請注意以下環境變數設定:

- name: PROVISIONER_NAME # storage class 名稱
    value: k8s-sigs.io/nfs-subdir-external-provisioner
- name: NFS_SERVER # nfs server 位置
    value: 10.250.75.111
- name: NFS_PATH # nfs directory 路徑
    value: /mnt/nfs_shares

使用 kubectl 部署 nfs-client-provisioner:

kubectl apply -f provisioner.yaml
  1. 部署 Storage Class

請參考 here

使用 kubectl 部署 cns-nfs-client:

注意 PROVISIONER_NAME 需與 provisioner 名稱相同

kubectl apply -f storage-class.yaml
  1. 部署 PVC

請參考 here

使用 kubectl 部署 cns-nfs-pvc:

kubectl apply -f pvc.yaml

你可以看到 PV 馬上被建立:

pv

  1. 部署 Pod 進行測試

請參考 here

使用 kubectl 部署 nfs-testing:

kubectl apply -f pod.yaml

你可以看到 pod 成功 Running:

pod