Debug dei problemi relativi ai nodi utilizzando gli strumenti

Potresti dover installare pacchetti o strumenti aggiuntivi su Container-Optimized OS per alcune attività, come il debug. Ad esempio, per risolvere i problemi di connettività dei nodi, installa tcpdump nella cassetta degli attrezzi. Sebbene Container-Optimized OS non includi un gestore di pacchetti, puoi usare lo strumento strumenti per installare eventuali pacchetti o strumenti aggiuntivi richiesti. L'utilizzo di /usr/bin/toolbox è il metodo preferito per installare ed eseguire strumenti di debug una tantum.

/usr/bin/toolbox fornisce essenzialmente una shell in un ambiente chroot Debian completamente gestito di Google Cloud. Quando richiami /usr/bin/toolbox, vengono eseguiti i seguenti comandi:

  1. docker pull e docker create per configurare l'ambiente. Si tratta solo di esegui la prima volta che richiami /usr/bin/toolbox.
  2. systemd-nspawn per eseguire il comando specificato o (in assenza di comandi) fornisce una shell

toolbox ha altre proprietà da tenere presenti:

  • L'invocazione di toolbox dopo la prima non richiede un daemon Docker funzionante né comporta alcun sovraccarico di rete/disco.
  • L'ambiente toolbox viene configurato una volta per ogni utente che lo chiama. Esecuzione sudo toolbox lo configura per root utente.
  • L'ambiente toolbox viene creato in /var/lib/toolbox ed è e sono permanenti tra i riavvii.
  • Puoi accedere alle sezioni del file system radice, come la home page dell'utente dall'interno dell'ambiente toolbox.

Personalizzazione degli strumenti per il deployment

Nei seguenti esempi, presupponiamo che il tuo nome utente sia USER e Il nome dell'istanza di Container-Optimized OS è cos-dev.

Puoi personalizzare l'immagine Docker utilizzata da toolbox, nonché i percorsi disponibile per toolbox nel file system radice. Queste impostazioni si trovano nel file /etc/default/toolbox. In genere, il file /etc/default/toolbox predefinito è simile al seguente:

USER@cos-dev ~ $ cat /etc/default/toolbox
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

TOOLBOX_DOCKER_IMAGE="gcr.io/cos-cloud/toolbox"
TOOLBOX_DOCKER_TAG="v20220722"
TOOLBOX_BIND="--bind=/:/media/root/ --bind=/mnt/disks/:/media/root/mnt/disks/ --bind=/var/:/media/root/var/ --bind=/home:/media/root/home/ --bind=/etc/resolv.conf:/etc/resolv.conf"
: ${USER:=root}
  • Le variabili TOOLBOX_DOCKER_IMAGE e TOOLBOX_DOCKER_TAG specificano Docker da utilizzare. gcr.io/cos-cloud/toolbox predefinito viene fornito con alcuni degli strumenti comuni come Google Cloud CLI preinstallato.
  • La variabile TOOLBOX_BIND specifica i percorsi da rootfs da effettuare disponibili nell'ambiente toolbox.

Per cambiare le impostazioni predefinite, modifica il file /etc/default/toolbox oppure specificare nuovi valori per le variabili in ${HOME}/.toolboxrc per i utente. Ad esempio, supponendo che tu voglia che toolbox utilizzi fedora:latest come al suo container, puoi eseguire questi comandi:

USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_IMAGE=docker.io/library/fedora" > "${HOME}/.toolboxrc"
USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_TAG=latest" >> "${HOME}/.toolboxrc"
USER@cos-dev ~ $ toolbox

Nel Milestone 93, toolbox non riesce a estrarre un'immagine personalizzata toolbox. Alla soluzione alternativa questo problema, crea un riquadro tar dell'immagine Docker con strumenti personalizzati ed esportalo ${HOME}/.toolboxrc o /etc/default/toolbox.

