Informazioni sugli ambienti di esecuzione

I servizi Cloud Run per impostazione predefinita non hanno un ambiente di esecuzione. specificato, pertanto Cloud Run seleziona l'ambiente di esecuzione in base alle funzionalità utilizzate. Se non specifichi un ambiente di esecuzione il tuo servizio, Cloud Run può selezionare la prima generazione un ambiente di seconda generazione.

Tieni presente che i job Cloud Run utilizzano solo la seconda generazione di esecuzione e non può essere modificato per i job.

L'ambiente di esecuzione di prima generazione offre tempi di avvio a freddo rapidi ed emulazione dei la maggior parte delle chiamate, ma non tutte. In origine, questo era l'unico l'ambiente di esecuzione disponibile per i servizi in Cloud Run.

L'ambiente di esecuzione di seconda generazione fornisce compatibilità con Linux anziché l'emulazione delle chiamate di sistema. Questo ambiente di esecuzione fornisce:

  • Prestazioni della CPU più veloci
  • Prestazioni di rete più veloci, soprattutto in presenza di perdita di pacchetti
  • Compatibilità Linux completa, compreso il supporto per tutte le chiamate di sistema, gli spazi dei nomi, e cgroups
  • Supporto del file system di rete

Sebbene l'ambiente di esecuzione di seconda generazione in genere abbia prestazioni più elevate sotto carico sostenuto, ha orari di avvio a freddo più lunghi rispetto alla prima generazione per la maggior parte dei servizi.

Puoi selezionare l'ambiente di esecuzione per il tuo servizio Cloud Run quando esegui il deployment di un nuovo servizio la revisione del tuo servizio. Se non specifichi un ambiente di esecuzione, viene utilizzata per impostazione predefinita.

Come scegliere un ambiente di esecuzione

Devi utilizzare la prima generazione se si applica una delle seguenti condizioni:

  • Il tuo servizio Cloud Run ha un traffico intenso e deve fare lo scale out rapido a molte istanze o se il servizio è sensibile ai tempi di avvio a freddo.
  • Il tuo servizio Cloud Run ha un traffico sporadico che causa frequenti fare lo scale out da zero.
  • Vuoi utilizzare meno di 512 MiB di memoria. L'ambiente di esecuzione di seconda generazione richiede almeno 512 MiB di memoria.

Devi utilizzare la seconda generazione se una delle seguenti condizioni si applica al tuo Servizio Cloud Run:

  • Il servizio deve utilizzare un file system di rete, supportato solo dalla seconda generazione.
  • Il servizio ha un traffico abbastanza costante e tollera avvii a freddo leggermente più lenti.
  • Il tuo servizio ha carichi di lavoro che consumano molta CPU.
  • Il tuo servizio potrebbe trarre vantaggio da prestazioni di rete più veloci.
  • Il servizio deve utilizzare un software che presenta problemi in esecuzione nella prima generazione a causa di chiamate di sistema non implementate.
  • Il tuo servizio richiede la funzionalità cgroup Linux.
  • Il tuo servizio utilizza un'infrastruttura di terze parti per proteggere i container.

Best practice per l'utilizzo dell'ambiente di esecuzione di seconda generazione

Consigliamo di far installare al container un gestore SIGTERM, soprattutto se utilizzi il modello di fatturazione CPU on demand.

La gestione di SIGTERM offre al container la possibilità di eseguire la pulizia necessaria come lo svuotamento dei log prima di uscire. Se il container non rileva SIGTERM, saranno ancora dati 10 secondi per eseguire queste attività; quelle 10 secondi sono fatturabili.

Come verificare se il container gestisce SIGTERM

Per determinare se nel container è installato un gestore SIGTERM:

  1. Avvia Cloud Shell. Puoi visualizzare Pulsante Attiva Cloud Run Attiva Cloud Shell nell'intestazione della documentazione pagina visualizzata. Potresti dover autorizzarlo e attendere il suo provisioning. In alternativa, avvia una sessione autonoma.

  2. Esegui il container in locale in Cloud Shell:

    docker run IMAGE_URL

    Sostituisci IMAGE_URL con un riferimento all'immagine container, per ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

  3. Apri un'altra scheda in Cloud Shell e ottieni un elenco dei container in esecuzione nella sessione di Cloud Shell corrente:

    docker container ls

    Devi individuare l'ID container restituito dal comando.

  4. Utilizzando l'ID container, invia al container un indicatore SIGTERM

    docker kill -s SIGTERM CONTAINER_ID
  5. Torna alla scheda in cui hai richiamato docker run per vedere se il container è uscito (interrotto). Se l'indicatore SIGTERM ha provocato l'uscita del container, container gestisce SIGTERM.

Come gestire SIGTERM

Se il tuo container non gestisce SIGTERM, il modo più semplice per aggiungere un SIGTERM consiste nel aggregare il servizio con tini. In questo modo il servizio verrà eseguito come processo secondario di tini, che assume il ruolo del processo di inizializzazione del container. Consulta le istruzioni di Docker per istruzioni.

In alternativa, puoi modificare l'applicazione gestire direttamente SIGTERM.

Passaggi successivi