PS:转载之ceph集群对接k8s
docker本身设计之初是用来执行一个app,抑或是一个应用程序,在其运行结束后,将销毁一切数据,但是这明显不是我们想要的,docker也 想到了这个,因此其本身提供一个-v的参数,用来将外部的存储挂载到container中,用来保存我们的持久化的数据。kubernetes最为其集群 管理工具,自然也想到了这些,而且还提供了更强大的功能,基于其插件化的设计,kubernetes针对volume的driver支持是十分丰富的。本 文就简单描述几个driver的设计思想和使用方法:
emptyDir
如果Pod配置了emptyDir类型 Volume, Pod 被分配到Node上时候,会创建emptyDir,这好像是基于pod的一块内存分配。只要Pod运行在Node上,emptyDir都会存在(Pod中 任何一个容器挂掉不会导致emptyDir丢失数据),但是如果Pod从Node上被删除(Pod被删除,或者Pod发生迁移),emptyDir也会被 删除,并且永久丢失。
创建一个pod并且使用emptyDir volume:
apiVersion: v1 kind: Pod metadata: name: test-emptydir spec: containers: - name: nginx image: nginx volumeMounts: - name: empty mountPath: /mnt volumes: - name: empty emptyDir: Medium: "" # 这里可以使用空或者使用"memory"关键字,来制定不通的存储媒介
创建完后,我们通过进入container中查看/mnt所挂载的类型
# kubectl exec -p test-emptydir -it /bin/bash
root@test-emptydir:/# findmn