Deployment di container su istanze e MIG


Puoi configurare un'istanza Compute Engine o un modello di istanza per eseguire il deployment e l'avvio di un contenuto Docker. Compute Engine fornisce un'immagine aggiornata di Container-Optimized OS (COS) con Docker installato e avvia il container all'avvio dell'istanza.

Prima di iniziare

  • Se non hai familiarità con i container, consulta Cosa sono i container e quali vantaggi offrono.
  • Se non hai dimestichezza con Docker, leggi la documentazione di Docker.
  • Scopri di più su Container-Optimized OS.
  • Scopri di più sui gruppi di istanze gestite (MIG).
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API. Google Cloud Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

Scelta di eseguire il deployment dei container su istanze e MIG

Se esegui il deployment dei container su Compute Engine, puoi semplificare il deployment delle app e controllare al contempo l'infrastruttura delle istanze.

  • Gestisci le istanze in cui sono in esecuzione i container nello stesso modo in cui gestisci qualsiasi altra istanza durante la configurazione e la gestione dell'infrastruttura Compute Engine.
  • Utilizza processi e strumenti familiari come Google Cloud CLI o l'API Compute Engine per gestire le istanze con i contenitori.
  • Crea servizi scalabili utilizzando gruppi di istanze gestite (MIG) che eseguono contenitori, che offrono funzionalità come scalabilità automatica, riparazione automatica, aggiornamenti in sequenza, deployment multizona e bilanciamento del carico.

In alternativa, puoi valutare la possibilità di eseguire il deployment in Google Kubernetes Engine per:

  • Esegui un numero elevato di microservizi
  • Avere un tempo di avvio del contenitore più rapido
  • Sfrutta l'orchestrazione automatica di Kubernetes, inclusi upgrade automatici, riparazione automatica dei nodi e scalabilità automatica

L'esecuzione di ogni microservizio su un'istanza separata su Compute Engine potrebbe fare in modo che il sovraccarico del sistema operativo rappresenti una parte significativa del costo. Google Kubernetes Engine ti consente di eseguire il deployment di più container e gruppi di container per ogni istanza, in modo da allocare in modo più efficiente le risorse dell'istanza host ai microservizi con un'impronta più ridotta.

Come funziona il deployment dei container su Compute Engine

I metodi comuni per eseguire il deployment di software su un'istanza Compute Engine includono:

  • Esegui il deployment del software all'avvio dell'istanza utilizzando un script di avvio o cloud-init.
  • Creazione di un'immagine del disco di avvio personalizzato con il software preinstallato.

Entrambi i metodi nell'elenco precedente combinano le attività di configurazione dell'app e dell'ambiente del sistema operativo. In qualità di sviluppatore, devi monitorare e risolvere attentamente eventuali dipendenze di runtime. Ad esempio, se due app eseguite su una VM utilizzano versioni diverse della stessa libreria, devi installare entrambe le versioni e fare in modo che puntino a queste tramite le variabili di sistema.

App che funzionano su versioni diverse della stessa libreria.
Un'istanza con app di cui è stato eseguito il deployment direttamente nel sistema operativo

In alternativa, puoi eseguire il deployment del software in un contenitore su un'istanza o su un MIG. Un container contiene sia il software dell'applicazione sia le librerie richieste ed è isolato dalle app e dalle librerie del sistema operativo. Un contenitore può essere spostato da un ambiente di deployment all'altro senza dover gestire versioni di librerie in conflitto nel contenitore e nel relativo sistema operativo.

Un esempio di app di cui è stato eseguito il deployment in container.
Un'istanza con app di cui è stato eseguito il deployment in un container

La procedura seguente descrive come eseguire il deployment di un contenitore su Compute Engine:

  1. Raggruppa l'app e le librerie richieste in un'immagine Docker e pubblica l'immagine in Artifact Registry o in un registro di terze parti come Docker Hub.
  2. Specifica un nome dell'immagine Docker e la configurazione docker run quando crei un'istanza o un modello di istanza per un MIG.

Compute Engine esegue le seguenti attività dopo che hai effettuato una richiesta per creare un'istanza:

  1. Compute Engine crea un'istanza VM che utilizza un'immagine Container-Optimized OS fornita da Google. Questa immagine include un runtime Docker e software aggiuntivo responsabile dell'avvio del container.
  2. Compute Engine archivia le impostazioni del contenitore nei metadati dell'istanza sotto la chiave dei metadati gce-container-declaration.
  3. All'avvio della VM, l'immagine del sistema operativo ottimizzata per i container utilizza la configurazione del comando docker run archiviata nei metadati dell'istanza, estrae l'immagine del container dal repository e avvia il container.
