En este documento, se describe cómo usar la transmisión de imágenes para extraer imágenes de contenedor en trabajos de contenedor por lotes.
La transmisión de imágenes permite que los trabajos por lotes se inicialicen sin esperar a que una imagen de contenedor termine de descargarse, lo que proporciona los siguientes beneficios:
- Menor latencia cuando se extraen imágenes grandes
- Menor tiempo para comenzar la ejecución del trabajo
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza a usar Batch y completa los requisitos previos para proyectos y usuarios a fin de habilitar Batch.
-
A fin de obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que es la cuenta de servicio predeterminada de Compute Engine de forma predeterminada
Si quieres obtener más información para otorgar funciones, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios mediante funciones personalizadas, o bien otras funciones predefinidas.
-
Editor de trabajos por lotes (
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
- Si tus imágenes de contenedor están protegidas por los Controles del servicio de VPC, actualiza 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 en la actualidad usas Container Registry para administrar tus imágenes de contenedor, puedes realizar la transición a Artifact Registry.
- Debes ejecutar las VM de tu trabajo por lotes en la misma ubicación en la que almacenas la imagen de contenedor en Artifact Registry.
- Los contenedores que utilizan la versión 2 del manifiesto de imagen de Docker, el esquema 1, no son compatibles.
- Cuando usas la transmisión de imágenes, los contenedores ejecutables solo admiten los siguientes campos:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- No se admiten imágenes de contenedor con capas vacías o capas duplicadas.
Crea un trabajo que use la transmisión de imágenes
Para crear un trabajo de contenedor por lotes 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.
Si quieres habilitar la transmisión de imágenes para un contenedor ejecutable, establece el campo enableImageStreaming
en true
y el campo imageUri
en una imagen almacenada en una ubicación de Artifact Registry que contenga la ubicación de la VM del trabajo.
"container": {
...
"enableImageStreaming": true
}
Por ejemplo, un trabajo que usa la transmisión de imágenes tendría un archivo de configuración JSON 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 ubicación regional o multirregional del repositorio en el que se almacena la imagen, por ejemplo,us-east1
ous
. La ubicación del contenedor debe ser la misma que la ubicación de las VMs del trabajo por lotes.PROJECT-ID
: Es el proyecto que contiene la imagen de contenedor. 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 almacena la imagen.IMAGE
por el nombre de la imagen de contenedorTAG
: Es la etiqueta que se aplica a la imagen.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Consulta trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.