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
- Tiempo más rápido para comenzar la ejecución de trabajos
Antes de comenzar
- Si nunca antes usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para 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 la cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine
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.
-
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 las 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:
- Por lotes, 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 ubicación en la que almacenas tu imagen de contenedor en Artifact Registry.
- No se admiten contenedores que usen el manifiesto de imágenes de Docker versión 2, esquema 1.
- Cuando usas la transmisión de imágenes,
contenedores ejecutables
solo admiten los siguientes campos:
imageUri
commands
entrypoint
volumes
enableImageStreaming
- No se admiten imágenes de contenedor con capas vacías o duplicadas.
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 para un contenedor ejecutable, establece el campo enableImageStreaming
en true
y el campo imageUri
en una imagen que se almacena en una ubicación de Artifact Registry que contiene 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 región o multirregional. la ubicación de la repositorio en el que se almacena la imagen, por ejemplous-east1
ous
. La ubicación del contenedor debe ser la misma que la de las VMs del 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 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 una tarea, consulta Solución de problemas.
- Visualiza trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.