kubernetes 使用NFS搭建動態存儲卷(PV/SorageClass/PVC)

在平常學習測試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

安裝環境

安裝kubernetes、helm

參考資料,在node一、node2上安裝kubernetes和helm;git

安裝NFS

  • 在node1上安裝NFS Server

$ sudo yum -y install nfs-utils rpcbindgithub

  • 在服務端node1上配置共享目錄
$ 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    //讓上面的配置生效
  • 在服務端啓動NFS服務
//必須先啓動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

在客戶端node2安裝nfs-utils

**注意:全部kubernetes機器都須要安裝nfs-utils,我就是沒有在客戶端安裝nfs-utils,才卡在怎麼測試PV、StorageClass、PVC都不通;async

$ sudo yum install nfs-utils

能夠參考資料,在客服端上測試NFS共享存儲;學習

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

設置默認StorageClass

使用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/

相關文章
相關標籤/搜索