云容器引擎 CCE-有状态负载动态挂载本地持久卷:通过kubectl命令行动态挂载本地持久卷

时间:2024-05-31 08:37:31

通过kubectl命令行动态挂载本地持久卷

  1. 使用kubectl连接集群。
  2. 创建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。

  3. 执行以下命令,创建一个挂载本地持久卷存储的应用。

    kubectl apply -f statefulset-local.yaml

    工作负载创建成功后,您可以尝试验证数据持久化

support.huaweicloud.com/usermanual-cce/cce_10_0635.html