Usa la expansión de volumen


En la versión 1.24 y posteriores de Google Kubernetes Engine (GKE), puedes usar la función de expansión de volumen de Kubernetes para cambiar la capacidad de un volumen persistente después de su creación.

Para obtener más información sobre la expansión de volumen, consulta la documentación de Kubernetes de código abierto.

Requisitos previos

La expansión de volumen tiene los siguientes requisitos previos:

  • Si el volumen al que deseas cambiarle el tamaño lo administra un controlador de CSI:
    • Asegúrate de que la versión del clúster de GKE sea 1.16 o posterior. Si el clúster tiene grupos de nodos de Windows, asegúrate de que la versión del clúster de GKE sea 1.18 o posterior. Si usas el controlador de CSI de Filestore de GKE administrado, la versión del clúster debe ser 1.21 o posterior.
    • Consulta la documentación de tu proveedor de almacenamiento para verificar que tu controlador de CSI admita la expansión de volumen. El controlador de CSI de Persistent Disk de Compute Engine y el controlador de CSI de Filestore admiten la expansión de volumen.
  • Si el volumen al que deseas cambiarle el tamaño es administrado por un complemento de volumen de árbol:
    • Asegúrate de que la versión del clúster de GKE sea 1.11 o superior. Si bien las versiones 1.11 a 1.14 del clúster de GKE admiten la expansión de volúmenes administrados por complementos de árbol, también requieren que todos los pods que usan el volumen se cierren y se vuelvan a crear para completar la expansión del volumen.
    • Revisa la documentación de tu proveedor de almacenamiento para verificar que tu complemento de volumen de árbol admita la expansión de volumen (el complemento de árbol de Persistent Disk de Compute Engine lo hace).

Usa la expansión de volumen

Para usar la expansión de volumen, realiza las siguientes tareas:

  1. Agrega allowVolumeExpansion: true a tu StorageClass, si tu StorageClass aún no tiene el campo. Por ejemplo:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: standard
    provisioner: my.driver
    ...
    allowVolumeExpansion: true
    
  2. Edita el campo spec.resources.requests.storage de tu PersistentVolumeClaim para solicitar un cambio en la capacidad del volumen.

     kubectl edit pvc pvc-name
    

    Por ejemplo, puedes cambiar la siguiente PVC para que pase de tener un disco de 30 gibibyte (GiB) a uno de 40 GiB.

    Antes de editar, ejecuta este comando:

     # pvc-demo.yaml
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: pvc-demo
     spec:
       accessModes:
         - ReadWriteOnce
       resources:
         requests:
           storage: 30Gi
    

    Después de editar, ejecuta este comando:

     # pvc-demo.yaml
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: pvc-demo
     spec:
       accessModes:
         - ReadWriteOnce
       resources:
         requests:
           storage: 40Gi
    
  3. Verifica el cambio mediante la visualización de PVC. Para ver tu PVC, ejecuta el siguiente comando:

    kubectl get pvc pvc-name -o yaml
    

    Con el tiempo, deberías ver el volumen nuevo en el campo status.capacity. Por ejemplo:

    ...
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 40Gi
      storageClassName: standard
      volumeMode: Filesystem
      volumeName: pvc-078b7484-cc8d-4077-9bcb-2c17d8d4550c
    status:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 40Gi
    ...
    

Si la capacidad de un PersistentVolume se modifica directamente, esto podría hacer que el sistema de archivos del contenedor sea incorrecto. Para solucionar estos problemas, consulta Soluciona problemas de cambios en la expansión de volumen.

Próximos pasos