Cambia il runtime del container da docker a containerd

I tuoi cluster utilizzano un runtime del container per creare ed eseguire pod Kubernetes. Prima della versione 1.13 di Cluster Anthos su Bare Metal, il runtime del container potrebbe essere Docker Engine o containerd. Tuttavia, il runtime del container può essere solo containerd a partire dalla versione 1.13 dei cluster Anthos su Bare Metal.

Se i tuoi cluster utilizzano Docker Engine come runtime del container, devi modificare il runtime del container in containerd. In questa pagina viene spiegato come impostare il runtime del container su containerd.

Devi specificare il runtime del container impostando il valore del campo containerRuntime nel file di configurazione del cluster. Tuttavia, l'impostazione o la modifica del valore di questo campo non è sufficiente: dovrai quindi creare un nuovo cluster o eseguire l'upgrade di un cluster esistente per rendere effettiva la modifica. In altre parole, puoi modificare il runtime del container solo quando crei un nuovo cluster o quando esegui l'upgrade di un cluster esistente.

Kubernetes 1.24 termina il supporto di Docker Engine

Il componente dockershim in Kubernetes consente ai nodi 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 come runtime del container.

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

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

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

È necessario continuare a installare Docker nella workstation di amministrazione perché il comando bmctl richiede Docker per le operazioni, come la creazione del cluster. Anche l'uso di Docker non è interessato dal ritiro di dockershim.

Per istruzioni dettagliate su come modificare il runtime del container da docker a containerd, consulta le sezioni seguenti.

Prima di iniziare

  • Tieni presente che, quando esegui l'upgrade di un cluster, devi eseguire l'upgrade del cluster di amministrazione prima di eseguire l'upgrade dei cluster utente.

  • Assicurati che il deployment supporti containerd versione 1.4.6 o successive. I cluster Anthos su Bare Metal installano questa versione su qualsiasi versione installata in precedenza di containerd.

  • Assicurati che i cluster Anthos su Bare Metal possano installare i seguenti file:

    • 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 il seguente certificato sui nodi: /etc/containerd/certs.d/

Imposta containerd come runtime del container per un nuovo cluster

Se la sezione spec.nodeConfig del file di configurazione del cluster è vuota o non è impostata, il runtime del container viene impostato automaticamente su containerd quando viene creato un nuovo cluster.

Tuttavia, se vuoi impostare esplicitamente containerd come runtime del container per un nuovo cluster, imposta il campo containerRuntime su containerd nella sezione spec.nodeConfig del file di configurazione del cluster. Dopo averlo fatto, la configurazione del cluster dovrebbe essere simile alla seguente:

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

Quando usi questo file di configurazione del cluster per creare un nuovo cluster, il runtime del container sarà containerd.

Cambia il runtime del container da docker a containerd durante l'upgrade di un cluster

Per modificare il runtime del container da docker a containerd durante l'upgrade di un cluster, procedi nel seguente modo:

  1. Cambia il campo containerRuntime da docker a containerd nella sezione spec.nodeConfig del file di configurazione del cluster. Dopo averlo fatto, la configurazione del cluster dovrebbe essere simile alla seguente:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      nodeConfig:
        containerRuntime: containerd
    
  2. Esegui questo comando per eseguire l'upgrade del cluster:

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Sostituisci quanto segue:

    • CLUSTER_NAME con il nome del cluster che vuoi aggiornare.
    • ADMIN_KUBECONFIG con il percorso del file kubeconfig del cluster di amministrazione.

Controlla lo stato del runtime del container

Per controllare lo stato del runtime del container, esegui il comando seguente:

systemctl status containerd

Cambia il runtime del container da containerd a docker durante l'upgrade di un cluster

Puoi utilizzare entrambi i runtime del container quando esegui l'upgrade dai cluster Anthos sulla versione 1.11-1.12 di Bare Metal. Tuttavia, consigliamo vivamente di utilizzare containerd perché il runtime del container Docker Engine non è supportato per la versione 1.13.0 e successive.