Puede utilizar la función de expansión de volúmenes de Kubernetes para expandir un volumen de bloque persistente una vez creado. Los clústeres de Servicio TKG admiten la expansión de volúmenes en línea y sin conexión.

Acerca de la expansión de volúmenes persistentes

De forma predeterminada, las clases de almacenamiento que aparecen en el entorno del clúster de TKG tienen allowVolumeExpansion establecido como true. Gracias a este parámetro, es posible modificar el tamaño de un volumen en línea y sin conexión.

Se considera que un volumen está sin conexión cuando no está asociado a un nodo o pod. Un volumen en línea es un volumen disponible en un nodo o pod.

El nivel de compatibilidad de la funcionalidad de expansión de volúmenes depende de la versión de vSphere. Puede expandir los volúmenes creados en las versiones anteriores de vSphere cuando actualice el entorno de vSphere a las versiones adecuadas que admitan las ampliaciones.

Nota: Solo puede expandir volúmenes de bloques persistentes. Actualmente, vSphere IaaS control plane no admite la expansión de volúmenes para volúmenes ReadWriteMany.
Al expandir un volumen de bloque persistente, tenga en cuenta lo siguiente:
  • Puede expandir los volúmenes hasta los límites especificados por las cuotas de almacenamiento. vSphere IaaS control plane admite solicitudes de cambio de tamaño consecutivas para un objeto de notificación de volumen persistente.
  • Todos los tipos de almacenes de datos, incluidos VMFS, vSAN, vSAN Direct, vVols y NFS, admiten la expansión de volúmenes.
  • Puede realizar una expansión de volúmenes para implementaciones o pods independientes.
  • Puede cambiar el tamaño de los volúmenes aprovisionados estáticamente en un clúster de Tanzu Kubernetes Grid si los volúmenes tienen clases de almacenamiento asociadas.
  • No puede expandir volúmenes creados como parte de StatefulSet.
  • Si un disco virtual que crea una copia de seguridad de un volumen tiene instantáneas, no se puede cambiar su tamaño.
  • vSphere IaaS control plane no admite la expansión de volúmenes para volúmenes en un árbol o migrados.

Expandir un volumen persistente en modo en línea

Un volumen en línea es un volumen disponible en un nodo o pod. Como ingeniero de desarrollo y operaciones, puede expandir un volumen de bloque persistente en línea. Los clústeres de Tanzu Kubernetes Grid admiten la expansión de volúmenes en línea.

  1. Busque la notificación de volumen persistente para cambiar su tamaño mediante el siguiente comando.

    Tenga en cuenta que, en este ejemplo, el tamaño del almacenamiento que utiliza el volumen es de 1 Gi.

    $ kubectl get pv,pvc,pod
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            Delete           Bound       default/block-pvc   block-sc                4m56s
     
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            block-sc       5m3s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          26s
  2. Aplique una revisión a la PVC para aumentar su tamaño. Por ejemplo, aumente el tamaño a 2 Gi.
    Con esta acción se activa una expansión en el volumen asociado a la PVC.
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
  3. Compruebe que el tamaño de PVC y PV haya aumentado.
    $ kubectl get pvc,pv,pod
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            block-sc       6m18s
     
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            Delete           Bound       default/block-pvc   block-sc                6m11s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          101s
  4. Utilice vSphere Client para comprobar el nuevo tamaño del volumen persistente.

    Consulte Supervisar el estado del volumen en un clúster de Tanzu Kubernetes Grid.

Expandir un volumen persistente en modo sin conexión

Se considera que un volumen está sin conexión cuando no está asociado a un nodo o pod. Los clústeres de Tanzu Kubernetes Grid admiten la expansión de volúmenes sin conexión.

  1. Cree una notificación de volumen persistente (PVC) para la clase de almacenamiento existente.
    En el ejemplo, el tamaño del almacenamiento solicitado es 1 Gi.
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-block-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: example-block-sc
    kubectl apply -f example-block-pvc.yaml 
  2. Aplique una revisión a la PVC para aumentar su tamaño.

    Si la PVC no está asociado a un nodo o no lo está usando un pod, utilice el siguiente comando para aplicar una revisión a la PVC. En este ejemplo, el aumento de almacenamiento solicitado es de 2 Gi.

    Con esta acción se activa una expansión en el volumen asociado a la PVC.
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
  3. Compruebe que el tamaño del volumen haya aumentado.
    kubectl get pv
    NAME                                       CAPACITY ACCESS MODES RECLAIM POLICY STATUS   CLAIM                       STORAGECLASS           REASON AGE
    pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   2Gi           RWO         Delete     Bound    default/example-block-pvc   example-block-sc              6m44s
  4. Compruebe que el cambio de tamaño de la PVC esté pendiente.
    Nota: El tamaño de la PVC no cambia hasta que un pod utiliza la PVC.
    El siguiente ejemplo muestra que el tamaño de la PVC no ha cambiado porque un pod no la ha utilizado. Si ejecuta kubectl describe pvc, verá la condición FilesystemResizePending aplicada en la PVC. Una vez que un pod la utilice, cambiará de tamaño.
    kubectl get pvc
    NAME                STATUS VOLUME                                     CAPACITY ACCESS MODES   STORAGECLASS       AGE
    example-block-pvc   Bound  pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   1Gi           RWO       example-block-sc   6m57s
  5. Cree un pod para utilizar la PVC.

    Cuando el pod utiliza la PVC, se expande el sistema de archivos.

  6. Compruebe que el tamaño de la PVC se haya modificado.
    kubectl get pvc
    NAME                STATUS VOLUME                                    CAPACITY ACCESS MODES STORAGECLASS     AGE
    example-block-pvc   Bound  pvc-24114458-9753-428e-9c90-9f568cb25788   2Gi         RWO      example-block-sc 2m12s
    La condición FilesystemResizePending se ha eliminado de la PVC. La expansión del volumen se ha completado.
  7. Utilice vSphere Client para comprobar el nuevo tamaño del volumen persistente.

    Consulte Supervisar el estado del volumen en un clúster de Tanzu Kubernetes Grid.