Si su clúster ejecuta una versión de Kubernetes anterior a la 1.16 o utiliza discos básicos, no es posible expandir un volumen de disco mediante la actualización de su persistent volume claim (PVC). En su lugar, debe expandir directamente el disco subyacente y su sistema de archivos.
Alcance
Este tema describe cómo expandir un volumen de disco al ampliar manualmente el disco subyacente sin modificar la PVC. Utilice este método si su clúster ejecuta una versión de Kubernetes anterior a la 1.16 o si no cumple con los requisitos para online expansion of a disk volume.
Con este método, se expande el disco en la consola de ECS. Esto no afecta los recursos dentro del clúster, por lo que la capacidad de los objetos persistent volume claim (PVC) y persistent volume (PV) permanece sin cambios. Para garantizar que las capacidades de PV y PVC mostradas en el clúster coincidan con la capacidad real, se recomienda utilizar online expansion of a disk volume.
Elija un método según sus necesidades de negocio.
Online expansion: La aplicación continúa ejecutándose. Sin embargo, si el tráfico de E/S es alto durante la expansión del sistema de archivos, pueden producirse errores de E/S.
Offline expansion: Este proceso pausa la aplicación y su E/S de disco. Como resultado, la expansión del sistema de archivos es más segura para sus datos, pero la aplicación se detiene durante un periodo de tiempo.
Los discos básicos no admiten la expansión en línea. Debe utilizar la expansión sin conexión.
A continuación se utiliza una aplicación de ejemplo con un statically provisioned disk volume para demostrar cómo expandir el volumen de disco.
Expansión en línea
Expanda el disco en la consola de ECS mientras la aplicación sigue ejecutándose.
Paso 1: Consultar la información del disco
Conéctese a su clúster. Para obtener más información, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster o Use kubectl to connect to a Kubernetes cluster from Workbench or CloudShell.
-
Consulte el pod que monta el disco y confirme que el pod se encuentra en estado Running.
kubectl get podSalida de ejemplo:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s -
Consulte la PVC para obtener el ID del disco.
kubectl get pvcLa siguiente salida muestra que el PV vinculado a la PVC es
d-uf628m33r5rsbi******(el ID del disco) y que la capacidad es de 20 GiB.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64s
Paso 2: Expandir el disco y el sistema de archivos
Inicie sesión en la consola de ECS.
-
En el panel de navegación izquierdo, seleccione .
En la esquina superior izquierda de la página, seleccione una región y un resource group.
-
Busque el disco por su ID, selecciónelo y luego haga clic en Scale-out en la parte inferior de la página.
Para obtener más información sobre cómo expandir un disco, consulte Expand a disk (Linux) .
-
En el asistente que aparece, siga las instrucciones en pantalla para completar la expansión.
En la página Determine Disk and Read Notes, confirme la información del disco, lea las notas y luego haga clic en I Understand Risks and Have Backed Up Data, Proceed.
-
En la página Configure Resizing Method and New Size, establezca los parámetros para la expansión y haga clic en Scale-out.
Parámetro
Descripción
Ejemplo
New disk size
Especifique la capacidad a la que desea expandir el disco. La nueva capacidad no puede ser menor que la capacidad actual.
30 GiB
Resizing method
Seleccione Online Resizing. La nueva capacidad entra en vigor de inmediato sin necesidad de reiniciar.
Online Resizing
-
En la página Confirm Resizing Results, confirme que el disco se expandió correctamente y luego haga clic en Next Step: Extend Partitions and File Systems.
NotaDespués de expandir el disco, también debe expandir su sistema de archivos. De lo contrario, el espacio de almacenamiento en el contenedor conservará el tamaño original.
-
En la página Extend the partitions and file systems of disks, seleccione Use Cloud Assistant, active Authorize Cloud Assistant to Perform This Operation y luego haga clic en Authorization.
Una vez completada la operación, compruebe que tanto el disco como su sistema de archivos se hayan expandido.
Cuando la expansión finaliza correctamente, la página de comprobación del disco muestra una marca de verificación verde y el mensaje The disk check is complete. The disk is ready for use. En la sección Disk information in the operating system, compruebe que el valor de Disk capacity (OS) coincida con el valor de Capacity. En los detalles de la partición, verifique que el tamaño de la partición (por ejemplo,
/dev/vdb) sea igual a la capacidad total del disco. Esto confirma que tanto la partición como el sistema de archivos se expandieron correctamente.
Expansión sin conexión
Pause la aplicación al establecer el número de réplicas en 0, expanda el disco y luego reinicie la aplicación.
Paso 1: Consultar la información del disco y pausar la aplicación
Conéctese a su clúster. Para obtener más información, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster o Use kubectl to connect to a Kubernetes cluster from Workbench or CloudShell.
-
Consulte el pod que monta el disco y confirme que el pod se encuentra en estado Running.
kubectl get podSalida de ejemplo:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s -
Consulte la PVC para obtener el ID del disco.
kubectl get pvcLa siguiente salida muestra que el PV vinculado a la PVC es
d-uf628m33r5rsbi******(el ID del disco) y que la capacidad es de 20 GiB.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64s -
Reduzca la escala de la aplicación a 0 réplicas para pausarla.
kubectl scale sts disk-test --replicas=0Salida esperada:
statefulset.apps/disk-test scaled
Paso 2: Expandir el disco
Inicie sesión en la consola de ECS.
-
En el panel de navegación izquierdo, seleccione .
En la esquina superior izquierda de la página, seleccione una región y un resource group.
Busque el disco por su ID, selecciónelo y luego haga clic en Scale-out en la parte inferior de la página.
-
En el asistente que aparece, siga las instrucciones en pantalla para completar la expansión.
En la página Determine Disk and Read Notes, confirme la información del disco, lea las notas y luego haga clic en I Understand Risks and Have Backed Up Data, Proceed.
-
En la página Configure Resizing Method and New Size, establezca los parámetros para la expansión y haga clic en Scale-out.
Parámetro
Descripción
Ejemplo
New disk size
Especifique la capacidad a la que desea expandir el disco. La nueva capacidad no puede ser menor que la capacidad actual.
30 GiB
Resizing method
Después de pausar la aplicación, el disco queda en estado Unattached. En este estado, Offline Resizing es la única opción disponible.
Offline Resizing
En la página Confirm Resizing Results, confirme que el disco se expandió correctamente y luego haga clic en Next Step: Extend Partitions and File Systems.
-
En la página Extend the partitions and file systems of disks, seleccione Use Documentation y consulte la documentación en la sección Extend the partitions and file systems of disks on a Linux instance.
NotaDespués de expandir el disco, también debe expandir su sistema de archivos. De lo contrario, el espacio de almacenamiento en el contenedor conservará el tamaño original.
Dado que el disco se encuentra en estado Unattached, no es posible utilizar Cloud Assistant. Debe expandir el sistema de archivos manualmente.
Paso 3: Expandir el sistema de archivos
Los siguientes pasos aplican a discos sin particiones.
Se recomienda no utilizar discos con particiones en Kubernetes.
Si un PV utiliza un disco sin particiones, no lo particione manualmente. De lo contrario, podría dañar el sistema de archivos y perder datos.
Si un PV utiliza un disco con particiones, debe expandir el dispositivo de partición antes de expandir el sistema de archivos. Para obtener más información, consulte Extend partitions and file systems of a disk on a Linux instance o Extend partitions and file systems of a disk on a Windows instance.
-
Monte el disco en una instancia de ECS.
En la página EBS de la consola de ECS, busque el disco de destino y haga clic en Attach en la columna Actions.
-
En el asistente Attach to Instance, seleccione la instancia de ECS de destino y haga clic en Next.
ImportanteNo seleccione ninguna opción que libere el disco automáticamente.
En el asistente Partition Disk and Create and Mount File Systems, haga clic en Configure Later en la sección Initialization Method.
Compruebe que el estado del disco cambie a In Use.
Conéctese a la instancia de ECS. Para obtener más información, consulte Connection methods.
-
Obtenga el nombre del dispositivo del disco.
Reemplace
<serial>con el número de serie de su disco.El número de serie del disco forma parte del ID del disco, el cual tiene el formato d-{número de serie del disco}. Para obtener más información, consulte View the serial number of a block storage device.
ImportanteLos discos creados antes del 10 de junio de 2020 no tienen números de serie. Para estos discos, no es posible utilizar el comando realpath para encontrar el nombre del dispositivo. En su lugar, ejecute el comando
ls /dev/vd*antes y después de montar el disco, y luego compare las salidas para identificar el nuevo nombre del dispositivo.realpath /dev/disk/by-id/virtio-<serial>La siguiente salida de ejemplo indica que el nombre del dispositivo del disco es
/dev/vdb./dev/vdb -
Expanda el sistema de archivos.
Reemplace /dev/vdb con el nombre real del dispositivo de su disco.
resize2fs /dev/vdbSi aparece el siguiente error, ejecute
e2fsck -f /dev/vdbtal como se indica y luego vuelva a ejecutarresize2fs /dev/vdbpara expandir el sistema de archivos.resize2fs 1.46.0 (29-Jan-2020) Please run 'e2fsck -f /dev/vdb' first.Una vez que el sistema de archivos se expande correctamente, se devuelve la siguiente salida:
resize2fs 1.46.0 (29-Jan-2020) Resizing the filesystem on /dev/vdb to 7864320 (4k) blocks. The filesystem on /dev/vdb is now 7864320 (4k) blocks long. -
Confirme que el sistema de archivos se haya expandido.
-
Cree un directorio temporal
/mnt/disk/y monte el disco en él.mkdir /mnt/disk mount /dev/vdb /mnt/disk/ -
Compruebe el tamaño del sistema de archivos.
df /mnt/disk/La siguiente salida de ejemplo muestra que la capacidad de
/dev/vdbse expandió a 30 GiB.Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /mnt/disk -
Desmonte el disco del directorio temporal.
umount /mnt/disk
-
Desmonte el disco de datos de la instancia de ECS. Para obtener más información, consulte Detach a data disk.
Paso 4: Reiniciar la aplicación
-
Aumente la escala de la aplicación a 1 réplica para reiniciarla.
kubectl scale sts disk-test --replicas=1Salida esperada:
statefulset.apps/disk-test scaled -
Confirme que el pod se haya restaurado.
kubectl get podSalida esperada:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 5s -
Compruebe el tamaño del sistema de archivos.
kubectl exec -it disk-test-0 -- df /dataLa siguiente salida de ejemplo muestra que el sistema de archivos montado se expandió correctamente.
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /data