一、說明:git
NFS client provisioner 利用 NFS Server 給 Kubernetes 做爲持久存儲的後端,而且動態提供PV。github
默認 rancher 2 的存儲類中的提供者不包含NFS,須要手動添加;添加方式有兩種:後端
1)從應用商店直接安裝配置 nfs-client-provisioner (需手動添加倉庫,該倉庫是從helm官方代碼庫複製本身須要的應用代碼並定製的)tcp
2)手動建立 nfs-client-provisioner 存儲類,步驟以下:性能
二、前提:測試
1)安裝好 nfs server(172.31.49.9 ),並分享目錄(k8snfs_test)spa
2)安裝有 helm 的 master 主機上安裝 gitcode
yum install -y git
3)安裝rpcbindserver
yum install -y rpcbind systemctl enable rpcbind systemctl start rpcbind
參考:https://github.com/helm/charts/tree/master/stable/nfs-client-provisionerblog
在安裝 helm 的主機上操做:
git clone https://github.com/helm/charts.git cd charts/ helm install stable/nfs-client-provisioner --set nfs.server=172.31.49.9 --set nfs.path=/k8snfs_test
執行結果以下:
nfs client 會以容器的形式運行。同時在集羣的存儲類中建立了 nfs-client 類
一、啓動一個 pod,添加存儲卷(建立新的 PV,存儲類選擇 nfs-client,保存)。
二、而後填寫PVC卷名,容器路徑。
三、進入容器,建立一個測試文件
四、進入 NFS server 中查看分享的 k8snfs_test 目錄可看到自動建立了持久卷目錄。
[root@DL-Dev4-49-9 k8snfs_test]# ll total 4 drwxrwxrwx 2 root root 4096 Jun 21 15:42 default-pvc-g55h2-pvc-a002261e-93f7-11e9-a843-025f44ec7002 [root@DL-Dev4-49-9 k8snfs_test]# [root@DL-Dev4-49-9 k8snfs_test]# ll default-pvc-g55h2-pvc-a002261e-93f7-11e9-a843-025f44ec7002/ total 0 -rw-r--r-- 1 root root 0 Jun 21 15:42 111.txt
五、在rancher的持久卷中也能夠看到該持久卷
Linux nfs客戶端對於同時發起的NFS請求數量進行了控制,若該參數配置較小會致使IO性能較差,請查看該參數:
cat /proc/sys/sunrpc/tcp_slot_table_entries
默認編譯的內核該參數最大值爲256,可適當提升該參數的值來取得較好的性能,請以root身份執行如下命令:
echo "options sunrpc tcp_slot_table_entries=128" > /etc/modprobe.d/sunrpc.conf echo "options sunrpc tcp_max_slot_table_entries=128" > /etc/modprobe.d/sunrpc.conf sysctl -w sunrpc.tcp_slot_table_entries=128
修改完成後,您須要從新掛載文件系統或重啓機器。
參考:
https://yq.aliyun.com/articles/501417https://github.com/helm/charts/tree/master/stable/nfs-client-provisioner