使用云硬盘动态存储卷
更新时间 2025-05-27 17:20:32
最近更新时间: 2025-05-27 17:20:32
本文介绍如何使用云硬盘动态存储卷。
使用云盘动态存储卷,即无需预先创建云硬盘和PV,只需创建PVC时指定存储类(StorageClass),存储插件cstor-csi就会自动创建云盘实例及对应PV资源。
该模式为推荐使用,您可以更关注工作负载本身的存储需求,无需预先手动创建和配置存储资源,降低底层基础设施的复杂性。
前提条件
确保您已经创建Serverless集群,具体操作请参阅创建Serverless集群。若已有Serverless集群,无需重复操作。
已在插件市场安装存储插件cstor-csi,且插件正常运行。
已在云硬盘控制台创建云盘。
确保kubectl工具已经连接目标集群。
使用云盘动态存储卷(kubectl)
步骤一:创建存储类(StorageClass)
安装cstor-csi存储插件后,默认会创建stor-csi-disk-sas-sc存储类,不需要创建。可执行以下命令查看存储类:
kubectl get sc cstor-csi-disk-sas-sc -oyaml
步骤二:创建持久卷声明(PVC)
示例yaml文件pvc-disk.yaml:
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "test-pvc"
namespace: "default"
spec:
# 访问模式
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "10Gi"
storageClassName: "cstor-csi-disk-ssd-sc"
执行以下命令创建pvc:
kubectl apply -f pvc-disk.yaml
步骤三:创建工作负载
示例yaml文件pod-pvc-disk.yaml:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx-pvc-disk
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx-pvc-disk
serviceName: ""
template:
metadata:
labels:
app: nginx-pvc-disk
spec:
containers:
- image: "registry-huadong1.crs-internal.ctyun.cn/open-source/nginx:1.26-alpine-slim"
imagePullPolicy: "IfNotPresent"
name: "nginx"
resources:
limits:
cpu: "100m"
memory: "256Mi"
requests:
cpu: "100m"
memory: "256Mi"
volumeMounts:
- mountPath: "/mnt/data"
name: "volume1"
volumes:
- name: "volume1"
persistentVolumeClaim:
claimName: "test-pvc"
执行以下命令创建工作负载:
kubectl apply -f pod-pvc-disk.yaml
查看pv和pvc绑定状态:
kubectl get pv
kubectl get pvc
可以看到已经自动创建出了pv,并且pvc已绑定pv:
步骤四:验证数据持久化
登录弹性容器服务管理控制台。
在容器组列表页点击刚才创建的实例。
点击“远程连接”页签,进入到容器内。
向/mnt/data 目录下写一个文件,执行:
echo "Hello World" > /mnt/data/test.log
查看/mnt/data 目录下文件,执行:
cat /mnt/data/test.log
预期结果如下:
退出“远程连接”,使用kubectl删除pod,会触发pod自动重建,等待Pod重新运行正常。
kubectl delete po nginx-pvc-disk-0
对新建Pod,登录弹性容器服务管理控制台,继续执行“远程连接”,进入到容器内查看数据。执行:
cat /mnt/data/test.log
预期结果如下:
以上步骤说明,pod删除重建后,重新挂载云盘,数据仍然存在,说明云硬盘中的数据可持久化保存。