Updated on 2024-01-29 GMT+08:00

(kubectl) Creating a PV from an Existing OBS Bucket

Scenario

CCE allows you to use an existing OBS bucket to create a PersistentVolume (PV). You can create a PersistentVolumeClaim (PVC) and bind it to the PV.

Notes and Constraints

The following configuration example applies to clusters of Kubernetes 1.13 or earlier.

Procedure

  1. Log in to the OBS console, create an OBS bucket, and record the bucket name and storage class.
  2. Use kubectl to connect to the cluster. For details, see Connecting to a Cluster Using kubectl.
  3. Create two YAML files for creating the PV and PVC. Assume that the file names are pv-obs-example.yaml and pvc-obs-example.yaml.

    touch pv-obs-example.yaml pvc-obs-example.yaml

    Kubernetes Cluster Version

    Description

    YAML Example

    1.11 ≤ K8s version ≤ 1.13

    Clusters from v1.11 to v1.13

    Example YAML

    K8s version = 1.9

    Clusters of v1.9

    Example YAML

    Clusters from v1.11 to v1.13

    • Example YAML file for the PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        name: pv-obs-example 
        annotations:
          pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxiobs
      spec: 
        accessModes: 
        - ReadWriteMany 
        capacity: 
          storage: 1Gi 
        claimRef:
          apiVersion: v1
          kind: PersistentVolumeClaim
          name: pvc-obs-example
          namespace: default
        flexVolume: 
          driver: huawei.com/fuxiobs 
          fsType: obs 
          options: 
            fsType: obs 
            region: ap-southeast-1
            storage_class: STANDARD 
            volumeID: test-obs 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: obs-standard
      Table 1 Key parameters

      Parameter

      Description

      driver

      Storage driver used to mount the volume. Set the driver to huawei.com/fuxiobs for the OBS volume.

      storage_class

      Storage class, including STANDARD (standard bucket) and STANDARD_IA (infrequent access bucket).

      region

      Region where the cluster is located.

      volumeID

      OBS bucket name.

      To obtain the name, log in to the CCE console, choose Resource Management > Storage, click the PVC name in the OBS tab page, and copy the PV name on the PV Details tab page.

      storage

      Storage capacity, in Gi. The value is fixed at 1Gi.

      storageClassName

      Storage class supported by OBS, including obs-standard (standard bucket) and obs-standard-ia (infrequent access bucket).

      spec.claimRef.apiVersion

      The value is fixed at v1.

      spec.claimRef.kind

      The value is fixed at PersistentVolumeClaim.

      spec.claimRef.name

      The value is the same as the name of the PVC created in the next step.

      spec.claimRef.namespace

      The value is the same as the namespace of the PVC created in the next step.

    • Example YAML file for the PVC:
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        annotations:
          volume.beta.kubernetes.io/storage-class: obs-standard
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs
        name: pvc-obs-example
        namespace: default
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 1Gi
        volumeName: pv-obs-example
      Table 2 Key parameters

      Parameter

      Description

      volume.beta.kubernetes.io/storage-class

      Storage class supported by OBS, including obs-standard and obs-standard-ia.

      volume.beta.kubernetes.io/storage-provisioner

      Must be set to flexvolume-huawei.com/fuxiobs.

      volumeName

      Name of the PV.

      storage

      Storage capacity, in Gi. The value is fixed at 1Gi.

    Clusters of v1.9

    • Example YAML file for the PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        name: pv-obs-example 
        namespace: default  
      spec: 
        accessModes: 
        - ReadWriteMany 
        capacity: 
          storage: 1Gi 
        flexVolume: 
          driver: huawei.com/fuxiobs 
          fsType: obs 
          options: 
            fsType: obs 
            kubernetes.io/namespace: default 
            region: ap-southeast-1
            storage_class: STANDARD 
            volumeID: test-obs 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: obs-standard
      Table 3 Key parameters

      Parameter

      Description

      driver

      Storage driver used to mount the volume. Set the driver to huawei.com/fuxiobs for the OBS volume.

      storage_class

      Storage class, including STANDARD (standard bucket) and STANDARD_IA (infrequent access bucket).

      region

      Region where the cluster is located.

      volumeID

      OBS bucket name.

      To obtain the name, log in to the CCE console, choose Resource Management > Storage, click the PVC name in the OBS tab page, and copy the PV name on the PV Details tab page.

      storage

      Storage capacity, in Gi. The value is fixed at 1Gi.

      storageClassName

      Storage class supported by OBS, including obs-standard (standard bucket) and obs-standard-ia (infrequent access bucket).

    • Example YAML file for the PVC:
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        annotations:
          volume.beta.kubernetes.io/storage-class: obs-standard
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs
        name: pvc-obs-example
        namespace: default
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 1Gi
        volumeName: pv-obs-example
        volumeNamespace: default
      Table 4 Key parameters

      Parameter

      Description

      volume.beta.kubernetes.io/storage-class

      Storage class supported by OBS, including obs-standard and obs-standard-ia.

      volume.beta.kubernetes.io/storage-provisioner

      Must be set to flexvolume-huawei.com/fuxiobs.

      volumeName

      Name of the PV.

      storage

      Storage capacity, in Gi. The value is fixed at 1Gi.

  4. Create a PV.

    kubectl create -f pv-obs-example.yaml

  5. Create a PVC.

    kubectl create -f pvc-obs-example.yaml