Usa la transmisión de imágenes para reducir el tiempo de inicio del contenedor

En este documento, se describe cómo usar la transmisión de imágenes para extraer imágenes de contenedor en trabajos de contenedores por lotes.

La transmisión de imágenes permite que los trabajos por lotes se inicialicen sin esperar. para que se termine de descargar una imagen de contenedor, lo que proporciona beneficios:

  • Menor latencia cuando se extraen imágenes grandes
  • Menor tiempo para comenzar la ejecución del trabajo

Antes de comenzar

  1. Si nunca usaste Batch, revisa Comienza a usar Batch y habilitar Batch completando el requisitos previos para los proyectos y usuarios.
  2. Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

  3. Si aún no lo hiciste, habilita la API de Container File System mediante la ejecución del siguiente comando:

    gcloud services enable containerfilesystem.googleapis.com
    
  4. Si tus imágenes de contenedor están protegidas por Controles del servicio de VPC, actualizar el perímetro de servicio para incluir containerfilesystem.googleapis.com.

Limitaciones

La transmisión de imágenes por lotes tiene las siguientes limitaciones:

  • Batch solo admite la transmisión de imágenes para imágenes de contenedor que se almacenan en Artifact Registry. Si actualmente usas Container Registry para administrar tus imágenes de contenedor, puedes de transición a Artifact Registry.
  • Debes ejecutar las VMs de tu trabajo por lotes en la misma location como el lugar desde donde almacenar tu imagen de contenedor en Artifact Registry.
  • Los contenedores que usan la versión 2 del manifiesto de imagen de Docker, el esquema 1, no son compatibles.
  • Cuando usas la transmisión de imágenes, contenedores ejecutables solo admiten los siguientes campos:
    • imageUri
    • commands
    • entrypoint
    • volumes
    • enableImageStreaming
  • Las imágenes de contenedor con capas vacías o duplicadas no son compatibles.

Crea un trabajo que use la transmisión de imágenes

Para crear un trabajo de contenedor de Batch que use la transmisión de imágenes, haz lo siguiente:

Usa Google Cloud CLI o la API de REST para crear un trabajo de contenedor Para habilitar la transmisión de imágenes en un contenedor ejecutable, configura enableImageStreaming en true y establece el campo imageUri en una imagen que se almacena en un Ubicación de Artifact Registry que contiene la ubicación de la VM del trabajo.

"container": {
    ...
    "enableImageStreaming": true
        }

Por ejemplo, un trabajo que usa transmisión de imágenes tendría un archivo JSON de configuración de Terraform similar al siguiente:

{
    "taskGroups": [
        {
            "taskCount": "1",
            "taskCountPerNode": "1",
            "taskSpec": {
                "runnables": [
                    {
                        "container": {
                            "imageUri": "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG",
                            "enableImageStreaming": true
                        }
                    }
                ]
            }
        }
    ],
    "allocationPolicy": {
        "instances": [
            {
                "policy": {
                    "machineType": "e2-standard-4"
                }
            }
        ]
    },
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}

Reemplaza los siguientes valores:

  • LOCATION: Es la región o multirregional. la ubicación de la repositorio en el que se almacena la imagen, por ejemplo us-east1 o us. El la ubicación del contenedor debe ser la misma que la de la VMs de un trabajo por lotes.
  • PROJECT-ID: Es el proyecto que contiene el contenedor. imagen. Si el ID de tu proyecto contiene dos puntos (:), consulta Proyectos con alcance de dominio.
  • REPOSITORY: Es el nombre del repositorio en el que se encuentra la imagen. cuando se almacena.
  • IMAGE por el nombre de la imagen de contenedor
  • TAG: Es la etiqueta que se aplica a la imagen.

¿Qué sigue?