Kubernetes存儲之NFS

 

計算機世界的三大:計算調度、網絡、存儲。

 

kubernetes集羣搭建我就不細說了,我只就記錄下一次使用NFS做共享存儲的經歷。

 

場景是這樣的: 學生開啓一個單集羣,通過web界面連接到docker容器(起了Jupyter notebook應用,很強大,The Jupyter Notebook  https://jupyter.org/),每個學生都有自己的實驗環境,可以做預設的實驗,然後提交報告(包含.ipynb 文件),老師根據提交的報告給學生打分(評分之前要運行你的.ipynb 文件)。

 

細節: 實驗文檔只存一份,跟網站服務器放一起,由於docker容器是通過kubernetes調度的,也就是說學生的實驗環境會分散到各個node節點上,可node節點沒有實驗文檔,故想到了共享存儲,而且實驗又可以自定義,所有後續實驗也沒有做到docker鏡像裏,而是新增的實驗文檔放到了共享實驗目錄裏,要靈活。學生、實驗和報告的關係:1:N:N,故實驗和報告要外放到容器之外,需要時到共享目錄裏按需掛載對應的實驗和報告。

 

說到共享,市面上很多,不一一舉例,我們選擇了易用的NFS做實驗和報告的共享,由於網上案例很多,就不多費口舌了。

 

在Kubernetes中,每個容器都可以讀寫自己的獨立文件系統。

但是,當容器重新啓動(很容易復現該情況,新手拈來)時,該文件系統上的數據將被銷燬。

 

爲了解決這個問題,Kubernetes引入了卷。卷允許pod寫入,只要pod存在就存在的文件系統。

而且卷還允許您在同一pod中的容器之間共享數據。

但是,當pod重新啓動時(也很容易復現),該卷中的數據將被銷燬。

 

爲了解決這個問題,Kubernetes引入持久的卷。持久卷是Kubernetes集羣中的長期存儲。

持久卷的生命週期最長,存在於容器、pod和node節點之外。

pod使用持久卷聲明來獲取對持久卷的讀寫訪問。

 

三者之間的生命週期如下:

存儲類型 生命週期存活
容器文件系統 跟容器共存亡
與pod一起
持久卷 長久存在

也可以去我的github查看對應的資料 Kubernetes+Docker+Istio:  https://github.com/dongguangming/java/tree/master/Kubernetes%2BDocker%2BIstio

 

參考:

  1.  

    Storage Classes  https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner

  2. K8S 六種存儲解決方案的性能比較測試   https://mp.weixin.qq.com/s?__biz=Mzg3ODAzMTMyNQ==&mid=2247484280&idx=1&sn=52fbb4cbfceab514bac55976fd4babb5&chksm=cf18bbcaf86f32dc67e5e437c7c8195799454342efebc4d8b08a8e98511affe9060d5b173f3a&scene=21#wechat_redirect

  3. Why Is Storage On Kubernetes So Hard?  https://softwareengineeringdaily.com/2019/01/11/why-is-storage-on-kubernetes-is-so-hard/

  4. 使用 Kubernetes 最常見的 10 個錯誤  https://www.infoq.cn/article/WtZcMs5PlhetloqlBk8M

  5.  

    Kubernetes Volume Basics: emptyDir and PersistentVolume

     https://www.alibabacloud.com/blog/kubernetes-volume-basics-emptydir-and-persistentvolume_594834
  6. Kubernetes與GlusterFS的愛恨情仇  http://dockone.io/article/10390

  7. Turn your Raspberry Pi homelab into a network filesystem  https://opensource.com/article/20/5/nfs-raspberry-pi

  8.  Provision Kubernetes NFS clients on a Raspberry Pi homelab
     https://opensource.com/article/20/6/kubernetes-nfs-client-provisioning 
  9. Kubernetes Persistent Volume with Rook  https://www.cloudtechnologyexperts.com/kubernetes-persistent-volume-with-rook/

  10. 無痛部署個人學習&測試用Kubernetes + Ceph集羣  https://segmentfault.com/a/1190000021858995

  11. Deploy a Highly Available WordPress Instance as a StatefulSet in Kubernetes 1.5  https://thenewstack.io/deploy-highly-available-wordpress-instance-statefulset-kubernetes-1-5/#Creating%20Persistent%20Volumes%20and%20Claims

  12.  

    Deploying a full-stack Spring boot, Mysql, and React app on Kubernetes with Persistent Volumes and Secrets  https://www.callicoder.com/deploy-spring-mysql-react-nginx-kubernetes-persistent-volume-secret/

  13. 使用Python和Jupyter Notebook進行數據分析  https://www.sohu.com/a/293156299_295682

  14. njecting multiple Kubernetes volumes to the same directory https://blog.sebastian-daschner.com/entries/multiple-kubernetes-volumes-directory?ref=hackernoon.com

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章