Kubernetes 1.36 introduce VolumeGroupSnapshot para backups coherentes
La nueva API GA resuelve la inconsistencia temporal en copias de seguridad multi-volumen, eliminando la dependencia de quiescencia de aplicaciones.

Kubernetes 1.36 ha alcanzado la disponibilidad general (GA) de VolumeGroupSnapshot, un recurso que recupera la semántica de grupos de consistencia perdidos al migrar cargas de trabajo stateful desde almacenamiento tradicional. La función permite capturar múltiples PersistentVolumeClaims (PVC) de forma atómica en un único instante, garantizando que restauraciones de bases de datos o sistemas con múltiples discos sean coherentes entre sí.
El problema que resuelve es silencioso pero crítico. En configuraciones típicas, como una instancia de PostgreSQL con el directorio de datos y los registros de transacciones (WAL) en PVCs separados para aislar E/S, el estándar CSI tradicional trataba cada volumen de forma independiente. Al tomar snapshots individuales en secuencia, existía una ventana temporal entre la congelación de uno y la del siguiente. Durante ese intervalo, la aplicación seguía escribiendo, lo que generaba snapshots individualmente válidos pero globalmente inconsistentes: el WAL podía referenciar páginas de datos que nunca fueron capturadas. Este fallo solo se manifestaba en el momento de la restauración post-incidente, cuando ya era demasiado tarde para generar una copia nueva.
La implementación define tres objetos clave: VolumeGroupSnapshotClass, que define el comportamiento del driver CSI; VolumeGroupSnapshot, la solicitud del usuario que utiliza selectores de etiquetas (como app=postgres) para identificar el grupo de volúmenes; y VolumeGroupSnapshotContent, que rastrea el resultado provisionado. El selector de etiquetas es una decisión de diseño fundamental, ya que permite definir el grupo lógico sin enumerar volúmenes estáticos, adaptándose a cambios de tamaño o adición de discos.
Para integrar esto en flujos de trabajo reales, proyectos como Velero han actualizado su lógica. El cambio principal consiste en reemplazar la iteración secuencial de snapshots individuales por una operación de grupo única. Aun así, la restauración se mantiene granular: el snapshot del grupo se descompone en snapshots individuales por volumen para re-hidratar cada PVC por separado, pero todos comparten el mismo punto en el tiempo. Esto elimina la necesidad de sacrificar disponibilidad pausando la aplicación (quiescencia) durante la copia de seguridad, algo inviable en entornos de producción con alta carga.
Esta función no sustituye a los snapshots individuales para volúmenes independientes o cargas stateless, donde no aporta beneficio y añade complejidad de coordinación. Sin embargo, para cualquier aplicación donde la corrección dependa del orden de escritura entre múltiples volúmenes, VolumeGroupSnapshot se convierte en el mecanismo estándar, neutral al proveedor, para garantizar la integridad de los datos en Kubernetes.