Utilizzo dell'immagine container e del comando docker run.
Passaggi per creare un'istanza o un gruppo di istanze gestite che eseguono un contenitore

Limitazioni

  • Puoi eseguire il deployment di un solo contenitore per ogni istanza. Valuta la possibilità di utilizzare Google Kubernetes Engine se devi eseguire il deployment di più contenuti per istanza.
  • Puoi eseguire il deployment dei container solo da un repository pubblico o da un repository Artifact Registry o Container Registry privato a cui puoi accedere. Gli altri repository privati non sono supportati.

    Per informazioni sulle autorizzazioni dei registry privati, consulta la documentazione sul controllo dell'accesso per Artifact Registry o Container Registry.

  • Non puoi mappare le porte di un'istanza alle porte del contenitore (opzione -p di Docker). Per consentire l'accesso ai contenitori, consulta Pubblicazione delle porte dei contenitori.

  • Con questo metodo di deployment puoi utilizzare solo immagini del sistema operativo ottimizzato per i container.

  • Puoi utilizzare questa funzionalità solo tramite la console Google Cloud o Google Cloud CLI, non tramite l'API.

Preparazione di un container per il deployment

Scegli uno dei seguenti approcci per rendere accessibile l'immagine del contenitore a Compute Engine:

  • Carica l'immagine Docker in Artifact Registry.
  • Utilizza qualsiasi immagine container disponibile pubblicamente da Docker Hub o da altri registry.

Eseguire il deployment di un container su una nuova istanza

Puoi eseguire il deployment di un container su una nuova istanza VM utilizzando la console Google Cloud o Google Cloud CLI.

Console

L'esempio seguente esegue il deployment di un container da un'immagine Docker Nginx fornita da Google, https://gcr.io/cloud-marketplace/google/nginx1:latest, a un'istanza VM. Per utilizzare un'immagine Docker diversa, sostituisci l'immagine Docker di Nginx con quella che preferisci nei passaggi che seguono.

Vai a Crea un'istanza

Se richiesto, seleziona il progetto e fai clic su Continua. Viene visualizzata la pagina Crea un'istanza, che mostra il riquadro Configurazione macchina.

  1. Nel riquadro Configurazione macchina, vai a Nome e specifica un nome per l'istanza. Per ulteriori informazioni, consulta la convenzione di denominazione delle risorse.

  2. Nel menu di navigazione, fai clic su Sistema operativo e spazio di archiviazione. Viene visualizzato il riquadro Sistema operativo e archiviazione.

  3. Vai alla sezione Contenitore e fai clic su Esegui il deployment del contenitore. Nel riquadro Configura contenitore visualizzato, segui questi passaggi:

    1. Specifica l'immagine del container da utilizzare. Considera gli esempi seguenti:
      • Per selezionare un'immagine container NGINX 1.12 da Cloud Launcher, specifica gcr.io/cloud-marketplace/google/nginx1:1.12.
      • Per eseguire il deployment di un'immagine container Apache da Docker Hub, specifica sempre il nome completo dell'immagine Docker, ad esempio docker.io/httpd:2.4.
    2. Facoltativo. Specifica eventuali altri parametri di configurazione a tua scelta. Per ulteriori informazioni sulle opzioni di configurazione del contenitore, consulta Configurare le opzioni per l'esecuzione del contenitore.
    3. Per completare la configurazione del contenitore e tornare al riquadro Sistema operativo e spazio di archiviazione, fai clic su Seleziona.
  4. (Facoltativo) Specifica altre opzioni di configurazione. Per ulteriori informazioni, consulta Opzioni di configurazione durante la creazione dell'istanza.

  5. Per completare la creazione dell'istanza, fai clic su Crea.

    Dopo aver creato l'istanza, Compute Engine la avvia e lancia il contenitore.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Esegui il comando gcloud compute instances create-with-container:

    gcloud compute instances create-with-container INSTANCE_NAME \
        --container-image=CONTAINER_IMAGE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: nome della nuova istanza.
    • CONTAINER_IMAGE: il nome dell'immagine del contenitore.

    Ad esempio, il seguente comando crea un'istanza denominata nginx-vm, che avvia ed esegue l'immagine del contenitore:

    gcr.io/cloud-marketplace/google/nginx1:1.12

    gcloud compute instances create-with-container nginx-vm \
        --container-image=gcr.io/cloud-marketplace/google/nginx1:1.12
    

    Per eseguire il deployment di un'immagine container Apache da Docker Hub, specifica sempre il nome completo dell'immagine Docker:

    docker.io/httpd:2.4.

