K8s系列之:Persistent Volume

K8s系列之:Persistent Volume

Volume是定义在Pod上的,属于计算资源的一部分,实际上,网络存储是相对独立于计算资源存在的一种实体资源。比如在使用虚拟机的情况下,通常会先定义一个网络存储,然后从中划出一个网盘并挂接到虚拟机上。

Persistent Volume(PV)和与之相关联的Persistent Volume Claim(PVC)起到了类似的作用。

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

  • PV只能是网络存储,不属于任何Node,但可以在每个Node上访问
  • PV并不是定义在Pod上的,而是独立于Pod之外定义
  • PV目前支持的类型包括:gcePersistentDisk、awsElasticBlockStore、AzureFile、AzureDisk、FC(Fibre Channel)、Flocker、NFS、iSCSI、RBD(Rados Block Device)、CephFS、Cinder、GlusterFS、VsphereVolume、

示例:给出NFS类型PV的一个yaml定义文件,声明了需要5Gi的存储空间

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0003
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    path: /somepath
    server: 172.17.0.2

比较重要的是PV的accessModes属性,目前有以下类型:

  • ReadWriteOnce:读写权限,并且只能被单个Node挂载
  • ReadOnlyMany:只读权限,允许被多个Node挂载
  • ReadWriteMany:读写权限,允许被多个Node挂载

某个Pod想申请某种类型的PV,则首先需要定义一个PersistentVolumeClaim(PVC)对象:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi

然后在Pod的Volume定义中引用上述PVC即可:

volumes:
  - name: mypd
    persistentVolumeClaim:
      claimName: myclaim

PV是有状态的对象,有以下几种状态:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐骑行^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值