USER@cos-dev ~ $ echo "TOOLBOX_DOCKER_IMAGE_TARBALL=[docker image tar ball]" > "${HOME}/.toolboxrc"
USER@cos-dev ~ $ toolbox
Il file "/etc/default/toolbox" può essere modificato come mostrato di seguito.
USER@cos-dev ~ $ cat /etc/default/toolbox
    # Copyright 2016 The Chromium OS Authors. All rights reserved.
    # Use of this source code is governed by a BSD-style license that can be
    # found in the LICENSE file.

    TOOLBOX_DOCKER_IMAGE="gcr.io/cos-cloud/toolbox"
    TOOLBOX_DOCKER_TAG="v20220722"
    TOOLBOX_DOCKER_IMAGE_TARBALL=[location/to/tarball]
    TOOLBOX_BIND="--bind=/:/media/root/ --bind=/mnt/disks/:/media/root/mnt/disks/ --bind=/var/:/media/root/var/ --bind=/home:/media/root/home/"
    : ${USER:=root}
USER@cos-dev ~ $ toolbox

Installazione ed esecuzione di strumenti da toolbox

Dopo aver richiamato l'utilità toolbox per avviare la shell, puoi usare apt-get all'interno del container risultante per installare i pacchetti. Ad esempio:

# Inside the toolbox shell
USER@cos-dev ~ $ toolbox
root@cos-dev:~# apt-get update && apt-get install -y htop psmisc
root@cos-dev:~# htop
root@cos-dev:~# pstree -p
root@cos-dev:~# exit

Non è sempre necessario inserire toolbox per eseguire comandi al suo interno. Puoi semplicemente aggiungi il prefisso toolbox ai tuoi comandi. Ad esempio, per installare ed eseguire strace per tracciare l'esecuzione del daemon Docker, puoi eseguire l'operazione seguenti:

USER@cos-dev ~ $ toolbox apt-get install -y strace
USER@cos-dev ~ $ toolbox strace -p `pidof dockerd`

Google Cloud CLI è preinstallato nella cassetta degli attrezzi:

USER@cos-dev ~ $ toolbox
root@cos-dev:~# which gcloud
/google-cloud-sdk/bin/gcloud
# View installed components
root@cos-dev:~# gcloud components list

Your current gcloud CLI version is: 287.0.0
The latest available version is: 295.0.0
...

Tieni presente che gcloud CLI può accedere solo alle risorse che L'istanza VM è autorizzata ad accedere. Leggi documentazione di Compute Engine per Scopri di più sul provisioning di istanze VM con accesso ad altre risorse.

Leggi la documentazione di Google Cloud CLI per Scopri di più sull'uso di gcloud CLI.

Inserire e rimuovere i file dagli strumenti

Il file system radice dell'host è accessibile all'interno di toolbox tramite Percorso /media/root. Nell'host, la directory root di toolbox è accessibile seguendo questo percorso: /var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-VERSION/root dove USER è il tuo nome utente e VERSION è il numero di versione toolbox (ad esempio, v20220722).

I seguenti esempi mostrano come inserire file da e verso toolbox:

# Access the host filesystem inside the toolbox
USER@cos-dev ~ $ toolbox
root@cos-dev:~# ls /media/root
bin  boot  dev  etc  home  lib  lib64  ...
root@cos-dev:~# cp /media/root/home/USER/some-file .

# Access toolbox directory from the host
USER@cos-dev ~ $ sudo cp some-file /var/lib/toolbox/USER-gcr.io_cos-cloud_toolbox-v20220722/root

# Run a command inside toolbox and save its output in your home directory
USER@cos-dev ~ $ toolbox strace -o /media/root/$HOME/ls.strace ls
USER@cos-dev ~ $ more $HOME/ls.strace

Liberare spazio su disco utilizzato da toolbox

L'installazione di toolbox utilizza circa 2-3 GB di disco in /var (l'utilizzo del disco varia in base alla versione di Container-Optimized OS). A di spazio libero su disco utilizzato da toolbox, esegui le operazioni seguenti a seconda del tuo Versione Container-Optimized OS:

Traguardo 89 e precedenti

# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*

# remove container artifacts
docker image rm $IMAGE_PATH:$TAG

Puoi eseguire docker image ls per determinare questi valori. Ad esempio: IMAGE_PATH=gcr.io/cos-cloud/toolbox e TAG=v20220722.

Traguardo 93 e successivi

# remove files in /var/lib/toolbox
sudo rm -rf /var/lib/toolbox/*

# remove container artifacts
sudo ctr images rm $IMAGE_NAME

Puoi eseguire sudo ctr images ls -q per determinare questo valore. Ad esempio: IMAGE_NAME=gcr.io/cos-cloud/toolbox:v20220722.