En Kubernetes el campo .spec.volumeClaimTemplates[*].spec.resources.requests.storage de un StatefulSet es inmutable, por lo que actualizar el tamaño del disco editando solo values.yaml o la plantilla del StatefulSet provoca el error Forbidden updates to statefulset spec cuando se cambia ese campo. Esto sucede porque solo cierta parte de la especificacion de un StatefulSet es actualizable en caliente, y volumeClaimTemplates no forma parte de esas partes permitidas.
Resumen del problema real: un chart que crea PVC mediante volumeClaimTemplates genera PersistentVolumeClaims controlados por el StatefulSet. Intentar cambiar el valor requests.storage en volumeClaimTemplates provoca
Forbidden updates to statefulset spec for fields other than replicas, ordinals, template, updateStrategy, revisionHistoryLimit, persistentVolumeClaimRetentionPolicy and minReadySeconds are forbidden
Solucion práctica sin downtime y sin recrear volúmenes ni migrar datos
1 Verificar que la StorageClass soporte expansión dinámica. La StorageClass debe tener allowVolumeExpansion true para que el controlador CSI permita aumentar el volumen sin recrearlo. Si usas AWS es recomendable migrar a ebs.csi.aws.com ya que kubernetes.io/aws-ebs está deprecado.
2 Editar manualmente el PVC existente y subir resources.requests.storage al nuevo tamaño deseado. Esto se puede hacer con kubectl edit pvc nombre-del-pvc o aplicando un parche. Al editar el PVC el controlador externo y el resizer CSI trataran de expandir el volumen y se veran eventos como ExternalExpanding, Resizing y FileSystemResizeRequired seguido de FileSystemResizeSuccessful cuando termine.
3 Comprueba que el tamaño se ha ampliado tanto en el objeto PVC como dentro del Pod con df -h en el punto de montaje. Si ya ves el nuevo tamaño en el PVC y en el sistema de ficheros, la ampliación ha sido correcta.
4 Para que la plantilla del StatefulSet refleje el nuevo tamaño sin perder PVC ni datos, elimina el StatefulSet pero deja los objetos dependientes orfanos. Para ello usa kubectl delete statefulset nombre --cascade=orphan Esto borra solo el controlador StatefulSet y mantiene pods y PVC asociados funcionando.
5 Vuelve a crear el StatefulSet con la plantilla actualizada que incluye el nuevo requests.storage en volumeClaimTemplates. Como los PVC ya existen y apuntan a los mismos PersistentVolumes, Kubernetes no recrea los volúmenes y el servicio continua disponible.
Notas importantes y precauciones
- Siempre haz copias de seguridad antes de cambiar discos en producción. Aunque el procedimiento evita recrear PV y minimiza riesgo, un backup reduce impacto ante errores humanos o fallos inesperados.
- Comprueba la política de retencion del PersistentVolume reclaimPolicy; si esta en Retain evitaras que un PV se borre al eliminar el PVC por error.
- Si tu chart ofreciera Deployment en vez de StatefulSet, una opcion es crear un PVC independiente y referenciarlo con existingClaim, pero eso suele implicar migracion y downtime si ya existe un PV con datos.
- Recomendamos revisar y actualizar drivers CSI en entornos cloud y validar compatibilidad de la StorageClass antes de operar en clusters criticos.
Caso practico resumido
Primero confirmar allowVolumeExpansion en la StorageClass. Luego editar el PVC y esperar a que el resizer y kubelet realicen la ampliacion de sistema de ficheros. Posteriormente eliminar el StatefulSet con --cascade=orphan y recrearlo con la plantilla actualizada. Resultado: PVC ampliado y StatefulSet actualizado sin recrear volumen y con minimo impacto operativo.
Sobre Q2BSTUDIO
En Q2BSTUDIO somos una empresa de desarrollo de software que ofrece soluciones de aplicaciones a medida y software a medida para empresas de todos los tamaños. Somos especialistas en inteligencia artificial y ofrecemos servicios de ia para empresas y agentes IA integrables en procesos de negocio. Ademas proveemos servicios de ciberseguridad y pentesting para proteger sus activos digitales, y gestionamos arquitecturas en la nube con experiencia en servicios cloud aws y azure. Si necesita potenciar su analitica disponemos de servicios de inteligencia de negocio y Power BI para mejorar la toma de decisiones.
Si busca migrar cargas, optimizar infraestructura o modernizar aplicaciones hable con nuestros expertos en Servicios cloud AWS y Azure y descubra como combinar despliegues Kubernetes gestionados con buenas practicas en almacenamiento. Para iniciativas de automatizacion e innovacion basadas en aprendizaje automatico explore nuestras soluciones de inteligencia artificial para empresas.
Palabras clave relevantes: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.
Si desea, desde Q2BSTUDIO podemos ayudar a evaluar su StorageClass, planificar la ampliacion de discos en Kubernetes y desplegar soluciones de software a medida que integren seguridad, IA y servicios cloud.