在平常學習測試kubernetes時,常常須要PersistentVolume把一些數據(例如:數據庫、日誌等)存儲起來,不隨着容器的刪除而丟失;關於PV、PVC、StorageClass的關係參考PV/PVC/StorageClass;存儲卷的實現有不少種,此處選擇比較容易實現的NFS做爲存儲;參考了網上好多資料,但都是不太完整,按照資料上的說明操做都有問題,因此在參考了衆多資料以後決定記錄一下過程,以供各位參考。html
環境: centos-7(3.10.0-957.5.1.el7.x86_64)(node1, node2) kubernetes v1.13.0 helm v2.12.0node
參考資料,在node一、node2上安裝kubernetes和helm;git
$ sudo yum -y install nfs-utils rpcbind
github
$ sudo mkdir /var/nfs $ sudo su //切換到root用戶 $ echo "/var/nfs 192.168.0.0/24(rw,async,no_root_squash,no_all_squash,sync)" >> /etc/exports //配置共享目錄 $ exit //退回原來用戶 $ exportfs -r //讓上面的配置生效
//必須先啓動rpcbind服務,再啓動nfs服務,這樣才能讓nfs服務在rpcbind服務上註冊成功 $ sudo systemctl start rpcbind $ sudo systemctl start nfs-server
檢查服務是否啓動成功數據庫
$ showmount -e localhost Export list for localhost: /var/nfs 192.168.0.0/24
設置開機啓動centos
$ sudo systemctl enable rpcbind $ sudo systemctl enable nfs-server
**注意:全部kubernetes機器都須要安裝nfs-utils,我就是沒有在客戶端安裝nfs-utils,才卡在怎麼測試PV、StorageClass、PVC都不通;async
$ sudo yum install nfs-utils
能夠參考資料,在客服端上測試NFS共享存儲;學習
參考資料,在node1上使用helm安裝NFS-Client Provisioner測試
$ helm install stable/nfs-client-provisioner --set nfs.server=x.x.x.x --set nfs.path=/exported/path --name nfs-client-provisioner
它會安裝一個StorageClass.net
$ kubectl get sc NAME PROVISIONER AGE nfs-client cluster.local/nfs-client-provisioner 32h
使用PVC的時候須要建立並指定PV;若是沒有建立PV,就會使用默認的StorageClass來建立相應的PV;不然PVC一直都是Pending的狀態;
把上面建立StorageClass設置爲默認的
$ kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' $ kubectl get sc NAME PROVISIONER AGE nfs-client (default) cluster.local/nfs-client-provisioner 32h
如今你能夠盡情使用PVC了,而不用在去手動建立PV和StorageClass了;
參考資料(謝謝各位做者):
https://blog.csdn.net/jettery/article/details/72722324
https://www.kubernetes.org.cn/4956.html
https://www.kubernetes.org.cn/4022.html
https://blog.51cto.com/passed/2160149
https://blog.51cto.com/fengwan/2176889
https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client
https://k8smeetup.github.io/docs/tasks/administer-cluster/change-default-storage-class/