Aggiornamento di un contenitore su un'istanza

Puoi aggiornare un'immagine Docker e le opzioni di configurazione per eseguire il container su un'istanza utilizzando la console Google Cloud o Google Cloud CLI.

Quando aggiorni un container in esecuzione, Compute Engine esegue due passaggi:

  • Aggiorna la dichiarazione del contenitore nell'istanza. Compute Engine memorizza la dichiarazione del contenitore aggiornata nei metadati dell'istanza sotto la chiave dei metadati gce-container-declaration.
  • Interrompe e riavvia l'istanza per applicare la configurazione aggiornata, se l'istanza è in esecuzione. Se l'istanza è interrotta, aggiorna la dichiarazione del contenitore e mantiene l'istanza interrotta. L'istanza scarica la nuova immagine e avvia il container all'avvio.

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome dell'istanza da aggiornare.

  3. Nella pagina dei dettagli dell'istanza, fai clic su Modifica.

  4. Specifica la nuova immagine del contenitore e aggiorna le opzioni per l'esecuzione del contenitore in base alle esigenze.

  5. Per salvare le modifiche, fai clic su Salva e riavvia. Compute Engine salva le modifiche e riavvia automaticamente l'istanza per eseguire l'update. Dopo il riavvio dell'istanza, viene scaricata la nuova immagine e avviato il contenitore con la configurazione aggiornata.

gcloud

Aggiorna la dichiarazione del contenitore utilizzando il comando gcloud compute instances update-container. Ad esempio:

gcloud compute instances update-container nginx-vm \
    --container-image gcr.io/cloud-marketplace/google/nginx1:latest

Questo comando imposta l'immagine del contenitore su gcr.io/cloud-marketplace/google/nginx1:latest e riavvia l'istanza per applicare le modifiche. Puoi anche aggiornare qualsiasi proprietà descritta in Configurazione delle opzioni per l'esecuzione del contenitore aggiungendo i flag corrispondenti.

Dopo il riavvio, l'istanza scarica la nuova immagine del container e avvia il container con la nuova configurazione.

Deployment di un container in un gruppo di istanze gestite

Puoi eseguire il deployment di un contenitore in un nuovo gruppo di istanze gestite (MIG) utilizzando la console Google Cloud o Google Cloud CLI seguendo questi passaggi:

  1. Crea un modello di istanza basato su un'immagine Docker.

  2. Crea un gruppo di istanze gestite dal nuovo modello di istanza.

Console

L'esempio seguente crea un modello di istanza che esegue il deployment di un container da un'immagine Docker Nginx (gcr.io/cloud-marketplace/google/nginx1:15) fornita da Google a un gruppo di istanze gestite. Per utilizzare altre immagini Docker, sostituiscigcr.io/cloud-marketplace/google/nginx1:15 nell'esempio seguente con l'immagine che vuoi utilizzare.

  1. Vai alla pagina Modelli di istanza.

    Vai a Modelli di istanza

  2. Per creare un modello di istanza, fai clic su Crea modello istanza.

  3. In Container, seleziona Esegui il deployment dell'immagine container.

  4. In Immagine contenitore, specifica il nome dell'immagine Docker e configura le opzioni per l'esecuzione del contenitore. Ad esempio, puoi specificaregcr.io/cloud-marketplace/google/nginx1:15 per l'immagine del contenitore.

  5. Fai clic su Crea.

Crea un gruppo di istanze gestite che utilizza il nuovo modello di istanza.

gcloud

Crea un modello di istanza per l'esecuzione di immagini Docker utilizzando il comando gcloud compute instance-templates create-with-container:

gcloud compute instance-templates create-with-container TEMPLATE_NAME \
  --container-image DOCKER_IMAGE

Puoi anche configurare opzioni per l'esecuzione del container.

Ad esempio, il seguente comando crea un nuovo modello di istanza con nome nginx-template, che include informazioni sull'immagine Docker. Un'istanza creata da questo modello avvia ed esegue l'immagine Docker gcr.io/cloud-marketplace/google/nginx1:15 all'avvio.

gcloud compute instance-templates create-with-container nginx-template \
    --container-image gcr.io/cloud-marketplace/google/nginx1:15

