Tema representativo de entrevista

¿Cómo lanzar de forma segura activos de datos OCI con image volumes de Kubernetes?

Diseño de sistemasDifícil
Equipo editorial de Offer.ccPublicado Actualizado

Pregunta

Diseñe un sistema que lance un paquete de modelos o reglas con un image volume de Kubernetes y admita fijación por digest, despliegue escalonado, fallas de inicio diagnosticables y rollback rápido.

Pregunta y contexto

Usted es responsable de un servicio de inferencia que debe montar un modelo, vocabulario o paquete de reglas como archivos de solo lectura desde una imagen OCI. Diseñe un enfoque de lanzamiento con fijación por digest, despliegue escalonado, fallas de inicio diagnosticables y rollback rápido. Explique los límites de los image volumes de Kubernetes.

Qué evalúa el entrevistador

  • Si separa la identidad del artefacto, la compatibilidad de programación (scheduling) y el control del despliegue.
  • Si explica con precisión reference, pullPolicy, la resolución en el inicio y los montajes de solo lectura.
  • Si cubre admisión, observabilidad, rollback y el comportamiento de la caché del nodo en lugar de limitarse a escribir YAML.
  • Si identifica la versión, el runtime y los permisos del registro como requisitos previos.

Preguntas aclaratorias iniciales

Ciclo de vida del artefacto

¿Quién compila, firma y retiene el paquete de modelos o reglas? ¿La producción debe usar un digest inmutable o puede seguir una etiqueta (tag) mutable? ¿Cuáles son el tamaño del artefacto, la frecuencia de actualización y el volumen de inicios concurrentes?

Clúster y runtime

¿Qué versión de clúster, sistema operativo de nodo, runtime de contenedor y credenciales de registro están disponibles? ¿Pueden coexistir versiones mixtas de nodos durante una actualización?

Seguridad y rollback

¿Quién puede modificar el reference del Pod? ¿El registro proporciona acceso privado y registros de auditoría? ¿El rollback requiere solo el digest anterior, o también firmas reproducibles, configuración y evidencia de compatibilidad?

Una respuesta en 30 segundos

Construiría un artefacto OCI firmado y fijaría su digest en el manifiesto de lanzamiento. El Pod lo monta en modo solo lectura a través de un image volume, mientras que la política de admisión rechaza registros o digests no aprobados. Un controlador despliega los Pods en lotes restringidos a nodos compatibles, observando métricas de pull, montaje, autoverificación de la aplicación y solicitudes. Ante una falla, restaura la carga de trabajo y el digest anteriores. Los artefactos no referenciados se recolectan como basura solo después de cumplir con los requisitos de retención y auditoría.

Solución detallada

1. Hacer inmutable la identidad del artefacto

reference puede apuntar a una referencia de imagen OCI; producción debería usar un digest en lugar de una etiqueta mutable. Vincule firmas, SBOM y la procedencia de compilación a ese digest. Almacene el digest, la canalización (pipeline), la matriz de compatibilidad y el propietario en el registro de lanzamiento. La fijación por digest hace que el lanzamiento sea reproducible, pero no reemplaza el escaneo de vulnerabilidades ni la verificación de firmas.

2. Definir el montaje del Pod

El siguiente volumen se monta como solo lectura dentro del contenedor:

yaml
volumes:
  - name: model
    image:
      reference: registry.example.com/models/ranker@sha256:0123456789abcdef
      pullPolicy: IfNotPresent
containers:
  - name: api
    image: registry.example.com/services/ranker-api@sha256:abcdef0123456789
    volumeMounts:
      - name: model
        mountPath: /opt/model
        readOnly: true

Kubernetes documenta un image volume como un objeto OCI disponible en el host del kubelet, con contenido de solo lectura. Always, Never y IfNotPresent expresan descargar cada vez, nunca descargar y descargar cuando esté ausente localmente. Producción comúnmente combina un digest fijado con IfNotPresent, mientras que los controles de admisión y de nodo definen el límite de la cadena de suministro.

3. Agregar verificaciones de admisión y permisos

La política de admisión verifica los dominios de registro, el formato del digest, las firmas, los umbrales de vulnerabilidad y la compatibilidad entre el servicio y el artefacto. La cuenta de servicio (service account) recibe solo los permisos de registro que necesita; la identidad del nodo, los secretos de pull y los registros de auditoría se gestionan por separado. Un rechazo debe explicar la causa al momento de la creación del Pod en lugar de esperar a que falle el contenedor de la aplicación.

4. Verificar la compatibilidad del nodo y del runtime

Los image volumes requieren compatibilidad por parte del nodo, el runtime de contenedor y la versión del clúster. Represente la capacidad con etiquetas de nodo y restricciones de programación, y pruebe un lote pequeño en nodos compatibles durante las actualizaciones. Que un plano de control acepte el campo no prueba que cada nodo pueda montarlo; los clústeres con versiones mixtas necesitan una capacidad mínima explícita y un plan de degradación (downgrade).

