点击领取2000元阿里云代金券,付款抵现金用,云服务器69元/年限时抢>>> 点击咨询成为阿里云VIP客户享永久折扣>>>
点击领取2860元腾讯云代金券,付款抵现金用,云服务器88元/年限时抢>>> 点击成为腾讯云VIP客户享永久折扣优惠>>> 点击进入华为云最新优惠活动现场>>> 点击成为华为云VIP客户享永久折扣优惠>>>
云容器实例当前支持在容器中使用如下三种持久化存储。
- 云硬盘(Elastic Volume Service,EVS),EVS是一种块存储服务,提供高I/O(sas)、超高I/O(ssd)和普通I/O(sata)三种类型云硬盘。
- 弹性文件服务(Scalable File Service,SFS),SFS提供共享的文件存储,支持标准文件协议类型(nfs-rw)。SFS提供了SFS和SFS Turbo两种类型的文件系统。
- SFS为用户提供一个完全托管的共享文件存储,能够弹性伸缩至PB规模,具备高可用性和持久性,为海量数据、高带宽型应用提供有力支持。适用于多种应用场景,包括HPC、媒体处理、文件共享、内容管理和Web服务等。
- SFS Turbo为用户提供一个完全托管的共享文件存储,能够弹性伸缩至320TB规模,具备高可用性和持久性,为海量的小文件、低延迟高IOPS型应用提供有力支持。适用于多种应用场景,包括高性能网站、日志存储、压缩解压、DevOps、企业办公、容器应用等。
目前“华东-上海一”区域不支持SFS Turbo。
- 对象存储服务(Object Storage Service,OBS),OBS是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。
上面三种存储中,OBS的使用方式最为直接,云容器实例当前支持直接以SDK方式使用对象存储服务(OBS)。您可以在应用程序中使用SDK方式使用OBS,将应用程序打包成容器镜像,在云容器实例中使用镜像创建负载。OBS的SDK的下载及使用方法请参见https://developer.huaweicloud.com/sdk?OBS。
EVS和SFS的使用有个挂载的过程,下面将介绍如何使用EVS和SFS。
PersistentVolumeClaim(PVC)Kubernetes提供PVC专门用于持久化存储的申请,PVC可以让您无需关心底层存储资源如何创建、释放等动作,而只需要申明您需要何种类型的存储资源、多大的存储空间。
在实际使用中,您可以通过Pod中的Volume来关联PVC,通过PVC使用持久化存储,如图1所示。
图1 使用持久化存储
创建PVC- 通过如下定义创建PVC,这个定义申请了一块大小为100G的SATA型云硬盘。
如果需要创建加密类型的云硬盘存储卷,在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: sata
accessModes为存储访问模式,支持如下3种模式: - ReadWriteOnce:可以被单个节点以读/写模式挂载
- ReadOnlyMany:可以被多个节点以只读模式挂载
- ReadWriteMany:可以被多个节点以读/写模式挂载
storageClassName表示申请的存储类型,当前支持如下4个参数:
- sata:SATA(普通I/O)型EVS硬盘
- sas:SAS(高I/O)型EVS硬盘
- ssd:SSD(超高I/O)型EVS硬盘
- nfs-rw:标准文件协议类型SFS文件存储
- 通过如下定义创建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中。
- 写入上面申请的文件存储(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
|