云容器引擎 CCE-有状态负载动态挂载本地持久卷:通过kubectl命令行动态挂载本地持久卷
通过kubectl命令行动态挂载本地持久卷
- 使用kubectl连接集群。
- 创建statefulset-local.yaml文件,本示例中将本地持久卷挂载至/data路径。
apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-local namespace: default spec: selector: matchLabels: app: statefulset-local template: metadata: labels: app: statefulset-local spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: pvc-local # 需与volumeClaimTemplates字段中的名称对应 mountPath: /data # 存储卷挂载的位置 imagePullSecrets: - name: default-secret serviceName: statefulset-local # Headless Service名称 replicas: 2 volumeClaimTemplates: - 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类型为本地持久卷 --- apiVersion: v1 kind: Service metadata: name: statefulset-local # Headless Service名称 namespace: default labels: app: statefulset-local spec: selector: app: statefulset-local clusterIP: None ports: - name: statefulset-local targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: ClusterIP
表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。
- 执行以下命令,创建一个挂载本地持久卷存储的应用。
kubectl apply -f statefulset-local.yaml
工作负载创建成功后,您可以尝试验证数据持久化。