Questa pagina elenca i requisiti e i comportamenti chiave dei container in Cloud Run for Anthos.
Lingue e immagini supportate
L'immagine container può eseguire il codice scritto nel linguaggio di programmazione scelto e utilizzare qualsiasi immagine base, a condizione che rispetti i vincoli elencati in questa pagina.
I file eseguibili nell'immagine container devono essere compilati per Linux a 64 bit. Cloud Run for Anthos supporta in modo specifico il formato ABI Linux x86_64.
Ascolto delle richieste sulla porta corretta
Il container deve ascoltare le richieste su 0.0.0.0
nella porta a cui vengono inviate
le richieste. Per impostazione predefinita, le richieste vengono inviate a 8080
, ma puoi
configurare Cloud Run for Anthos
per inviare richieste alla porta di tua scelta.
All'interno delle istanze del container Cloud Run for Anthos, il valore della variabile di ambiente PORT
rispecchia sempre la porta a cui vengono inviate le richieste.
Il valore predefinito è 8080
.
Crittografia Transport Layer (TLS)
Il container non deve implementare direttamente alcun livello di sicurezza del trasporto. TLS viene terminato da Cloud Run for Anthos per HTTPS e gRPC e le richieste vengono inviate tramite proxy come HTTP o gRPC al container senza TLS.
Risposte
L'istanza di container deve inviare una risposta entro il tempo specificato nell'impostazione di timeout della richiesta dopo aver ricevuto la richiesta, incluso il momento di avvio dell'istanza di container. In caso contrario, la richiesta viene terminata e viene restituito un errore 504.
Variabili di ambiente
Le seguenti variabili di ambiente vengono aggiunte automaticamente ai container in esecuzione:
Nome | Descrizione | Esempio |
---|---|---|
PORT |
La porta su cui il server HTTP deve rimanere in ascolto. | 8080 |
K_SERVICE |
Il nome del servizio Cloud Run for Anthos in esecuzione. | hello-world |
K_REVISION |
Il nome della revisione Cloud Run for Anthos in esecuzione. | hello-world.1 |
K_CONFIGURATION |
Il nome della configurazione di Cloud Run for Anthos che ha creato la revisione. | hello-world |
Accesso al file system
Il filesystem del container è scrivibile ed è soggetto al seguente comportamento:
- Si tratta di un filesystem in memoria, quindi per scrivere viene utilizzato la memoria del container dell'istanza.
- I dati scritti nel file system non vengono conservati quando l'istanza del container viene arrestata.
Ciclo di vita di un'istanza di container
In risposta alle richieste in entrata, un servizio viene scalato automaticamente a un determinato numero di istanze di container, ognuna delle quali esegue l'immagine container di cui è stato eseguito il deployment.
Quando una revisione non riceve traffico, viene scalata in base al numero minimo di istanze di container configurate (zero per impostazione predefinita).
Startup
Le istanze del container devono ascoltare le richieste entro 4 minuti dall'avvio. Durante questo tempo di avvio, alle istanze container viene allocata la CPU.
L'ambito è limitato a una richiesta
Dopo l'avvio, dovresti essere in grado di eseguire il calcolo solo nell'ambito di una richiesta: un'istanza di container non dispone di alcuna CPU allocata se non sta elaborando una richiesta.
Chiusura
Un'istanza di container può essere arrestata in qualsiasi momento.
Quando un'istanza di container deve essere arrestata, le nuove richieste in entrata vengono instradate ad altre istanze e le richieste attualmente in fase di elaborazione hanno il tempo di completamento.
L'istanza di container riceve quindi un indicatore SIGTERM
che indica l'inizio di un periodo di 10 secondi
prima di essere arrestato (con un indicatore SIGKILL
).
Durante questo periodo, l'istanza di container viene allocata alla CPU e viene fatturata.
Se l'istanza di container non rileva il segnale SIGTERM
, viene immediatamente arrestata.
A meno che un'istanza di container non debba essere mantenuta inattiva a causa dell'impostazione di configurazione del numero minimo di istanze di container, non verrà mantenuta inattiva per più di 15 minuti.
Risorse per le istanze di container
Le richieste di risorse per le istanze di container sono programmate nei nodi del cluster GKE. Ogni nodo condivide la quantità totale di risorse di calcolo disponibili per il cluster GKE.
Pertanto, la quantità di risorse di calcolo disponibili per un servizio Cloud Run for Anthos è limitata solo alla quantità di risorse disponibili in tale nodo. Scopri di più sulle risorse di calcolo per le richieste.
Ad esempio, se assegni 512 MiB di memoria per un container e tale container è in esecuzione nell'unico pod all'interno di un nodo con 8 GiB di memoria, tale container può tentare di utilizzare più RAM.
CPU
Per impostazione predefinita, il sidecar proxy della coda prenota 25 milliCPU e non esiste alcun limite alla quantità di vCPU utilizzabile dai servizi Cloud Run for Anthos. Il consumo di risorse del proxy di coda dipende dal numero di richieste in coda e dalle dimensioni delle richieste.
Una vCPU viene implementata come astrazione dell'hardware sottostante per fornire il tempo approssimativo equivalente della CPU per un singolo hyperthread hardware su piattaforme con CPU variabile. L'istanza di container può essere eseguita su più core contemporaneamente. La vCPU viene allocata solo durante l'avvio e l'elaborazione delle richieste dei container, altrimenti è limitata.
Per allocare un valore vCPU diverso, consulta la documentazione sull'allocazione della CPU.
Memoria
Per impostazione predefinita, il sidecar proxy della coda non riserva alcuna memoria e non esiste alcun limite alla quantità di memoria che i servizi Cloud Run for Anthos possono utilizzare. Se vuoi, puoi configurare limiti di memoria per i tuoi servizi Cloud Run for Anthos. Per ulteriori informazioni su come GKE gestisce la memoria, consulta la pagina relativa alle risorse di memoria e CPU allocabili.
Tra gli utilizzi tipici della memoria sono inclusi:
- Codice caricato in memoria per eseguire il servizio
- Scrittura nel file system
- Processi aggiuntivi in esecuzione nel container, ad esempio un server nginx
- Sistemi di memorizzazione nella cache in memoria come PHP OpCache
- Utilizzo della memoria per richiesta
Contemporaneità
Ogni istanza di container di Cloud Run for Anthos è impostata su più contemporaneità, ciascuna delle quali può ricevere più richieste contemporaneamente. Puoi modificare questa impostazione impostando contemporaneità.
Sandbox istanza container
Cloud Run for Anthos non utilizza una sandbox per i container.
Server di metadati dell'istanza di container
Le istanze del container Cloud Run for Anthos espongono un server di metadati che puoi utilizzare per recuperare i dettagli dell'istanza di container, ad esempio l'ID progetto, l'area geografica, l'ID istanza o gli account di servizio.
Puoi accedere a questi dati dal server di metadati utilizzando semplici richieste HTTP all'endpoint http://metadata.google.internal/
con l'intestazione Metadata-Flavor: Google
: non sono richieste librerie client. Per ulteriori informazioni, consulta la pagina
Recupero dei metadati.
La tabella seguente elenca alcune delle informazioni disponibili sul server di metadati:
Percorso | Descrizione |
---|---|
/computeMetadata/v1/project/project-id |
ID progetto di questo servizio Cloud Run for Anthos |
/computeMetadata/v1/instance/region |
Area geografica di questo servizio Cloud Run for Anthos |
/computeMetadata/v1/instance/id |
Identificatore univoco dell'istanza di container (disponibile anche nei log). |
/computeMetadata/v1/instance/service-accounts/default/token |
Genera un token per l'account di servizio di runtime di questo servizio Cloud Run for Anthos |