k8s 存储(PV、PVC、SC、本地存储、NFS)

存储持久化相关三个概念:

  1. PersistentVolume (PV)
    是对具体存储资源的描述,比如NFS、Ceph、GlusterFS等,通过PV可以访问到具体的存储资源;
  2. PersistentVolumeClaim (PVC)
    Pod想要使用具体的存储资源需要对接到PVC,PVC里会定义好Pod希望使用存储的属性,通过PVC再去申请合适的存储资源(PV),匹配到合适的资源后PVC和PV会进行绑定,它们两者是一一对应的;
  3. StorageClass (SC)
    PV可以手动创建,也可以自动创建,当PV需求量非常大时,如果靠手动创建PV就非常麻烦了,SC可以实现自动创建PV,并且会将PVC和PV绑定。

SC会定义两部分内容:

  • pv的属性,比如存储类型、大小;
  • 创建该PV需要用到的存储插件(provisioner),这个provisioner是实现自动创建PV的关键。

API资源对象PV和PVC

  1. PV YAML示例:
    vi testpv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: testpv


spec:
  storageClassName: test-storage
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 500Mi  ##提供500Mi空间
  hostPath:
    path: /tmp/testpv/

说明:
storageClassName: 定义存储类名称,PV和PVC中都会有该字段,目的是为了方便两者匹配绑定在一起。
accessModes定义该pv的访问权限模式,有三种:

  • ReadWriteOnce:存储卷可读可写,但只能被一个节点上的 Pod 挂载;
  • ReadOnlyMany:存储卷只读不可写,可以被任意节点上的 Pod 多次挂载;
  • ReadWriteMany:存储卷可读可写,也可以被任意节点上的 Pod 多次挂载;
    capacity 定义该存储大小。
    hostPath 定义该存储访问路径,这里指的是本地的磁盘。
  1. PVC YAML示例:
    vi testpvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: testpvc


spec:
  storageClassName: test-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi  ##期望申请100Mi空间

应用pv和pvc的YAML

kubectl apply -f testpv.yaml -f testpvc.yaml

查看状态

kubectl get pv,pvc

查看状态是否Bound,如果不是,详细查看:

kubectl describe puv testpvc

实验:
将testpvc的期望100Mi改为1000Mi,查看PV的STATUS

  1. PV和PVC匹配规则
    PV创建好后,会等待PVC与其进行绑定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值