Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Uso de bucket de OBS en todas las regiones

De forma predeterminada, un pod puede usar bucket de OBS solo en la misma región. CCE permite que una carga de trabajo utilice bucket de OBS en todas las regiones, lo que puede mejorar la utilización de recursos en algunos escenarios, pero también puede dar como resultado una mayor latencia.

Restricciones

  • OBS solo se puede utilizar en regiones en clústeres de CCE de v1.15 y v1.19.
  • La versión del complemento más antiguo debe ser 1.2.32 o posterior.
  • El nodo en el que se monta el almacenamiento debe poder acceder a los bucket de OBS. En general, Internet o Direct Connect se utilizan para acceder a los bucket de OBS en todas las regiones. Puede hacer ping al punto de conexión de OBS en el nodo donde se encuentra OBS para comprobar si OBS es accesible.
  • Solo los PV pueden usar buckets de OBS en todas las regiones y, a continuación, se enlazan a PVC. La política de recuperación de energía de PV debe ser Retain. Las clases de almacenamiento no se pueden utilizar para crear de forma dinámica PVC para utilizar bucket de OBS en todas las regiones.

Procedimiento

  1. Cree el ConfigMap de paas-obs-endpoint y configure la región y el punto de conexión de OBS.

    El nombre de ConfigMap se fija a paas-obs-endpoint y el espacio de nombres se fija a kube-system.

    La región y el punto de conexión se establecen en el formato de pares clave-valor. Reemplace <region_name> y <endpoint_address> por valores específicos. For details, see Regiones y puntos de conexión. Utilice comas (,) para separar varios valores.

    Ejemplo: {"ap-southeast-1": "https://obs.ap-southeast-1.myhuaweicloud.com:443", "ap-southeast-3": "https://obs.ap-southeast-3.myhuaweicloud.com:443"}

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: paas-obs-endpoint   # The value must be paas-obs-endpoint.
      namespace: kube-system    # The value must be kube-system.
    data:
      obs-endpoint: |
        {"<region_name>": "<endpoint_address>"}

  2. Cree un PV.

    Establezca everest.io/region en la región donde se encuentra OBS.
    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: testing-abc
      annotations:
        pv.kubernetes.io/bound-by-controller: 'yes'
        pv.kubernetes.io/provisioned-by: everest-csi-provisioner
    spec:
      capacity:
        storage: 1Gi
      csi:
        driver: obs.csi.everest.io
        volumeHandle: testing-abc             # OBS bucket name
        fsType: s3fs                          # obsfs indicates to create a parallel file system (recommended), and s3fs indicates to create an object bucket.
        volumeAttributes:
          everest.io/obs-volume-type: STANDARD
          everest.io/region: <region_name>       # Region where the OBS bucket resides. Replace it with a specific value.
          storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
        nodePublishSecretRef:                 # AK/SK used for mounting an OBS bucket
          name: test-user
          namespace: default
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain   # The value must be Retain.
      storageClassName: csi-obs
      volumeMode: Filesystem

    nodePublishSecretRef es la clave de acceso (AK/SK) utilizada para montar el volumen de almacenamiento de objetos. Necesita usar la AK/SK para crear un secreto, que se usará al crear un PV. Para obtener más información, véase Uso de una AK/SK personalizada para montar un volumen de OBS.

  3. Cree un PVC.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-test-abc
      namespace: default
      annotations:
        everest.io/obs-volume-type: STANDARD                         # OBS bucket type. Currently, standard (STANDARD) and infrequent access (WARM) are supported.
        csi.storage.k8s.io/fstype: s3fs                              # File type. obsfs indicates to create a parallel file system (recommended), and s3fs indicates to create an OBS bucket.
        volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner
    spec:
      accessModes:
      - ReadWriteMany             # For object storage, the value must be ReadWriteMany.
      resources:
        requests:
          storage: 1Gi            # Storage capacity of a PVC. This field is valid only for verification (fixed to 1, cannot be empty or 0). The value setting does not take effect for OBS buckets.
      storageClassName: csi-obs   # Storage class name. For object storage, the value is fixed to csi-obs.
      volumeName: testing-abc     # PV name

  4. Cree una carga de trabajo, seleccione el PVC en la opción de almacenamiento de datos de la configuración de contenedor y agregue el PVC creado. Si la carga de trabajo se crea correctamente, el bucket de OBS se puede utilizar en todas las regiones.

    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
       name: obs-deployment-example                       # Workload name
      namespace: default 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: obs-deployment-example 
      template: 
        metadata: 
          labels: 
            app: obs-deployment-example 
        spec: 
          containers: 
          - image: nginx
            name: container-0 
            volumeMounts: 
            - mountPath: /tmp                       # Mount path
              name: pvc-obs-example 
          restartPolicy: Always
          imagePullSecrets:
            - name: default-secret
          volumes: 
          - name: pvc-obs-example  
            persistentVolumeClaim: 
              claimName: pvc-test-abc               # PVC name