searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

k8s容器存储之PVC与PV绑定操作

2023-09-20 09:14:17
39
0

一、背景介绍

      K8S创建pod资源的过程中,必然涉及到数据存储。因此,K8s 为了使用户能够正常请求存储资源,避免处理存储设施细节,引入了 PVC和 PV。 

二、相关概念

     (1)PVC(Persistent Volume Claim)是对PV的申请,它描述了用户对持久化存储的需求。使用PVC,用户可以声明对存储资源的要求,如容量、访问模式、存储类别等。PVC会与PV进行绑定,从而使用户可以在容器中使用持久化存储。

     (2)PV(Persistent Volume)代表持久化存储的实际资源,它可以是物理存储设备(如磁盘等),也可以是云存储提供商的服务(如弹性文件等)。PV通常由集群管理员预先配置并提供给用户使用。

三、创建PV的yaml文件

      说明:yaml文件里创建了三个PV,分别具有不同的accessModes、storage。pv供应方式为静态供应,由用户进行创建。

# vim pvtest1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvtest1
  labels:
    name: pvtest1
spec:
  nfs:
    path: /data/volumes/pvtest1
    server: nfs
  accessModes: ["ReadWriteMany"]
  capacity:
    storage: 6Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvtest2
  labels:
    name: pvtest2
spec:
  nfs:
    path: /data/volumes/pvtest2
    server: nfs
  accessModes: ["ReadWriteOnce"]
  capacity:
    storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvtest3
  labels:
    name: pvtest3
spec:
  nfs:
    path: /data/volumes/pvtest3
    server: nfs
  accessModes: ["ReadWriteMany"]
  capacity:
    storage: 2Gi

四、创建PVC的yaml文件

      说明:yaml文件里创建了一个PVC,accessModes模式为RWX、storage大小为5Gi。

# vim mypvctest1.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvctest1
  namespace: dev
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 5Gi    

五、结果展示以及原理分析

[root@master src]# kubectl apply -f mypvctest1.yaml 
persistentvolumeclaim/mypvctest1 created

[root@master src]# kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM            STORAGECLASS   REASON   AGE
pvtest1   6Gi        RWX            Retain           Bound       dev/mypvctest1                           8m4s
pvtest2   5Gi        RWO            Retain           Available                                            8m4s
pvtest3   2Gi        RWX            Retain           Available   

[root@master src]# kubectl get pvc -n dev
NAME         STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mypvctest1   Bound    pvtest1   6Gi        RWX                           12m

      从结果来看,名字为mypvtest1的PVC和名字为pvtest1的PV进行了绑定,绑定的操作是由k8s组件pv controller完成。在绑定的过程中,pv controller需要查看PVC和PV的accessModes模式storage大小等进行匹配,需要特别注意的是,PV的storage大小必须大于等于PVC里申请的storage大小。

 

0条评论
作者已关闭评论
小北
3文章数
0粉丝数
小北
3 文章 | 0 粉丝
小北
3文章数
0粉丝数
小北
3 文章 | 0 粉丝
原创

k8s容器存储之PVC与PV绑定操作

2023-09-20 09:14:17
39
0

一、背景介绍

      K8S创建pod资源的过程中,必然涉及到数据存储。因此,K8s 为了使用户能够正常请求存储资源,避免处理存储设施细节,引入了 PVC和 PV。 

二、相关概念

     (1)PVC(Persistent Volume Claim)是对PV的申请,它描述了用户对持久化存储的需求。使用PVC,用户可以声明对存储资源的要求,如容量、访问模式、存储类别等。PVC会与PV进行绑定,从而使用户可以在容器中使用持久化存储。

     (2)PV(Persistent Volume)代表持久化存储的实际资源,它可以是物理存储设备(如磁盘等),也可以是云存储提供商的服务(如弹性文件等)。PV通常由集群管理员预先配置并提供给用户使用。

三、创建PV的yaml文件

      说明:yaml文件里创建了三个PV,分别具有不同的accessModes、storage。pv供应方式为静态供应,由用户进行创建。

# vim pvtest1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvtest1
  labels:
    name: pvtest1
spec:
  nfs:
    path: /data/volumes/pvtest1
    server: nfs
  accessModes: ["ReadWriteMany"]
  capacity:
    storage: 6Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvtest2
  labels:
    name: pvtest2
spec:
  nfs:
    path: /data/volumes/pvtest2
    server: nfs
  accessModes: ["ReadWriteOnce"]
  capacity:
    storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvtest3
  labels:
    name: pvtest3
spec:
  nfs:
    path: /data/volumes/pvtest3
    server: nfs
  accessModes: ["ReadWriteMany"]
  capacity:
    storage: 2Gi

四、创建PVC的yaml文件

      说明:yaml文件里创建了一个PVC,accessModes模式为RWX、storage大小为5Gi。

# vim mypvctest1.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvctest1
  namespace: dev
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 5Gi    

五、结果展示以及原理分析

[root@master src]# kubectl apply -f mypvctest1.yaml 
persistentvolumeclaim/mypvctest1 created

[root@master src]# kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM            STORAGECLASS   REASON   AGE
pvtest1   6Gi        RWX            Retain           Bound       dev/mypvctest1                           8m4s
pvtest2   5Gi        RWO            Retain           Available                                            8m4s
pvtest3   2Gi        RWX            Retain           Available   

[root@master src]# kubectl get pvc -n dev
NAME         STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mypvctest1   Bound    pvtest1   6Gi        RWX                           12m

      从结果来看,名字为mypvtest1的PVC和名字为pvtest1的PV进行了绑定,绑定的操作是由k8s组件pv controller完成。在绑定的过程中,pv controller需要查看PVC和PV的accessModes模式storage大小等进行匹配,需要特别注意的是,PV的storage大小必须大于等于PVC里申请的storage大小。

 

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0