云容器引擎 CCE-通过动态存储卷使用本地持久卷:使用kubectl自动创建本地持久卷

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

使用kubectl自动创建本地持久卷

  1. 使用kubectl连接集群。
  2. 使用StorageClass动态创建PVC及PV。

    1. 创建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。

    2. 执行以下命令,创建PVC。
      kubectl apply -f pvc-local.yaml

  3. 创建应用。

    1. 创建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
    2. 执行以下命令,创建一个挂载本地持久存储的应用。
      kubectl apply -f web-local.yaml

      工作负载创建成功后,容器挂载目录下的数据将会持久化保持,您可以参考验证数据持久化中的步骤进行验证。

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