Como ingeniero de desarrollo y operaciones, puede expandir un volumen de bloques persistentes después de su creación. En vSphere IaaS control plane, ambos tipos de clústeres, tanto Supervisores como Tanzu Kubernetes Grid, admiten la expansión de volúmenes en línea y sin conexión.

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.

De forma predeterminada, las clases de almacenamiento que aparecen en el entorno de vSphere IaaS control plane tienen allowVolumeExpansion establecido en 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.

Al expandir los volúmenes, 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 Supervisor y un clúster de Tanzu Kubernetes Grid si los volúmenes tienen clases de almacenamiento asociadas.
  • No se pueden expandir volúmenes que se crean como parte de StatefulSet cuando se utiliza la definición de StatefulSet. Actualmente, Kubernetes no admite esta funcionalidad. Como resultado, se produce un error al intentar expandir los volúmenes aumentando el tamaño de almacenamiento en la definición 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 sin conexión

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

Requisitos previos

Asegúrese de actualizar el entorno de vSphere a una versión adecuada que admita la expansión de volúmenes sin conexión.

Procedimiento

  1. Cree una notificación de volumen persistente (PVC) con una clase de almacenamiento.
    1. Defina una PVC con el siguiente manifiesto de YAML como ejemplo.
      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
    2. Aplique la PVC al clúster de Kubernetes.
      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.
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    Con esta acción se activa una expansión en el volumen asociado a la PVC.
  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
    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. Si describe la PVC, puede ver la condición FilesystemResizePending aplicada en la PVC.
    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
  4. Cree un pod para utilizar la PVC.
    Cuando el pod utiliza la PVC, se expande el sistema de archivos.
  5. 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.

Qué hacer a continuación

Un administrador de vSphere puede ver el nuevo tamaño del volumen en vSphere Client. Consulte Supervisar volúmenes persistentes en vSphere Client.

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. Ambos tipos de clústeres, Supervisores y Tanzu Kubernetes Grid, admiten la expansión de volúmenes en línea.

Requisitos previos

Asegúrese de actualizar el entorno de vSphere a una versión adecuada que admita la expansión de volúmenes en línea.

Procedimiento

  1. Busque la notificación de volumen persistente para cambiar el tamaño.
    $ 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

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

  2. Aplique una revisión a la PVC para aumentar su tamaño.
    Por ejemplo, aumente el tamaño a 2 Gi.
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
    Con esta acción se activa una expansión en el volumen asociado a la PVC.
  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

Qué hacer a continuación

Un administrador de vSphere puede ver el nuevo tamaño del volumen en vSphere Client. Consulte Supervisar volúmenes persistentes en vSphere Client.