Kubernetes Volume

Volume(存储卷)

Volume是在Pod中能够被多个容器访问的共享目录。k8s中的Volume与Pod的生命周期相同,但是与容器的生命周期不同。
Volume的使用比较简单,大多数情况下在Pod上声明一个Volume,然后在容器引用该Volume并Mount到容器里的某个目录上。

k8s提供了丰富的Volume类型:
1. emptyDir: Pod分配到Node时创建,由k8s自动分配,作为临时目录
2. hostPath:为在Pod上挂载宿主机上的文件或目录,可以用于日志文件的永久保存,访问宿主机docker引擎内部数据结构的容器应用
3. gcePersistentDisk:表示使用了谷歌公有云提供的永久磁盘存放Volume数据
4. awsElastiBlockStore:表示使用了亚马逊公有云提供的EBS Volume存储数据
5. NFS:使用NFS(Network File System, 网络文件系统)
5. 其他类型的Volume

Persistent Volume

PV可以理解成k8s中某个网络存储中对应的一块存储,与Volume类似,但是有以下区别:

  • PV只能是网络存储,不属于任何Node,但可以在每个Node上访问
  • PV并不是定义在Pod上的,而是独立于Pod之外定义

我们通常会先定义一个网络存储,然后从中划出一个“网盘”并挂接到虚拟机上。PV是有状态的,有如下几种状态:

  • Available: 空闲状态
  • Bound:已经绑定到某个PVC上
  • Released:对应的PVC已经删除,但资源还没有被集群收回
  • Failed:PV自动回收失败

下面例子声明了一个PV:

apiVersion: v1
kind: PersistentVolume
metadata:
    name: pv1
spec:  
    capacity:
        storage: 5Gi
    accessModes:
        - ReadWriteOnce
    persistentVolumeReclainmPolicy: Recycle
    storageClassName: slow
    nfs:
        path: /tmp
        server: 172.17.0.2

PV 和 PVC 的生命周期

这里写图片描述
1. 资源供应(Provisioning)
分为静态模式和动态模式
- 静态模式手动创建PV,
- 动态模式午需管理员手动创建PV,而是通过StorageClass的设置对后端存储进行描述,标记为某种“类型”
2. 资源绑定(Binding)
系统根据PVC对资源的请求(存储空间storage和访问模式Access Mode)在已存在的PV中选择一个满足PVC要求的PV,一旦找到,就将该PV与用户定义的PVC进行绑定,然后用户的应用就可以使用这个PVC了。如果不存在,则PVC会无限期处于Pending状态。
3. 资源使用(Using)
Pod使用volume的定义,将PVC挂载到容器内的某个路径进行使用,在容器挂载了一个PVC后,就能被持续独占使用。不过,多个Pod可以同时挂载同一个PVC,应用程序需要考虑多个实例共同访问一块存储空间的问题。
4. 资源释放(Releasing)
当用户对存储资源使用完毕后,用户可以删除PVC,与该PVC绑定的PV将会被标记为“已释放”
5. 资源回收(Reclaiming)
对于PV,管理员可以设定回收策略(Reclaim Policy)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值