Containerlaufzeit von Docker in Containerd ändern

Ihre Cluster verwenden eine Containerlaufzeit, um Kubernetes-Pods zu erstellen und auszuführen. Vor Version 1.13 von Anthos-Clustern auf Bare-Metal-Servern kann die Containerlaufzeit entweder Docker Engine oder containerd sein. Die Containerlaufzeit kann jedoch erst ab containerd Version 1.13 von Anthos-Clustern auf Bare-Metal-Geräten betragen.

Wenn Ihre Cluster Docker Engine als Containerlaufzeit verwenden, sollten Sie diese Containerlaufzeit in containerd ändern. Auf dieser Seite wird erläutert, wie Sie die Containerlaufzeit auf containerd festlegen.

Sie geben die Containerlaufzeit an, indem Sie den Wert des Felds containerRuntime in der Clusterkonfigurationsdatei festlegen. Es reicht jedoch nicht aus, nur den Wert dieses Felds festzulegen oder zu ändern. Sie müssen dann einen neuen Cluster erstellen oder einen vorhandenen Cluster aktualisieren, damit die Änderung wirksam wird. Sie können die Containerlaufzeit also nur ändern, wenn Sie einen neuen Cluster erstellen oder ein vorhandenes Cluster aktualisieren.

Mit Kubernetes 1.24 endet die Unterstützung von Docker Engine

Die Komponente dockershim in Kubernetes ermöglicht Clusterknoten die Verwendung der Docker Engine-Containerlaufzeit. In Kubernetes 1.24 wurde die Komponente dockershim jedoch entfernt. Da Anthos on Bare Metal-Version 1.13 auf Kubernetes 1.24 ausgeführt wird, können Cluster mit Version 1.13 und höher die Docker Engine nicht mehr als Containerlaufzeit verwenden.

Beachten Sie beim Upgrade oder Erstellen von Clustern folgende Containerlaufzeitregeln:

  • Sie müssen containerd für Cluster ab Version 1.13 verwenden.
  • Es ist nicht zulässig, Cluster der Version 1.12 zu erstellen, die die Docker Engine-Containerlaufzeit verwenden.
  • Sie können ein Upgrade eines 1.11-Clusters mit Docker Engine auf einen 1.12-Cluster durchführen, der Docker Engine verwendet. Wir empfehlen jedoch dringend, vor dem Upgrade auf containerd zu wechseln.

Die Docker-Installation, die Sie bei der Entwicklung zum Erstellen von Images verwenden, steht nicht im Zusammenhang mit der Docker Engine-Containerlaufzeit in Ihrem Kubernetes-Cluster. Sie können Docker weiterhin zum Erstellen von Images und Anwendungscontainern verwenden. Diese Container funktionieren weiterhin in Ihrem Cluster.

Sie müssen Docker weiterhin auf Ihrer Admin-Workstation installieren, da der Befehl bmctl Docker für Vorgänge wie das Erstellen von Clustern erfordert. Diese Verwendung von Docker ist auch nicht von der Einstellung von dockershim betroffen.

Eine ausführliche Anleitung zum Ändern der Containerlaufzeit von docker zu containerd finden Sie in den folgenden Abschnitten.

Hinweis

  • Denken Sie daran, dass Sie beim Upgrade eines Clusters zuerst den Administratorcluster und vorher auch die Nutzercluster aktualisieren müssen.

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

  • Achten Sie darauf, dass Anthos-Cluster auf Bare Metal die folgenden Dateien installieren können:

    • 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.
  • Achten Sie darauf, dass Anthos-Cluster auf Bare Metal das folgende Zertifikat auf Ihren Knoten installieren können: /etc/containerd/certs.d/

containerd als Containerlaufzeit für einen neuen Cluster festlegen

Wenn der Abschnitt spec.nodeConfig Ihrer Clusterkonfigurationsdatei leer oder nicht festgelegt ist, wird die Containerlaufzeit des Clusters beim Erstellen eines neuen Clusters automatisch auf containerd festgelegt.

Wenn Sie jedoch containerd explizit als Containerlaufzeit für einen neuen Cluster festlegen möchten, legen Sie das Feld „containerRuntime“ im Abschnitt spec.nodeConfig der Clusterkonfigurationsdatei auf containerd fest. Danach sollte die Clusterkonfiguration in etwa so aussehen:

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

Wenn Sie diese Clusterkonfigurationsdatei zum Erstellen eines neuen Clusters verwenden, ist die Containerlaufzeit containerd.

Containerlaufzeit beim Upgrade eines Clusters von docker in containerd ändern

Führen Sie die folgenden Schritte aus, um beim Upgrade eines Clusters die Containerlaufzeit von docker in containerd zu ändern:

  1. Ändern Sie das Feld „containerRuntime“ im Abschnitt spec.nodeConfig der Clusterkonfigurationsdatei von docker in containerd. Danach sollte die Clusterkonfiguration in etwa so aussehen:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      nodeConfig:
        containerRuntime: containerd
    
  2. Führen Sie den folgenden Befehl aus, um das Upgrade für Ihren Cluster durchzuführen:

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Dabei gilt:

    • CLUSTER_NAME durch den Namen des Clusters, den Sie aktualisieren möchten.
    • ADMIN_KUBECONFIG durch den Pfad der SavedModel-Datei des Administratorclusters.

Status der Containerlaufzeit prüfen

Führen Sie den folgenden Befehl aus, um den Status der Containerlaufzeit zu prüfen:

systemctl status containerd

Containerlaufzeit beim Upgrade eines Clusters von containerd in docker ändern

Sie können beide Containerlaufzeiten verwenden, wenn Sie ein Upgrade von Anthos-Clustern auf Bare-Metal-Version 1.11 auf 1.12 durchführen. Wir empfehlen jedoch dringend, containerd zu verwenden, da die Containerlaufzeit Docker Engine ab Version 1.13.0 nicht unterstützt wird.