Containerlaufzeit ändern

Anthos-Cluster auf Bare-Metal fügen der Clusterkonfigurationsdatei das optionale Konfigurationsfeld containerRuntime hinzu. Verwenden Sie dieses Feld, um die Containerlaufzeit zu konfigurieren, die die Clusterknoten zum Planen von Containern für Kubernetes-Pods verwenden.

Ab Anthos-Clustern auf Bare-Metal 1.7 können Sie von kubelet direkt die Containerlaufzeitschnittstelle aufrufen lassen. Mit dieser Option können Sie kubelet von Docker entkoppeln, indem Sie die Notwendigkeit des Docker-Daemon entfernen.

Diese Änderung wird aufgrund der Zielsetzung für Kubernetes vorgenommen, die Verwendung des Docker-Daemons einzustellen und containerd als Standard festzulegen. Kubernetes plant, ab Kubernetes-Version 1.20 Warnungen zu senden und die Einstellung nach Version 1.24 abzuschließen. Diese Änderung entspricht der geplanten Änderung, containerd als Standard für GKE festzulegen.

In Anthos-Cluster on Bare Metal können Sie kubelet für die Verwendung von Docker oder containerd über das neue Feld containerRuntime konfigurieren.

Hinweis

  • Bestimmen Sie, welche Containerlaufzeit Ihre Cluster verwenden sollen. Sie können den Wert des Felds für die Containerlaufzeit nur ändern, wenn Sie einen Cluster upgraden oder installieren.

  • Achten Sie darauf, dass Ihre Bereitstellung containerd-Version 1.4.3 oder höher unterstützt. Anthos-Cluster auf Bare-Metal installiert diese Version über jede zuvor installierte Version von containerd.

  • Stellen Sie sicher, dass Anthos-Cluster auf Bare-Metal die folgenden Dateien installieren kann, die für beide Laufzeiten installiert sind:

    • Binärdateien

      • /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
    • Konfigurationsdateien

      • /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 Diese Datei wird nur installiert, wenn Sie einen HTTP-Proxy konfigurieren.
  • Sorgen Sie dafür, dass Anthos-Cluster auf Bare-Metal je nach gewählter Laufzeit die folgenden Zertifikate auf Ihren Knoten installieren kann:

    • Für Docker: /etc/docker/certs.d/
    • Für containerd:
      • /etc/docker/certs.d/
      • /etc/containerd/certs.d/

Containerlaufzeit für einen neuen Cluster konfigurieren

Um die Containerlaufzeit für einen neuen Cluster anzugeben, legen Sie das Feld containerRuntime im Abschnitt nodeConfig in der Clusterkonfigurationsdatei unter spec fest. Anthos-Cluster auf Bare-Metal unterstützen die folgenden Werte:

  • docker
  • containerd

Wenn das Feld leer ist oder nicht festgelegt ist, verwendet Anthos-Cluster on Bare Metal standardmäßig docker. Wenn Sie containerd verwenden möchten, sollte der Eintrag in Ihrer Konfiguration in etwa so aussehen wie in folgendem Beispiel:

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

Containerlaufzeit beim Upgrade eines Clusters konfigurieren

Sie können Anthos-Cluster auf Bare-Metal so konfigurieren, dass beim Upgrade von einer der folgenden Versionen eine andere Containerlaufzeit verwendet wird:

  • 1.6.0
  • 1.6.1
  • 1.6.2

Sie können den Wert des Felds für die Containerlaufzeit nur ändern, wenn Sie einen Cluster upgraden oder installieren.

Voraussetzungen

  • Administratorcluster vor Nutzerclustern aktualisieren
  • Legen Sie den Wert des Felds containerRuntime in Ihrer Konfigurationsdatei fest, bevor Sie Ihre Cluster upgraden.

Laufzeit in containerd ändern

Um die Containerlaufzeit während eines Upgrades festzulegen, legen Sie das Feld containerRuntime im Abschnitt nodeConfig unter spec in der Cluster-Konfigurationsdatei fest. Anthos-Cluster auf Bare-Metal unterstützen die folgenden Werte:

  • docker
  • containerd

Wenn Sie containerd verwenden möchten, ändern Sie Ihre Konfigurationsdatei entsprechend des folgenden Beispiels:

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

Wenn Sie die Containerlaufzeit der Clusterknoten im Rahmen des Upgrades auf containerd festlegen möchten, führen Sie den folgenden Befehl aus, um Ihre Cluster upzugraden:

bmctl upgrade cluster

Änderungen an der Steuerungsebene nach dem Upgrade

Während des Upgrades führt Anthos-Cluster auf Bare-Metal die folgenden Aufgaben auf Knoten der Steuerungsebene aus, um den Load-Balancer zu unterstützen, wenn die Laufzeit auf containerd festgelegt wurde:

  • docker.*.service-Dienste löschen
  • container.*.service-Dienste installieren
  • Neustart auf die systemd-Dienste haproxy und keepalived

Bei Clustern, die die docker-Laufzeit verwenden, werden nach dem Upgrade die vorhandenen systemd-Dienste haproxy und keepalived beibehalten.

Cluster mit Laufzeit containerd aktualisieren

Wenn Sie die Containerlaufzeit auf containerd setzen, aktualisiert der folgende Befehl die Image-Registry-Zertifikate in /etc/containerd/certs.d/.

bmctl update cluster

Cluster mit Laufzeit containerd zurücksetzen

Wenn Sie die Containerlaufzeit auf containerd setzen, löscht der folgende Befehl keine Konfigurationen, binären Dateien oder Verzeichnisse:

bmctl reset cluster

Während des Zurücksetzens wird der containerd-Dienst weiterhin ausgeführt, aber die von Kubernetes geplanten Container werden angehalten und aus der containerd-Laufzeit entfernt.

Löschen Sie die folgenden Binärdateien und Verzeichnisse, um das Zurücksetzen abzuschließen:

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

Status der Laufzeit containerd prüfen

Führen Sie den folgenden Befehl aus, um den Status von containerd als Teil der Systemdiagnose des Rechners zu prüfen:

systemctl status containerd