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

(kubectl) Creación de un PV a partir de un disco de EVS existente

Notes and Constraints

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

Procedimiento

  1. Inicie sesión en la consola de EVS, cree un disco de EVS y registre el ID de volumen, la capacidad y el tipo de disco del disco de EVS.
  2. Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  3. Cree dos archivos YAML para crear el PersistentVolume (PV) y el PersistentVolumeClaim (PVC). Suponga que los nombres de archivo son pv-evs-example.yaml y pvc-evs-example.yaml.

    touch pv-evs-example.yaml pvc-evs-example.yaml

    Versión de clúster de Kubernetes

    Descripción

    Ejemplo de YAML

    1.11.7 ≤ versión de K8s ≤ 1.13

    Clústeres de v1.11.7 a v1.13

    Ejemplo de YAML

    1.11 ≤ versión de K8s < 1.11.7

    Clústeres de v1.11 a v1.11.7

    Ejemplo de YAML

    Versión de K8s = 1.9

    Clústeres de v1.9

    Ejemplo de YAML

    Clústeres de v1.11.7 a v1.13

    • Ejemplo de archivo YAML para el PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone:  ap-southeast-1a
        annotations:
          pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxivol
        name: pv-evs-example 
      spec: 
        accessModes: 
        - ReadWriteOnce 
        capacity: 
          storage: 10Gi 
        claimRef:
          apiVersion: v1
          kind: PersistentVolumeClaim
          name: pvc-evs-example
          namespace: default
        flexVolume: 
          driver: huawei.com/fuxivol 
          fsType: ext4 
          options:
            disk-mode: SCSI
            fsType: ext4 
            volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: sas
      Tabla 1 Parámetros de clave

      Parámetro

      Descripción

      failure-domain.beta.kubernetes.io/region

      La región donde se encuentra el clúster.

      failure-domain.beta.kubernetes.io/zone

      La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      storage

      Capacidad de volumen de EVS en la unidad de Gi.

      storageClassName

      Tipo del disco de EVS. Valores admitidos: High I/O (SAS) and Ultra-high I/O (SSD)

      driver

      Controlador de almacenamiento.

      Para los discos de EVS, establezca este parámetro en huawei.com/fuxivol.

      volumeID

      ID de volumen del disco de EVS.

      Para obtener el ID de volumen, inicie sesión en la consola de CCE, elija Resource Management > Storage, haga clic en el nombre de PVC en la página de ficha EVS y copie el ID de PVC en la página de detalles de PVC.

      disk-mode

      Tipo de dispositivo del disco de EVS. El valor es VBD o SCSI.

      Para clústeres de CCE anteriores a v1.11.7, no es necesario establecer este campo. El valor predeterminado es VBD.

      Este campo es obligatorio para los clústeres de CCE de v1.11.7 a v1.13 que usan Linux x86. Como los volúmenes de EVS aprovisionados dinámicamente por un PVC se crean a partir de discos SCSI de EVS, se recomienda elegir SCSI al crear volúmenes manualmente (PV estáticos). Los volúmenes en el modo VBD todavía se pueden utilizar después de las actualizaciones del clúster.

      spec.claimRef.apiVersion

      El valor se fija en v1.

      spec.claimRef.kind

      El valor se fija en PersistentVolumeClaim.

      spec.claimRef.name

      Nombre de PVC. El valor es el mismo que el nombre del PVC creado en el siguiente paso.

      spec.claimRef.namespace

      Espacio de nombres del PVC. El valor es el mismo que el espacio de nombres del PVC creado en el siguiente paso.

    • Ejemplo de archivo YAML para el PVC:
      apiVersion: v1  
      kind: PersistentVolumeClaim  
      metadata:  
        annotations:  
          volume.beta.kubernetes.io/storage-class: sas
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone: ap-southeast-1a     
        name: pvc-evs-example 
        namespace: default  
      spec:  
        accessModes:  
        - ReadWriteOnce  
        resources:  
          requests:  
            storage: 10Gi
        volumeName: pv-evs-example
      Tabla 2 Parámetros de clave

      Parámetro

      Descripción

      volume.beta.kubernetes.io/storage-class

      Clase de almacenamiento, que debe ser la misma que la del PV existente.

      volume.beta.kubernetes.io/storage-provisioner

      El campo debe estar establecido en flexvolume-huawei.com/fuxivol.

      failure-domain.beta.kubernetes.io/region

      La región donde se encuentra el clúster.

      failure-domain.beta.kubernetes.io/zone

      La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      storage

      Capacidad solicitada en el PVC, en Gi.

      El valor debe ser el mismo que el tamaño de almacenamiento del PV existente.

      volumeName

      Nombre del PV.

    Clústeres de v1.11 a v1.11.7

    • Ejemplo de archivo YAML para el PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone:  ap-southeast-1a
        name: pv-evs-example 
      spec: 
        accessModes: 
        - ReadWriteOnce
        capacity: 
          storage: 10Gi 
        flexVolume: 
          driver: huawei.com/fuxivol 
          fsType: ext4 
          options:
            fsType: ext4 
            volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: sas
      Tabla 3 Parámetros de clave

      Parámetro

      Descripción

      failure-domain.beta.kubernetes.io/region

      La región donde se encuentra el clúster.

      failure-domain.beta.kubernetes.io/zone

      La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      storage

      Capacidad de volumen de EVS en la unidad de Gi.

      storageClassName

      Tipo del disco de EVS. Valores admitidos: High I/O (SAS) and Ultra-high I/O (SSD)

      driver

      Controlador de almacenamiento.

      Para los discos de EVS, establezca este parámetro en huawei.com/fuxivol.

      volumeID

      ID de volumen del disco de EVS.

      Para obtener el ID de volumen, inicie sesión en la consola de CCE, elija Resource Management > Storage, haga clic en el nombre de PVC en la página de ficha EVS y copie el ID de PVC en la página de detalles de PVC.

      disk-mode

      Tipo de dispositivo del disco de EVS. El valor es VBD o SCSI.

      Para clústeres de CCE anteriores a v1.11.7, no es necesario establecer este campo. El valor predeterminado es VBD.

      Este campo es obligatorio para los clústeres de CCE de v1.11.7 a v1.13 que usan Linux x86. Como los volúmenes de EVS aprovisionados dinámicamente por un PVC se crean a partir de discos SCSI de EVS, se recomienda elegir SCSI al crear volúmenes manualmente (PV estáticos). Los volúmenes en el modo VBD todavía se pueden utilizar después de las actualizaciones del clúster.

    • Ejemplo de archivo YAML para el PVC:
      apiVersion: v1  
      kind: PersistentVolumeClaim  
      metadata:  
        annotations:  
          volume.beta.kubernetes.io/storage-class: sas
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone: ap-southeast-1a     
        name: pvc-evs-example 
        namespace: default  
      spec:  
        accessModes:  
        - ReadWriteOnce
        resources:  
          requests:  
            storage: 10Gi
        volumeName: pv-evs-example
      Tabla 4 Parámetros de clave

      Parámetro

      Descripción

      volume.beta.kubernetes.io/storage-class

      Clase de almacenamiento. El valor puede ser sas o ssd. El valor debe ser el mismo que el del PV existente.

      volume.beta.kubernetes.io/storage-provisioner

      El campo debe estar establecido en flexvolume-huawei.com/fuxivol.

      failure-domain.beta.kubernetes.io/region

      La región donde se encuentra el clúster.

      failure-domain.beta.kubernetes.io/zone

      La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      storage

      Capacidad solicitada en el PVC, en Gi.

      El valor debe ser el mismo que el tamaño de almacenamiento del PV existente.

      volumeName

      Nombre del PV.

    Clústeres de v1.9

    • Ejemplo de archivo YAML para el PV:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone:  ap-southeast-1a
        name: pv-evs-example 
        namespace: default 
      spec: 
        accessModes: 
        - ReadWriteOnce
        capacity: 
          storage: 10Gi 
        flexVolume: 
          driver: huawei.com/fuxivol 
          fsType: ext4 
          options: 
            fsType: ext4 
            kubernetes.io/namespace: default 
            volumeID: 0992dbda-6340-470e-a74e-4f0db288ed82 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: sas
      Tabla 5 Parámetros de clave

      Parámetro

      Descripción

      failure-domain.beta.kubernetes.io/region

      La región donde se encuentra el clúster.

      failure-domain.beta.kubernetes.io/zone

      La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      storage

      Capacidad de volumen de EVS en la unidad de Gi.

      storageClassName

      Tipo del disco de EVS. Valores admitidos: High I/O (SAS) and Ultra-high I/O (SSD)

      driver

      Controlador de almacenamiento.

      Para los discos de EVS, establezca este parámetro en huawei.com/fuxivol.

      volumeID

      ID de volumen del disco de EVS.

      Para obtener el ID de volumen, inicie sesión en la consola de CCE, elija Resource Management > Storage, haga clic en el nombre de PVC en la página de ficha EVS y copie el ID de PVC en la página de detalles de PVC.

      disk-mode

      Tipo de dispositivo del disco de EVS. El valor es VBD o SCSI.

      Para clústeres de CCE anteriores a v1.11.7, no es necesario establecer este campo. El valor predeterminado es VBD.

      Este campo es obligatorio para los clústeres de CCE de v1.11.7 a v1.13 que usan Linux x86. Como los volúmenes de EVS aprovisionados dinámicamente por un PVC se crean a partir de discos SCSI de EVS, se recomienda elegir SCSI al crear volúmenes manualmente (PV estáticos). Los volúmenes en el modo VBD todavía se pueden utilizar después de las actualizaciones del clúster.

    • Ejemplo de archivo YAML para el PVC:
      apiVersion: v1  
      kind: PersistentVolumeClaim  
      metadata:  
        annotations:  
          volume.beta.kubernetes.io/storage-class: sas
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxivol 
        labels: 
          failure-domain.beta.kubernetes.io/region: ap-southeast-1
          failure-domain.beta.kubernetes.io/zone: ap-southeast-1a
        name: pvc-evs-example 
        namespace: default  
      spec:  
        accessModes:  
        - ReadWriteOnce 
        resources:  
          requests:  
            storage: 10Gi
        volumeName: pv-evs-example
        volumeNamespace: default
      Tabla 6 Parámetros de clave

      Parámetro

      Descripción

      volume.beta.kubernetes.io/storage-class

      Clase de almacenamiento, que debe ser la misma que la del PV existente.

      volume.beta.kubernetes.io/storage-provisioner

      El campo debe estar establecido en flexvolume-huawei.com/fuxivol.

      failure-domain.beta.kubernetes.io/region

      La región donde se encuentra el clúster.

      failure-domain.beta.kubernetes.io/zone

      La AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      storage

      Capacidad solicitada en el PVC, en Gi.

      El valor debe ser el mismo que el tamaño de almacenamiento del PV existente.

      volumeName

      Nombre del PV.

  4. Cree un PV.

    kubectl create -f pv-evs-example.yaml

  5. Cree un PVC.

    kubectl create -f pvc-evs-example.yaml

    Una vez que la operación se realice correctamente, elija Resource Management > Storage para ver el PVC creado. También puede ver el disco de EVS por su nombre en la consola de EVS.

  6. (Opcional) Agregue los metadatos asociados con el clúster para asegurarse de que el disco de EVS asociado con el PV estático montado no se elimina cuando se elimina el nodo o el clúster.

    Si se omite este paso en este ejemplo o al crear un PV o PVC estático, asegúrese de que el disco de EVS asociado con el PV estático no está vinculado del nodo antes de eliminar el nodo.

    1. Obtain the tenant token. For details, see Obtaining a User Token.
    2. Obtain the EVS access address EVS_ENDPOINT. For details, see Regions and Endpoints.

    3. Agregue los metadatos asociados con el clúster al disco de EVS que respalda el PV estático.
      curl -X POST ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \
          -d '{"metadata":{"cluster_id": "${cluster_id}", "namespace": "${pvc_namespace}"}}' \
          -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \
          -H 'X-Auth-Token:${TOKEN}'
      Tabla 7 Parámetros de clave

      Parámetro

      Descripción

      EVS_ENDPOINT

      Dirección de acceso de EVS. Establezca este parámetro en el valor obtenido en 6.b.

      project_id

      ID del proyecto.

      volume_id

      ID del disco de EVS asociado. Establezca este parámetro en volume_id del PV estático que se va a crear. También puede iniciar sesión en la consola de EVS, hacer clic en el nombre del disco de EVS que se va a importar y obtener el ID de Summary en la página de detalles del disco como se muestra en Figura 1.

      cluster_id

      ID del clúster donde se va a crear el PV de EVS. En la consola de CCE, elija Resource Management > Clusters. Haga clic en el nombre del clúster que se va a asociar. En la página de detalles del clúster, obtenga el identificador del clúster, tal como se muestra en Figura 2.

      pvc_namespace

      Espacio de nombres donde se debe vincular el PVC.

      TOKEN

      Token de usuario. Establezca este parámetro en el valor obtenido en 6.a.

      Figura 1 Obtención del ID de disco
      Figura 2 Obtención del ID de clúster

      Por ejemplo, ejecute los siguientes comandos:

      curl -X POST https://evs.ap-southeast-1.myhuaweicloud.com:443/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \
          -d '{"metadata":{"cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442", "namespace": "default"}}' \
          -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' \
          -H 'X-Auth-Token:MIIPe******IsIm1ldG

      Después de ejecutar la solicitud, ejecute los siguientes comandos para comprobar si el disco de EVS se ha asociado con los metadatos del clúster:

      curl -X GET ${EVS_ENDPOINT}/v2/${project_id}/volumes/${volume_id}/metadata --insecure \
          -H 'X-Auth-Token:${TOKEN}'

      Por ejemplo, ejecute los siguientes comandos:

      curl -X GET https://evs.ap-southeast-1.myhuaweicloud.com/v2/060576866680d5762f52c0150e726aa7/volumes/69c9619d-174c-4c41-837e-31b892604e14/metadata --insecure \
          -H 'X-Auth-Token:MIIPeAYJ***9t1c31ASaQ=='

      La salida del comando muestra los metadatos actuales del disco de EVS.

      {
          "metadata": {
              "namespace": "default",
              "cluster_id": "71e8277e-80c7-11ea-925c-0255ac100442",
              "hw:passthrough": "true"
          }
      }