Contrato de entorno de ejecución del contenedor

En esta página, se enumeran los requisitos y comportamientos clave de los contenedores en Cloud Run for Anthos.

Imágenes y lenguajes compatibles

Tu imagen de contenedor puede ejecutar código escrito en el lenguaje de programación que elijas y usar cualquier imagen base, siempre que cumpla con las restricciones enumeradas en esta página.

Los ejecutables en la imagen del contenedor deben compilarse para Linux de 64 bits. Cloud Run for Anthos admite específicamente el formato ABI x86_64 de Linux.

Escucha solicitudes en el puerto correcto

El contenedor debe escuchar las solicitudes en 0.0.0.0 en el puerto al que se envían las solicitudes. De forma predeterminada, las solicitudes se envían a 8080, pero puedes configurar Cloud Run for Anthos para enviar solicitudes al puerto que elijas.

Dentro de las instancias de contenedor de Cloud Run for Anthos, el valor de la variable de entorno PORT siempre refleja el puerto al que se envían las solicitudes. El valor predeterminado es 8080.

Encriptación de la capa de transporte (TLS)

El contenedor no debe implementar ninguna seguridad de la capa de transporte directamente. TLS finaliza Cloud Run for Anthos para HTTPS y gRPC, y las solicitudes se envían como HTTP o gRPC al contenedor sin TLS.

Respuestas

La instancia de contenedor debe enviar una respuesta dentro del tiempo especificado en la configuración de tiempo de espera de la solicitud después de recibir una solicitud, incluido el tiempo de inicio de la instancia del contenedor. De lo contrario, se completa la solicitud y se muestra un error 504.

Variables de entorno

Las siguientes variables de entorno se agregan de forma automática a los contenedores en ejecución:

Nombre Descripción Ejemplo
PORT El puerto en el que debe escuchar el servidor HTTP. 8080
K_SERVICE El nombre del servicio de Cloud Run for Anthos que se ejecuta. hello-world
K_REVISION El nombre de la revisión de Cloud Run for Anthos que se ejecuta. hello-world.1
K_CONFIGURATION El nombre de la configuración de Cloud Run for Anthos que creó la revisión. hello-world

Acceso al sistema de archivos

El sistema de archivos de tu contenedor admite escritura y está sujeto al siguiente comportamiento:

  • Este es un sistema de archivos en la memoria, por lo que para escribir en él, se usa la memoria de la instancia del contenedor.
  • Los datos escritos en el sistema de archivos no persisten cuando se detiene la instancia de contenedor.

Ciclo de vida de las instancias de contenedor

En respuesta a las solicitudes entrantes, se escala automáticamente un servicio a una cierta cantidad de instancias de contenedores, cada una de las cuales ejecuta la imagen de contenedor implementada.

Cuando una revisión no recibe tráfico, la escala se ajusta a la cantidad mínima de instancias de contenedor configuradas (cero de forma predeterminada).

Inicio

Las instancias de contenedor deben escuchar las solicitudes en un plazo de 4 minutos después de su inicio. Durante este tiempo de inicio, las instancias de contenedor reciben la CPU asignada.

El procesamiento se limita a una solicitud

Después del inicio, solo deberías esperar poder calcular dentro del alcance de una solicitud: una instancia de contenedor no tiene ninguna CPU asignada si no procesa una solicitud.

Cierre

Una instancia de contenedor se puede cerrar en cualquier momento.

Cuando se debe cerrar una instancia de contenedor, las solicitudes entrantes nuevas se enrutan a otras instancias y las solicitudes en proceso tienen tiempo para completarse. Luego, la instancia de contenedor recibe una señal SIGTERM que indica el inicio de un período de 10 segundos antes de apagarse (con una señal SIGKILL). Durante este período, la instancia de contenedor se asigna a la CPU y se factura. Si la instancia de contenedor no captura la señal SIGTERM, se cierra de inmediato.

