云容器引擎 CCE-通过动态存储卷使用本地持久卷:使用kubectl自动创建本地持久卷
使用kubectl自动创建本地持久卷
- 使用kubectl连接集群。
- 使用StorageClass动态创建PVC及PV。
- 创建pvc-local.yaml文件。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-local namespace: default annotations: everest.io/csi.volume-name-prefix: test # 可选字段,定义自动创建的底层存储名称前缀 spec: accessModes: - ReadWriteOnce # 本地持久卷必须为ReadWriteOnce resources: requests: storage: 10Gi # 本地持久卷大小 storageClassName: csi-local-topology # StorageClass类型为本地持久卷
表2 关键参数说明 参数
是否必选
描述
everest.io/csi.volume-name-prefix
否
可选字段,集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时支持,且集群中需安装2.4.15及以上版本的Everest插件。
定义自动创建的底层存储名称,实际创建的底层存储名称为“存储卷名称前缀”与“PVC UID”的拼接组合,如果不填写该参数,默认前缀为“pvc”。
取值范围:参数值长度为1~26,且必须是小写字母、数字、中划线,不能以中划线开头或结尾。
例如,存储卷名称前缀设置为“test”,则实际创建的底层存储名称test-{uid}。
storage
是
PVC申请容量,单位为Gi。
storageClassName
是
存储类名称,本地持久卷对应的存储类名称为csi-local-topology。
- 执行以下命令,创建PVC。
kubectl apply -f pvc-local.yaml
- 创建pvc-local.yaml文件。
- 创建应用。
- 创建web-local.yaml文件,本示例中将本地持久卷挂载至/data路径。
apiVersion: apps/v1 kind: StatefulSet metadata: name: web-local namespace: default spec: replicas: 1 selector: matchLabels: app: web-local serviceName: web-local # Headless Service名称 template: metadata: labels: app: web-local spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: pvc-disk #卷名称,需与volumes字段中的卷名称对应 mountPath: /data #存储卷挂载的位置 imagePullSecrets: - name: default-secret volumes: - name: pvc-disk #卷名称,可自定义 persistentVolumeClaim: claimName: pvc-local #已创建的PVC名称 --- apiVersion: v1 kind: Service metadata: name: web-local # Headless Service名称 namespace: default labels: app: web-local spec: selector: app: web-local clusterIP: None ports: - name: web-local targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: ClusterIP
- 执行以下命令,创建一个挂载本地持久存储的应用。
kubectl apply -f web-local.yaml
工作负载创建成功后,容器挂载目录下的数据将会持久化保持,您可以参考验证数据持久化中的步骤进行验证。
- 创建web-local.yaml文件,本示例中将本地持久卷挂载至/data路径。