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

 

 

 

 

 

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