Modifica del runtime del container

I cluster Anthos su Bare Metal aggiungono il campo di configurazione facoltativo containerRuntime al file di configurazione del cluster. Utilizza questo campo per configurare il runtime del container utilizzato dai nodi del cluster per pianificare i container per i pod Kubernetes.

Puoi far chiamare kubelet direttamente all'interfaccia di runtime del container. Questa opzione ti consente di disaccoppiare kubelet da Docker eliminando la necessità del daemon Docker.

Questa modifica è necessaria a causa degli obiettivi di Kubernetes per ritirare l'uso del daemon Docker e impostare il container come predefinito. Kubernetes prevede di inviare avvisi a partire da Kubernetes versione 1.20 e finalizzare il ritiro entro la versione 1.24.Questa modifica si allinea alla modifica pianificata per rendere containerizzato l'impostazione predefinita per GKE.

Nei cluster Anthos su Bare Metal, puoi configurare kubelet in modo che utilizzi Docker o containerd attraverso il nuovo campo containerRuntime. Per impostazione predefinita, kubelet utilizza containerd come runtime dei container.

Prima di iniziare

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

  • 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 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 scelto:

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

Configurare 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 in spec nel file di configurazione del cluster. I cluster Anthos su Bare Metal supportano i valori seguenti:

  • containerd
  • docker

Se il campo è vuoto o non viene configurato, i cluster Anthos su Bare Metal utilizzano containerd per impostazione predefinita. Per utilizzare Docker, la voce nella tua 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

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

Puoi configurare i cluster Anthos su Bare Metal in modo che utilizzino un runtime del 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

  • 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.

Passa il runtime a Docker

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

  • containerd
  • docker

Per utilizzare Docker, modifica il file di configurazione in modo che sia simile all'esempio seguente:

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

Per impostare il runtime del container dei nodi del cluster su docker come parte dell'upgrade, esegui il comando seguente 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 comando seguente aggiorna i certificati di registro delle immagini in /etc/containerd/certs.d/

bmctl update cluster

Reimposta i cluster che utilizzano containerd come runtime

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

bmctl reset cluster

Durante il ripristino, il servizio containerd continuerà a essere eseguito, ma i container pianificati da Kubernetes verranno arrestati e rimossi dal runtime dei container.

Elimina i seguenti file binari e directory per completare il ripristino:

  • /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 scelto: containerd o docker.