5. Planificar el despliegue y el precalentamiento de caché

El controlador comienza con un canary pequeño, verifica la preparación del Pod, la presencia del artefacto, las comprobaciones de digest y las autoverificaciones de la aplicación, y luego expande el Deployment. Un fallo de pull bloquea el inicio del contenedor y sigue un retroceso gradual (retry backoff) normal, por lo que se deben distinguir los fallos de autenticación del registro, de red, de disco del nodo y de artefacto corrupto. Precalentar las cachés de los nodos de destino puede reducir la latencia, pero no puede eludir la admisión ni las verificaciones de digest.

6. Observar el inicio y los resultados de negocio

Correlacione la carga de trabajo, el Pod, el nodo, el digest del artefacto y el lote de despliegue. Monitoree la latencia de pull, el backoff de inicio, los errores de montaje, el uso de disco, las autoverificaciones y la tasa de error de solicitudes. Kubernetes también documenta que un Pod recreado resuelve el contenido remoto nuevamente, por lo que debe registrar el digest utilizado realmente por cada nuevo Pod y alertar sobre diferencias.

7. Hacer rollback y recolección de basura

El rollback cambia a un digest antiguo aprobado y a la versión de servicio correspondiente, conservando su firma, SBOM y configuración. Verifique que el artefacto antiguo siga siendo recuperable; no asuma que la caché de un nodo es permanente. Ejecute la recolección de basura solo cuando no haya referencias activas, la retención haya expirado y los registros de auditoría estén archivados. Proteja los digests involucrados en rollbacks o investigaciones.

Ejemplo de una respuesta sólida

Trato la imagen del modelo como un lanzamiento inmutable. La compilación produce un SBOM, firma y digest; el registro de lanzamiento almacena ese digest y la matriz de compatibilidad del servicio. El Pod monta un image volume en modo solo lectura, y la admisión restringe los registros y verifica las firmas. Un controlador avanza según la capacidad de los nodos y lotes en canary. Kubernetes prepara el image volume durante el inicio del Pod, y los fallos de pull bloquean el inicio, por lo que separo las señales de autenticación, red, disco y backoff. Cada nuevo Pod registra su digest real; solo las autoverificaciones exitosas y las métricas de solicitudes hacen avanzar el despliegue. Un fallo restaura el digest anterior, y la limpieza espera hasta que el artefacto no esté referenciado y haya superado el periodo de retención.

Errores comunes

  • Usar solo una etiqueta de imagen sin discutir la mutabilidad y la fijación por digest.
  • Tratar un image volume como un disco compartido con permisos de escritura.
  • Asumir que cada nodo admite la característica sin importar la versión del clúster, runtime o nodo.
  • Observar solo las réplicas disponibles ignorando el pull backoff, los errores de montaje y las comprobaciones del artefacto.
  • Precalentar cachés eludiendo los controles de firma, admisión o auditoría.
  • Hacer rollback de la imagen del servicio sin restaurar un digest de artefacto compatible.

Preguntas y respuestas de seguimiento

¿Por qué no un ConfigMap o un persistent volume regular?

Los activos grandes y versionados que necesitan controles de cadena de suministro OCI se adaptan a los image volumes. ConfigMap es adecuado para configuraciones pequeñas, mientras que un persistent volume es adecuado para datos escribibles o persistentes entre Pods. La elección final sigue dependiendo del tamaño, el método de actualización, los permisos y los objetivos de recuperación.

¿Es más seguro Always?

Always descarga en cada inicio, reduciendo el riesgo de caché obsoleta mientras aumenta la latencia de inicio, la dependencia del registro y la superficie de fallas. La fijación por digest, la admisión por firma y un rollback observable suelen ser más importantes que cambiar la política de pull por sí sola.

¿Qué sucede cuando se recrea un Pod?

El Pod recreado resuelve la referencia remota y prepara el volumen nuevamente. Registre la referencia, el digest resuelto y los eventos en los datos de auditoría del lanzamiento; no asuma que la caché antigua del nodo determina el contenido del nuevo Pod.

¿Cuándo usaría subPath?

Use subPath cuando un directorio dentro del artefacto deba aparecer en una ruta específica. La documentación actual de Kubernetes indica que el soporte de image-volume subPath y subPathExpr comienza en v1.33, por lo que debe verificar la versión del clúster de destino.

¿Cómo maneja las diferencias de capacidad de digest-status?

En la documentación actual de Kubernetes, los image volumes son estables en la documentación de v1.36; el campo de estado ImageVolumeWithDigest todavía está marcado como alfa y depende de la versión correspondiente y del feature gate. El despliegue no debe tratar ese campo de estado como universalmente disponible.

Fuentes públicas

Preguntas relacionadas

Herramienta de entrevista relacionada

Usa Resolver para una respuesta de diseño de sistemas

Aclara primero los requisitos y luego avanza a través de la escala, la arquitectura, la elección de componentes y las compensaciones (trade-offs).

Ver la herramienta