本文介绍如何创建云盘类型存储类和存储卷声明,以及工作负载如何使用云盘动态存储卷。
chmod
和chown
操作,导致挂载时间延长。使用云盘类型动态存储卷的详细操作步骤和参数配置如下:
配置项 | 说明 |
---|---|
名称 | 根据系统提示,自定义存储类名称,需确保存储类名称在集群内唯一。 |
存储类型 | 存储类型包括:云盘、文件存储。本场景选择 云盘,即使用云服务器(ECS)提供块存储服务,创建存储类。 |
可用区 | 可用区是同一地域下电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。更多可用区说明,请参见 地域和可用区。 |
计费类型 | 按需选择资源计费类型,目前支持按量计费。 |
云盘类型 | 目前支持的云盘类型包括:极速型 SSD,可根据实际场景选择云盘的性能级别和额外性能包。
说明 配置额外性能将产生额外费用,详细说明参见:云盘额外性能计费。 |
回收策略 | 云盘的回收策略,包括:Delete、Retain。如果数据安全性要求高,推荐使用 Retain 方式以免误删数据。
|
存储卷模式绑定 | 云盘的绑定模式。包括:
|
配置项 | 说明 |
---|---|
命名空间 | 选择存储卷声明所属的命名空间。建议选择您自定义的命名空间,或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述。 |
名称 | 根据系统提示自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。 |
存储类型 | 存储类型包括:云盘、文件存储、对象存储。本场景选择 云盘。 |
访问模式 | 选择存储卷声明的访问方式,目前支持 ReadWriteOnce ,此访问方式支持单点读写。 |
计费类型 | 按需选择资源计费类型,目前支持按量计费。 |
云盘类型 | 不同地域支持的云盘类型可能不同,请按需使用。目前支持 极速型 SSD 两种云盘类型。详细的说明及云盘规格对比,请参见 云盘规格。 说明 不同性能的极速型 SSD 云盘提供的最大 IOPS、最大吞吐量、时延等性能值不同。 |
创建方式 | 存储卷声明的创建方式包括:基于存储类创建、使用已有存储卷。本场景选择 基于存储类创建。 |
存储类 | 自动绑定具有相同存储类,且容量大于或等于当前 PVC 设置的容量大小的存储卷。 |
容量 | 所创建存储卷容量。 |
云盘类型的动态存储卷创建完成后,可通过添加卷的方式挂载到工作负载使用,包括:无状态负载、有状态负载、任务、定时任务、守护进程。
可通过创建工作负载或更新工作负载操作的容器配置步骤,为工作负载添加卷并挂载卷。详细操作,请参见 工作负载。
创建 StorageClass 的 YAML 文件。示例文件storage-class-ebs-essd.yaml
代码如下:
说明
当前支持 ESSD_PL0、ESSD_FlexPL 两种云盘类型。详细的说明及云盘规格对比,请参见 云盘规格。
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ebs-essd-immd-cn-beijing-a parameters: ChargeType: PostPaid type: ESSD_PL0 # 云盘类型,云盘的名称必须大写。包括:ESSD_PL0、ESSD_FlexPL。 ExtraPerformanceType: IOPS # 额外性能类型,包括:IOPS、Balance、Throughput。仅 type 为 ESSD_FlexPL,且云盘容量大于 500 时间生效。 ExtraPerformanceIOPS: 1000 # 额外性能的 IOPS。仅额外性能类型为 IOPS 或 Balance 生效,取值范围 1-50000。 ExtraPerformanceThroughputMB: 100 # 额外性能包的吞吐量。与 ExtraPerformanceIOPS 参数不同时出现,且额外性能类型为 Throughput 时生效。 zone: cn-beijing-a projectName: default provisioner: ebs.csi.volcengine.com reclaimPolicy: Delete volumeBindingMode: Immediate #多 AZ 场景建议使用 Topology
执行以下命令创建 StorageClass。
kubectl apply -f storage-class-ebs-essd.yaml
创建 PVC 的 YAML 文件。示例文件pvc-ebs-essd-dynamic.yaml
代码如下:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-ebs-essd namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: ebs-essd-immd-cn-beijing-a #步骤一中创建的 StorageClass 名称 volumeMode: Filesystem
执行以下命令创建 PVC。
kubectl apply -f pvc-ebs-essd-dynamic.yaml
创建 Deployment 的 YAML 文件。示例文件deployment-nginx-dynamic.yaml
代码如下:
说明
如果有使用弹性容器实例 VCI 的需求,需要在代码的spec.template.metadata.annotations中添加
vke.volcengine.com/burst-to-vci: enforce`。VCI 具备全托管免运维、按需付费、沙箱容器安全隔离等优势。详细介绍,请参见 什么是弹性容器实例。
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nginx-dynamic spec: selector: matchLabels: app: nginx template: metadata: annotations: # vke.volcengine.com/burst-to-vci: enforce # 强制使用 VCI,如果有 VCI 需求需要添加本行注解 labels: app: nginx spec: containers: - name: nginx-c1 image: cr-cn-beijing.volces.com/****/vci-demo-nginx:latest #指定需要部署的镜像文件 ports: - containerPort: 80 name: web volumeMounts: - name: ebs-essd-volume0 mountPath: /data volumes: - name: ebs-essd-volume0 persistentVolumeClaim: claimName: pvc-ebs-essd #步骤二中创建的 PVC 名称
执行以下命令创建 Deployment。
kubectl apply -f deployment-nginx-dynamic.yaml