今天要來安裝Kubernetes上的NFS provisioner,主要就是搭配我的DS718+做dynamic provisioner
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
檢查一下我們準備要使用的路徑為IThomeNFS
## 先create一個namespace
kubectl create ns nfs-provisioner
##使用指令簡易安裝
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=192.168.1.107 \
--set nfs.path=/volume1/IThomeNFS \
--version 4.0.13 \
-n nfs-provisioner
安裝完成後可以看到如下圖
這邊要注意,所有節點必須要安裝nfs-common(ubuntu),才能夠支援nfs mount
retain policy,volumebindmode 這些有需要都要記得在安裝時調整
寫一份yaml測試,其中pvc指定storage class為nfs-client
apiVersion: v1
kind: Pod
metadata:
name: test-pv-pod
namespace: test
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: test-pvc
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
namespace: test
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs-client
resources:
requests:
storage: 30Gi
成功綁定並運行
exec進入container目錄放個檔案測試
在本機將nfs目錄mount到mnt做檢查。
sudo mount -t nfs 192.168.1.107:/volume1/IThomeNFS /mnt
沒有問題,確實有資料。
那這樣之後有pvc/pv需求時都可以直接用這個storage class了。
storage實在也是一門高深的學問,不夠懂storage與分散式儲存的我往往能選擇的也只剩NFS、local persistent volumes這種東西(實在也不敢亂用)......就加減用吧。