Crea un gruppo di istanze gestite utilizzando il nuovo modello di istanza.

Ora che hai un modello di istanza, puoi creare un gruppo di istanze gestite che lo utilizza. Ad esempio, per creare un MIG utilizzando l'interfaccia a riga di comando gcloud e il nginx-template appena creato, esegui il seguente comando:

gcloud compute instance-groups managed create example-group \
    --base-instance-name nginx-vm \
    --size 3 \
    --template nginx-template

Aggiornamento di un gruppo di istanze gestite che esegue un contenitore

Puoi aggiornare un gruppo di istanze gestite (MIG) per eseguire il deployment di una nuova versione di un'immagine Docker o di un'immagine del sistema operativo ottimizzato per i container.

Aggiornamento di un MIG a una nuova versione di un'immagine del container

Puoi eseguire il deployment di una nuova versione di un'immagine Docker in un gruppo di istanze gestite utilizzando lo strumento di aggiornamento dei gruppi di istanze gestite in tre passaggi:

  1. Prepara una nuova immagine Docker per il deployment.
  2. Crea un modello di istanza basato sulla nuova immagine Docker nello stesso modo in cui crei un modello basato su container.
  3. Aggiorna un gruppo di istanze gestite al nuovo modello di istanza utilizzando Managed Instance Group Updater.

Aggiornamento di un gruppo di istanze gestite a una nuova versione dell'immagine del sistema operativo ottimizzato per i container

Google aggiorna le immagini Container-Optimized OS regolarmente, e ti consigliamo di applicare questi aggiornamenti ai tuoi MIG containerizzati senza modificare l'immagine Docker. Puoi aggiornare un MIG a una nuova versione di un'immagine del sistema operativo ottimizzata per i container utilizzando la console Google Cloud o Google Cloud CLI in due passaggi:

  1. Crea un modello di istanza basato sulla versione corrente dell'immagine Docker, nello stesso modo in cui crei un modello basato su container per un nuovo gruppo di istanze gestite. Per impostazione predefinita viene utilizzata la versione più recente supportata di un'immagine Container-Optimized OS.
  2. Aggiorna un gruppo di istanze gestite con il nuovo modello di istanza utilizzando Managed Instance Group Updater.

Connessione a un contenitore tramite SSH

Puoi connetterti a un contenitore su un'istanza utilizzando SSH. Utilizza l'interfaccia a riga di comando gcloud per eseguire gcloud compute ssh con il flag --container:

gcloud compute ssh INSTANCE_NAME --container CONTAINER_NAME

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza
  • CONTAINER_NAME: il nome del contenitore

Scopri di più sul comando gcloud compute ssh e sui relativi argomenti.

Monitoraggio dei container su Compute Engine

Per monitorare le istanze che eseguono un'immagine del sistema operativo ottimizzata per i container, utilizza l'agente Node Problem Detector, che comunica con Cloud Monitoring e genera report sulle metriche relative all'integrità. L'agente è integrato nelle immagini Container-Optimized OS a partire da Milestone 77.

Per attivare l'agente, nei container che utilizzano immagini con Milestone 88 o versioni successive, modifica la sezione dei metadati personalizzati e imposta google-monitoring-enabled su true.

Per scoprire altri modi per attivare il rilevatore problemi nodo, consulta Attivare il monitoraggio dello stato di integrità.

L'agente Node Problem Detector supporta le metriche nell'elenco delle metriche che iniziano con guest/.

Per interagire con le metriche raccolte dall'agente, vai a Metrics Explorer.

Visualizzazione dei log

Puoi visualizzare tre tipi di log relativi ai container:

  1. Log dell'agente di avvio, noti anche come log konlet. L'agente di avvio analizza la configurazione del container ed esegue le attività per avviarlo su un'istanza Compute Engine.

  2. I log degli eventi Docker registrano gli eventi dei container, inclusi gli eventi di avvio e di interruzione dei container.

  3. I log del tuo contenitore includono i STDOUT delle app in esecuzione nel contenitore.

Visualizzazione dei log dell'agente di avvio

I log dell'agente di avvio sono disponibili nella console seriale, tramite il servizio di sistema journald incluso nell'immagine del sistema operativo e tramite Cloud Logging.

Visualizzazione dei log dell'agente di avvio nella console seriale

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona l'istanza per cui vuoi visualizzare i log dell'agente di avvio.

  3. In Log, fai clic su Porta seriale 1 (console) per visualizzare i log della console seriale.

    Registra la porta seriale 1.

