Modifica del runtime del container

Questa pagina spiega come specificare il runtime dei container utilizzato dal cluster per eseguire i pod Kubernetes. Puoi specificare il runtime del container impostando il valore del campo containerRuntime nel file di configurazione del cluster.

Puoi modificare il valore del campo containerRuntime solo durante l'upgrade o l'installazione di un cluster. Questo campo è facoltativo e, per impostazione predefinita, viene impostato su containerd se non viene definito.

Kubernetes 1.24 non supporta più Docker Engine

Il componente dockershim in Kubernetes consente ai nodi del cluster di utilizzare il runtime del container Docker Engine. Tuttavia, Kubernetes 1.24 ha rimosso il componente dockershim. Poiché i cluster Anthos su Bare Metal versione 1.13 verranno eseguiti su Kubernetes 1.24, versione 1.13 e successive, i cluster non possono più utilizzare Docker Engine.

Durante l'upgrade o la creazione dei cluster, tieni presente le seguenti regole di runtime dei container:

  • Devi utilizzare containerd per i cluster versione 1.13 e successive. Non puoi eseguire l'upgrade di un cluster 1.12 che utilizza Docker alla versione 1.13.
  • Non puoi creare cluster di versione 1.12 che utilizzano il runtime del container Docker Engine.
  • Puoi eseguire l'upgrade di un cluster 1.11 che utilizza Docker a un cluster 1.12 che utilizza Docker. Tuttavia, consigliamo vivamente di passare a containerd prima di eseguire l'upgrade.

L'installazione di Docker che utilizzi in sviluppo per creare immagini non è correlata al runtime del container Docker Engine all'interno del tuo cluster Kubernetes. Puoi comunque utilizzare Docker per creare immagini e creare container dell'applicazione. Questi container continueranno a funzionare all'interno del cluster.

Docker deve essere installato sulla workstation di amministrazione. Il comando bmctl richiede Docker per le operazioni, come la creazione di cluster. Anche l'uso di Docker non è interessato dal ritiro di dockershim.

Per istruzioni dettagliate su come specificare il runtime del container utilizzato nel cluster, consulta le sezioni seguenti.

Prima di iniziare

  • Identifica il runtime del container che i cluster devono utilizzare. Puoi modificare il valore del campo di runtime del container solo durante l'upgrade o l'installazione di un cluster.

  • Assicurati che il tuo deployment supporti containerd 1.4.6 o versioni successive. Cluster Anthos on bare metal installa questa versione su qualsiasi versione installata in precedenza di containerd.

  • Assicurati che i cluster Anthos su Bare Metal possano installare i seguenti file installati per entrambi i runtime:

    • File binari

      • /usr/bin/containerd
      • /usr/bin/containerd-shim
      • /usr/bin/containerd-shim-runc-v1
      • /usr/bin/containerd-shim-runc-v2
      • /usr/bin/crictl
      • /usr/bin/ctr
      • /usr/local/sbin/runc
    • File di configurazione

      • /etc/crictl.yaml
      • /etc/systemd/system/containerd.service
      • /etc/containerd/config.toml
      • /etc/containerd/certs.d/
      • /etc/systemd/system/containerd.service.d/09-proxy.conf Questo file viene installato solo se configuri un proxy HTTP.
  • Assicurati che i cluster Anthos su Bare Metal possano installare i seguenti certificati sui nodi in base al runtime di tua scelta:

    • Per containerd:
      • /etc/docker/certs.d/
      • /etc/containerd/certs.d/
    • Per Docker: /etc/docker/certs.d/

Configura il runtime del container per un nuovo cluster

Per impostare il runtime del container per un nuovo cluster, imposta il campo containerRuntime nella sezione nodeConfig sotto spec nel file di configurazione del cluster. Cluster Anthos su Bare Metal supporta i seguenti valori:

  • containerd
  • docker

Se il campo è vuoto o non è impostato, Cluster Anthos on bare metal utilizza containerd per impostazione predefinita. Per utilizzare Docker, la voce nella configurazione dovrebbe essere simile all'esempio seguente:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  nodeConfig:
    containerRuntime: docker

Configura il runtime del container durante l'upgrade di un cluster

Puoi configurare Cluster Anthos on bare metal per utilizzare un runtime dei container diverso quando esegui l'upgrade. Puoi modificare il valore del campo di runtime del container solo durante l'upgrade o l'installazione di un cluster.

Requisiti

  • Esegui l'upgrade dei cluster di amministrazione prima dei cluster utente
  • Imposta il valore del campo containerRuntime nel file di configurazione prima di eseguire l'upgrade dei cluster.

Cambia il runtime in Docker

Per impostare il runtime del container durante un upgrade, imposta il campo containerRuntime nella sezione nodeConfig sotto spec nel file di configurazione del cluster. Cluster Anthos su Bare Metal supporta i seguenti valori:

  • containerd
  • docker

Per utilizzare Docker, modifica il file di configurazione in modo che abbia il seguente esempio:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  nodeConfig:
    containerRuntime: docker

Per impostare il runtime dei container dei nodi del cluster su docker nell'ambito dell'upgrade, esegui questo comando per eseguire l'upgrade dei cluster:

bmctl upgrade cluster

Aggiorna i cluster con Docker impostato come runtime

Se imposti il runtime del container su docker, il seguente comando aggiorna i certificati del registro di immagini in /etc/containerd/certs.d/

bmctl update cluster

Reimposta i cluster che utilizzano containerd come runtime

Se utilizzi il runtime dei container predefinito, il seguente comando non elimina configurazioni, file binari o directory:

bmctl reset cluster

Durante la reimpostazione il servizio containerd continua a essere eseguito, ma i container pianificati da Kubernetes vengono arrestati e rimossi dal runtime del containerd.

Per completare il ripristino, elimina le directory e i file binari seguenti:

  • /etc/crictl.yaml
  • /etc/systemd/system/containerd.service
  • /etc/systemd/system/containerd.service.d/
  • /etc/containerd/config.toml
  • /etc/containerd/certs.d/

Se utilizzi Docker come runtime, durante la reimpostazione non viene eseguita alcuna pulizia.

Controlla lo stato del runtime

Per controllare lo stato del runtime come parte del controllo di integrità della macchina, esegui il comando seguente:

systemctl status RUNTIME

Sostituisci RUNTIME con il runtime di tua scelta: containerd o docker.