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.

A partire dai cluster Anthos su Bare Metal 1.7, puoi fare in modo che kubelet chiami direttamente l'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.

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.3 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 Docker: /etc/docker/certs.d/
    • Per containerd:
      • /etc/docker/certs.d/
      • /etc/containerd/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:

  • docker
  • containerd

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

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 da una delle seguenti versioni:

  • 1,6
  • 1,6,1
  • 1,6,2

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 containerd

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:

  • docker
  • containerd

Per utilizzare containerd, 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: containerd

Per impostare il runtime del container dei nodi del cluster su containerd come parte dell'upgrade, esegui il comando seguente per eseguire l'upgrade dei cluster:

bmctl upgrade cluster

Modifiche al piano di controllo dopo l'upgrade

Durante l'upgrade, i cluster Anthos su Bare Metal eseguono le seguenti attività sui nodi del piano di controllo per supportare il bilanciatore del carico se il runtime è stato impostato su containerd:

  • Elimina i servizi docker.*.service
  • Installa i servizi container.*.service
  • Riavvia per i servizi di sistema haproxy e keepalived

I cluster che utilizzano il runtime docker mantengono i propri servizi haproxy e keepalived esistenti dopo l'upgrade.

Aggiornamento dei cluster con containerd impostato come runtime

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

bmctl update cluster

Reimpostazione dei cluster con containerd impostato come runtime

Se imposti il runtime del container su containerd, il comando seguente non elimina configurazioni, file binari o directory:

bmctl reset cluster

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

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/

Controlla lo stato del runtime containerizzato

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

systemctl status containerd