gcloud

Utilizza il comando get-serial-port-output per visualizzare i log sulla porta seriale dell'istanza.

gcloud compute instances get-serial-port-output INSTANCE_NAME

Sostituisci INSTANCE_NAME con il nome dell'istanza.

Ad esempio, utilizza il seguente comando per visualizzare l'output della porta seriale di un'istanza denominata nginx-vm:

gcloud compute instances get-serial-port-output nginx-vm

Visualizzazione dei log dell'agente di avvio in journald

  1. Connettiti all'istanza con un contenitore utilizzando SSH.
  2. Esegui il comando sudo journalctl per visualizzare i log di avvio dell'istanza e del container. Utilizza il seguente comando per filtrare i log dell'agente di avvio del contenitore (konlet).

    sudo journalctl -u konlet*
    

Visualizzazione dei log dell'agente di avvio in Logging

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona l'istanza per cui vuoi visualizzare i log dell'agente di avvio.

  3. In Log, fai clic su Cloud Logging per visualizzare i log di Cloud Logging.

    Registra la porta seriale 1.

  4. Inserisci un filtro di ricerca per recuperare i log dell'agente di avvio.

    resource.type="gce_instance"
    logName="projects/PROJECT_ID/logs/cos_system"
    jsonPayload.SYSLOG_IDENTIFIER="konlet-startup"
    jsonPayload._HOSTNAME="INSTANCE_NAME"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto che contiene l'istanza
    • INSTANCE_NAME: il nome dell'istanza per cui vuoi recuperare i log

gcloud

Utilizza il comando gcloud logging read con un filtro appropriato per visualizzare i log dell'agente di avvio del contenitore.

gcloud logging read "resource.type=gce_instance AND \
    logName=projects/PROJECT_ID/logs/cos_system AND \
    jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
    jsonPayload._HOSTNAME=INSTANCE_NAME"

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto che contiene l'istanza
  • INSTANCE_NAME: il nome dell'istanza per cui vuoi recuperare i log

Ad esempio, utilizza il seguente comando per visualizzare gli ultimi 10 log dell'agente di avvio in Log per un'istanza denominata nginx-vm che esegue COS 70 ed esiste in my-project.

gcloud logging read "resource.type=gce_instance AND \
    logName=projects/my-project/logs/cos_system AND \
    jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
    jsonPayload._HOSTNAME=nginx-vm" \
    --limit 10

Visualizzazione dei log degli eventi Docker

Puoi visualizzare i log eventi di Docker in journald e in Cloud Logging.

Visualizzazione dei log eventi Docker in journald

  1. Connettiti all'istanza con un contenitore tramite SSH.
  2. Esegui il comando sudo journalctl con il seguente filtro per visualizzare i log degli eventi Docker.

    sudo journalctl -u docker-events-collector
    

Visualizzazione dei log eventi Docker in Logging

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona l'istanza per cui vuoi visualizzare i log dell'agente di avvio.

  3. In Log, fai clic su Cloud Logging per visualizzare i log di Cloud Logging.

    Registra la porta seriale 1.

  4. Inserisci il seguente filtro di ricerca per recuperare i log eventi di Docker.

    resource.type="gce_instance"
    logName="projects/PROJECT_ID/logs/cos_system"
    jsonPayload._HOSTNAME="INSTANCE_NAME"
    jsonPayload.SYSLOG_IDENTIFIER="docker"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto che contiene l'istanza
    • INSTANCE_NAME: il nome dell'istanza per cui vuoi recuperare i log

gcloud

Utilizza il comando gcloud logging read con un filtro appropriato per visualizzare i log eventi di Docker.

gcloud logging read "resource.type=gce_instance AND \
    logName=projects/PROJECT_ID/logs/cos_system AND \
    jsonPayload._HOSTNAME=INSTANCE_NAME AND \
    jsonPayload.SYSLOG_IDENTIFIER=docker"

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto che contiene l'istanza
  • INSTANCE_NAME: il nome dell'istanza per cui vuoi recuperare i log

Ad esempio, utilizza il seguente comando per visualizzare gli ultimi 10 log eventi Docker in Logging per un'istanza denominata nginx-vm che è in esecuzione su COS 70 ed esiste in my-project.

gcloud logging read "resource.type=gce_instance AND \
    logName=projects/my-project/logs/cos_system AND \
    jsonPayload._HOSTNAME=nginx-vm AND \
    jsonPayload.SYSLOG_IDENTIFIER=docker" \
    --limit 10