A menos que una instancia de contenedor deba mantenerse inactiva debido a la configuración de la cantidad mínima de instancias de contenedor, no se mantendrá inactiva por más de 15 minutos.

Recursos de instancias de contenedor

Las solicitudes de recursos para tus instancias de contenedor se programan en los nodos de tu clúster de GKE. Cada nodo comparte la cantidad total de recursos de procesamiento que está disponible para el clúster de GKE.

Por lo tanto, la cantidad de recursos de procesamiento que está disponible para un servicio de Cloud Run for Anthos está limitada solo por la cantidad de recursos disponibles en ese nodo. Obtén más información sobre los recursos de procesamiento para las solicitudes.

Por ejemplo, si asignas 512 MiB de memoria para un contenedor y este se ejecuta en el único Pod dentro de un nodo que tiene 8 GiB de memoria, ese contenedor puede intentar usar más RAM.

CPU

De forma predeterminada, el sidecar del proxy de cola reserva 25 millicores de CPU y no hay un límite para la cantidad de CPU virtuales que pueden usar los servicios de Cloud Run for Anthos. El consumo de recursos del proxy de la cola depende de cuántas solicitudes se ponen en la cola y el tamaño de las solicitudes.

Una CPU virtual se implementa como una abstracción del hardware subyacente para proporcionar el tiempo de CPU equivalente aproximado de un subproceso de hardware único en plataformas variables de CPU. La instancia de contenedor se puede ejecutar en varios núcleos de forma simultánea. La CPU virtual solo se asigna durante el inicio de la instancia de contenedor y el procesamiento de solicitudes; de lo contrario, se regula.

Para asignar un valor de CPU virtual diferente, consulta la documentación a fin de asignar CPU.

Memoria

De forma predeterminada, el sidecar del proxy de cola no reserva memoria y no hay límite para la cantidad de memoria que pueden usar los servicios de Cloud Run for Anthos. Si lo deseas, puedes configurar límites de memoria para tus servicios de Cloud Run for Anthos. Para obtener más información sobre cómo GKE maneja la memoria, consulta la Memoria asignable y recursos de CPU.

Entre los usos típicos de la memoria, se incluyen los siguientes:

  • Código cargado en la memoria para ejecutar el servicio
  • Escribe en el sistema de archivos
  • Procesos adicionales que se ejecutan en el contenedor, como un servidor nginx
  • Sistemas de almacenamiento en caché en memoria, como la OpCache de PHP
  • Uso de memoria por solicitud

Simultaneidad

De forma predeterminada, cada instancia de contenedor de Cloud Run for Anthos está configurada en varias solicitudes simultáneas, en las que cada instancia de contenedor puede recibir más de una solicitud al mismo tiempo. Para cambiar esto, Configura la simultaneidad.

Zona de pruebas de la instancia del contenedor

Cloud Run for Anthos no usa una zona de pruebas en contenedores.

Servidor de metadatos de la instancia del contenedor

Las instancias de contenedor de Cloud Run for Anthos exponen un servidor de metadatos que puedes usar para recuperar detalles sobre la instancia de contenedor, como el ID del proyecto, la región, el ID de la instancia o las cuentas de servicio.

Puedes acceder a estos datos desde el servidor de metadatos mediante solicitudes HTTP simples al extremo http://metadata.google.internal/ con el encabezado Metadata-Flavor: Google: no se necesitan bibliotecas cliente. Para obtener más información, consulta Obtén metadatos.

En la siguiente tabla, se enumeran algunos de los datos del servidor de metadatos disponibles:

Ruta Descripción
/computeMetadata/v1/project/project-id ID del proyecto de este servicio de Cloud Run for Anthos
/computeMetadata/v1/instance/region Región de este servicio de Cloud Run for Anthos
/computeMetadata/v1/instance/id Identificador único de la instancia de contenedor (también disponible en registros).
/computeMetadata/v1/instance/service-accounts/default/token Genera un token para la cuenta de servicio del entorno de ejecución de este servicio de Cloud Run for Anthos.