使用persistentvolumeclaim申请持久化存储-凯发k8国际娱乐官网入口
云容器实例当前支持在容器中使用如下三种持久化存储。
- (elastic volume service,evs),evs是一种块存储服务,提供高i/o(sas)、超高i/o(ssd)和普通i/o(上一代产品)三种类型云硬盘。
- (scalable file service,sfs),sfs提供共享的文件存储,支持标准文件协议类型(nfs-rw)。sfs提供了sfs、sfs3.0和sfs turbo三种类型的文件系统。
- sfs、sfs3.0为用户提供一个完全托管的共享文件存储,能够弹性伸缩至pb规模,具备高可用性和持久性,为海量数据、高带宽型应用提供有力支持。适用于多种应用场景,包括hpc、媒体处理、文件共享、内容管理和web服务等。
如需在vpc中访问sfs 3.0容量型,请先在vpc中购买sfs 3.0容量型的vpc终端节点,可参考。如果已经购买了vpc终端节点,则不需要购买。
- sfs turbo为用户提供一个完全托管的共享文件存储,能够弹性伸缩至320tb规模,具备高可用性和持久性,为海量的小文件、低延迟高iops型应用提供有力支持。适用于多种应用场景,包括高性能网站、日志存储、压缩解压、devops、企业办公、容器应用等。
- sfs、sfs3.0为用户提供一个完全托管的共享文件存储,能够弹性伸缩至pb规模,具备高可用性和持久性,为海量数据、高带宽型应用提供有力支持。适用于多种应用场景,包括hpc、媒体处理、文件共享、内容管理和web服务等。
- (object storage service,obs),obs是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。
上面三种存储中,obs的使用方式最为直接,云容器实例当前支持直接以sdk方式使用对象存储服务(obs)。您可以在应用程序中使用sdk方式使用obs,将应用程序打包成容器镜像,在云容器实例中使用镜像创建负载。obs的sdk的下载及使用方法请参见。
evs和sfs的使用有个挂载的过程,下面将介绍如何使用evs和sfs。
persistentvolumeclaim(pvc)
kubernetes提供pvc专门用于持久化存储的申请,pvc可以让您无需关心底层存储资源如何创建、释放等动作,而只需要申明您需要何种类型的存储资源、多大的存储空间。
在实际使用中,您可以通过pod中的volume来关联pvc,通过pvc使用持久化存储,如图1所示。
创建pvc
- 通过如下定义创建pvc,这个定义申请了一块大小为100g的sas型云硬盘。
如果需要创建加密类型的云硬盘存储卷,在metadata.annotations中增加paas.storage.io/cryptkeyid字段即可。
apiversion: v1 kind: persistentvolumeclaim metadata: name: pvc-evs namespace: namespaces-test annotations: { paas.storage.io/cryptkeyid: ee9b610c-e356-11e9-aadc-d0efc1b3bb6b } spec: accessmodes: - readwritemany resources: requests: storage: 100gi storageclassname: sas
accessmodes为存储访问模式,支持如下3种模式:- readwriteonce:可以被单个节点以读/写模式挂载
- readonlymany:可以被多个节点以只读模式挂载
- readwritemany:可以被多个节点以读/写模式挂载
storageclassname表示申请的存储类型,当前支持如下4个参数:
- sas:sas(高i/o)型evs硬盘
- ssd:ssd(超高i/o)型evs硬盘
- nfs-rw:标准文件协议类型sfs文件存储
- csi-sfs:sfs 3.0容量型弹性文件服务
- 通过如下定义创建pvc,这个定义申请了一块大小为100g的文件存储。
如果需要创建加密类型的文件存储卷,在metadata.annotations中增加paas.storage.io/cryptkeyid、paas.storage.io/cryptalias和paas.storage.io/cryptdomainid即可。
apiversion: v1 kind: persistentvolumeclaim metadata: name: pvc-sfs namespace: namespace-test annotations: { paas.storage.io/cryptkeyid: ee9b610c-e356-11e9-aadc-d0efc1b3bb6b paas.storage.io/cryptalias: sfs/default paas.storage.io/cryptdomainid: d6912480-c3d6-4e9e-8c70-38afeea434c3 volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxinfs } spec: accessmodes: - readwritemany resources: requests: storage: 100gi storageclassname: nfs-rw
使用pvc
使用pvc申请到存储资源后,您可以在pod中使用volume来关联pvc,并将volume挂载到容器中使用。
下面是的示例中说明了pvc如何在pod中使用,这个pod定义了一个名为“pvc-test-example”的volume,并将这个volume挂载到容器的“/tmp/volume0”路径,这样您写入到/tmp的数据就是写到名为pvc-test的pvc中。
- 写入上面申请的sas型云硬盘中
apiversion: v1 kind: pod metadata: name: nginx labels: app: nginx spec: containers: - image: nginx:latest name: container-0 resources: limits: cpu: 500m memory: 1024mi requests: cpu: 500m memory: 1024mi volumemounts: - mountpath: "/tmp/volume0" # 将pvc挂载到容器的/tmp/volume0路径 name: pvc-test-example # volume的名称 volumes: # 定义volume,关联pvc - name: pvc-test-example persistentvolumeclaim: claimname: pvc-test # pvc的名称 imagepullsecrets: - name: imagepull-secret
- 写入上面申请的文件存储(storageclassname设置为nfs-rw型)中。
当创建pvc申请文件存储(storageclassname设置为nfs-rw型)时,在volumemounts中可设置挂载子路径,即文件存储根路径下子路径。
apiversion: v1 kind: pod metadata: name: nginx labels: app: nginx spec: containers: - image: nginx:latest name: container-0 resources: limits: cpu: 500m memory: 1024mi requests: cpu: 500m memory: 1024mi volumemounts: - mountpath: "/tmp/volume0" # 将pvc挂载到容器的/tmp/volume0路径 subpath: "abc" # 文件存储根路径下子路径,如果不存在会自动在文件存储中创建。该子路径必须为相对路径。 name: pvc-test-example # volume的名称 volumes: # 定义volume,关联pvc - name: pvc-test-example persistentvolumeclaim: claimname: pvc-test # pvc的名称 imagepullsecrets: - name: imagepull-secret
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