Visualizzazione dei log dei container

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona l'istanza per cui vuoi visualizzare i log dell'agente di avvio.

  3. In Log, fai clic su Cloud Logging per visualizzare i log di Cloud Logging.

    Registra la porta seriale 1.

  4. La pagina Cloud Logging viene caricata con un filtro di ricerca predefinito. Copia il valore per resource.labels.instance_id. Lo utilizzerai in un secondo momento.

  5. Aggiorna il filtro di ricerca per recuperare i log del contenitore.

    resource.type="gce_instance"
    logName="projects/PROJECT_ID/logs/cos_containers"
    resource.labels.instance_id="INSTANCE_ID"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto che contiene l'istanza
    • INSTANCE_ID: l'ID dell'istanza per cui vuoi recuperare i log

gcloud

Utilizza il comando gcloud logging read per visualizzare i log dei container.

  1. Determina l'ID dell'istanza per cui vuoi recuperare i log:

    gcloud compute instances describe INSTANCE_NAME \
       --zone ZONE \
       --format="value(id)"
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza per cui vuoi recuperare i log
    • ZONE: la zona in cui si trova l'istanza
  2. Utilizza il comando e il filtro seguenti per visualizzare i log del contenitore dell'istanza.

    gcloud logging read "resource.type=gce_instance AND \
        logName=projects/PROJECT_ID/logs/cos_containers AND \
        resource.labels.instance_id=INSTANCE_ID"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto che contiene l'istanza.
    • INSTANCE_ID: l'ID dell'istanza.

    Ad esempio, utilizza il seguente comando per visualizzare gli ultimi 10 log dei container in Cloud Logging per un'istanza che esegue COS 70, che esiste in my-project e che ha un ID istanza 555123456789012345.

    gcloud logging read "resource.type=gce_instance AND \
        logName=projects/my-project/logs/cos_containers AND \
        resource.labels.instance_id=555123456789012345" \
        --limit 10
    

Specifica di immagini o famiglie di immagini ottimizzate per i container

Per impostazione predefinita, le istanze o i modelli di istanze containerizzate vengono creati per utilizzare l'immagine ottimizzata per i container supportata più recente. L'immagine appartiene al progetto cos-cloud.

Puoi sostituire questo valore predefinito con un'altra immagine del progetto cos-cloud. Per informazioni sulle famiglie di immagini disponibili e sui relativi attributi, consulta Scegliere la versione corretta di Container-Optimized OS.

Ad esempio, dopo aver stabilito quale immagine vuoi utilizzare, nella CLI di gcloud fornisci il flag --image per eseguire l'override dell'immagine ottimizzata per i container predefinita o il flag --image-family per scegliere l'immagine più recente dalla famiglia specificata al momento della creazione dell'istanza.

L'esempio seguente crea un'istanza containerizzata che utilizza l'immagine più recente della famiglia di immagini cos-dev:

gcloud compute instances create-with-container nginx-vm \
    --image-family cos-dev \
    --image-project cos-cloud \
    --container-image gcr.io/cloud-marketplace/google/nginx1:1.15

Configurazione delle regole del firewall

Le istanze containerizzate avviano i container la cui rete è impostata sulla modalità host. Un contenutore condivide lo stack di rete dell'host e tutte le interfacce dell'host sono disponibile per il contenitore.

Per impostazione predefinita, Google Cloud le regole del firewall bloccano tutte le connessioni in entrata a un' Google Cloud istanza e consentono tutte le connessioni in uscita da un'istanza.

Crea regole firewall per consentire le connessioni in entrata all'istanza e quindi al contenitore.

Configurazione delle opzioni per l'esecuzione di un container

Per eseguire il container, puoi configurare le seguenti opzioni:

  • Specifica un criterio di riavvio del contenitore.
  • Sostituisci il contenitore ENTRYPOINT (comando predefinito da eseguire all'avvio del contenitore).
  • Passa gli argomenti al comando ENTRYPOINT del contenitore.
  • Esegui un container in una modalità con privilegi.
  • Monta una directory dell'host o tmpfs come volume di dati all'interno del contenitore.
  • Imposta le variabili di ambiente.
  • Alloca un buffer per STDIN nel runtime del container.
  • Alloca uno pseudo-TTY.

Scopri di più sulla configurazione delle opzioni per l'esecuzione del container.

Passaggi successivi