资讯专栏INFORMATION COLUMN

通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法

Rindia / 1967人阅读

摘要:的本身是无状态的生命周期通常比较短,只要出现了异常,就会自动创建一个新的来代替它。为了实现内数据的存储管理,引入了两个资源持久卷,以下简称和持久卷申请,以下简称。跟里的卷类似,不过会有独立于的生命周期。

Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它。

而容器产生的数据,会随着Pod消亡而自动消失。

为了实现Pod内数据的存储管理,Kubernetes引入了两个API资源:Persistent Volume(持久卷,以下简称PV)和Persistent Volume Claim(持久卷申请,以下简称PVC)。

PV是Kubernetes集群中的一种网络存储实现,跟Node一样,也是属于集群的资源。

PV跟Docker里的Volume(卷)类似,不过会有独立于Pod的生命周期。

使用kubectl get pv查看列表:

而PVC是用户的一个请求,跟Pod类似。Pod消费Node的资源,PVC消费PV的资源。

Pod 能够申请特定的资源(CPU和内存);PVC能够申请特定的尺寸和访问模式,例如可以加载一个读写实例或者多个只读实例,(就是上图kubectl get pvc返回结果的Access Mode这一列的值RWO, ROX等等)而无须感知这些实例背后具体的存储实现。

我们来看一个具体的PVC实例,名称为nginx-pvc:

kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-pvc spec: storageClassName: default accessModes: - ReadOnlyMany resources: requests: storage: 1Gi

使用命令kubectl create -f pvc.yaml创建这个yaml文件定义的persistent volume claim:

然后定义一个pod,消费这个名为nginx-pvc的persistent volume claim:

使用kubectl describe pvc nginx-pvc查看这个persistent volume claim对应生成的persistent volume:

现在我用命令kubectl cp train.jpg nginx-storage-pod:/usr/share/nginx/html将两个文件train.jpg和index.html文件拷贝到pod内部文件路径/usr/share/nginx/html下面:

现在切换到nginx-storage-pod pod里,在/usr/share/nginx/html目录下果然发现了这两个文件:

接下来我定义了另一个pod,同样适用nginx-pvc这个PVC:

创建完这个pod之后,then kubectl exec -ti another ash 进入pod内部/usr/share/nginx/html,同样发现了index.html和train.jpg.

这个例子说明persistent volume claim能够用于在多个pod间共享持久化数据。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27554.html

相关文章

  • 通过一个例子学习KubernetesPersistentVolumeClaim用法

    摘要:的本身是无状态的生命周期通常比较短,只要出现了异常,就会自动创建一个新的来代替它。为了实现内数据的存储管理,引入了两个资源持久卷,以下简称和持久卷申请,以下简称。跟里的卷类似,不过会有独立于的生命周期。 Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它。 而容器产生的数据,会随着...

    mindwind 评论0 收藏0
  • 通过一个例子学习KubernetesPersistentVolumeClaim用法

    摘要:的本身是无状态的生命周期通常比较短,只要出现了异常,就会自动创建一个新的来代替它。为了实现内数据的存储管理,引入了两个资源持久卷,以下简称和持久卷申请,以下简称。跟里的卷类似,不过会有独立于的生命周期。 Kubernetes的pod本身是无状态的(stateless),生命周期通常比较短,只要出现了异常,Kubernetes就会自动创建一个新的Pod来代替它。 而容器产生的数据,会随着...

    Bamboy 评论0 收藏0
  • Kubernetes容器存储接口(CSI)GA了

    摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...

    zengdongbao 评论0 收藏0
  • Kubernetes容器存储接口(CSI)GA了

    摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...

    yanwei 评论0 收藏0
  • 猫头鹰深夜翻译:持久化容器存储

    摘要:如果我们的容器使用,文件如下在这个例子中,我们可以重复创建和销毁,同一个持久存储会被提供给新的,无论容器位于哪个节点上。 前言 临时性存储是容器的一个很大的买点。根据一个镜像启动容器,随意变更,然后停止变更重启一个容器。你看,一个全新的文件系统又诞生了。 在docker的语境下: # docker run -it centos [root@d42876f95c6a /]# echo H...

    tianhang 评论0 收藏0

发表评论

0条评论

Rindia

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<