从Docker到Kubernetes——Volume使用案例

Volume使用案例

EmptyDir

EmptyDir类型的volume创建于pod被调度到某个宿主机上的时候,而同一个pod内的容器都能读写EmptyDir的同一文件一旦pod离开了这个宿主机,EmptyDir中的数据就会被永久删除,所以目前EmptyDir类型的volume主要用作临时空间,比如Web服务器写日志或者tmp文件需要的临时目录。

以下是pod资源描述文件中挂载EmptyDir类型的volume的一个例子:

apiVersion: v1
kind: Pod
metadata: 
  labels: 
  	name: redis
  	role: master
  name: redis-master
spec: 
  containers: 
    - name: master
      image: redis:latest
      env:
        - name: MASTER
          value: "true"
      ports:
        - containerPort: 6379
      volumeMounts:
        - mountPath: /redis-master-data
          name: reids-data
  volumes:
    - name: redis-data
      emptyDir:{}

注意,首先需要在pod内声明了一个名称为redis-data的volume.spec.volumes.name:redis-data,然后才能在容器中挂载这个volume:

     volumeMounts:
          #mountPath即volume在容器内挂载的路径
        - mountPath: /redis-master-data
          #name字段必须与下面的volume名匹配
          name: reids-data

按照以上配置文件创建了pod之后,可以在宿主机上的/var/lib/kubelet/pos/<poduid>/volumes/kubernetes~empty-dir目录下找到名为redis-data的目录。如果登陆到pod创建的docker容器中,可以看到名为redis-master-data的目录。

HostDir

HostDir属性的volume使得对应的容器能够访问当前宿主机上的指定目录。一旦这个pod离开了宿主机,虽然HostDir的数据不会被永久删除,但是数据也不会迁移到新的宿主机上

GCEPersistentDisk

GCEPersistentDisk在使用之前,用户必须先使用gcloud客户端工具或者GCE API创建一个PD(Persistent Disk)。这种volume最大好处在于,volume可以通过GCE进行管理、备份和迁移,从而实现volume一直保持可用。

NFS

NFS类型的volume允许一块现有的网络硬盘在同一个pod内的容器间共享。也就是NFS服务器对外暴露某个目录作为共享目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值