Containerd als Containerlaufzeit verwenden

Die Containerlaufzeit ist eine Software, die für die Verwaltung von Containern und Container-Images auf einem Kubernetes-Knoten zuständig ist. containerd ist eine abgestufte CNCF (Cloud Native Cloud Foundation) Containerlaufzeit. Kubernetes wird nativ unterstützt und als ressourceneffizienter und sicherer als Docker Engine für Kubernetes betrachtet. Bis Kubernetes 1.20 war Docker Engine die primäre Containerlaufzeit. Dockershim, der Integrationscode von Docker Engine in Kubernetes, wurde in Kubernetes 1.20 verworfen und wird in Kubernetes 1.24 entfernt.

In Zukunft sollten Sie containerd in Ihren Clustern verwenden.

Unterstützung für containerd in einem Administratorcluster

Google Distributed Cloud verwendet containerd für alle Administratorclusterknoten.

Unterstützung für containerd in einem Nutzercluster

Google Distributed Cloud unterstützt folgende Arten von Betriebssystem-Images für Nutzerclusterknoten:

Typ des Betriebssystem-ImagesContainerlaufzeit
ubuntu_containerdcontainerd
coscontainerd
windowscontainerd

Einschränkungen und Empfehlungen

  • Ab Version 1.13.0 unterstützt Google Distributed Cloud den Betriebssystem-Image-Typ ubuntu nicht mehr. Alle Clusterknoten müssen die containerd-Laufzeit verwenden.

  • Sie können keinen Cluster auf 1.13 aktualisieren, der Docker Engine verwendet. Sie müssen Ihren Cluster aktualisieren, um die containerd-Laufzeit zu verwenden, bevor Sie ein Upgrade auf 1.13 durchführen.

  • Ab Version 1.12.0 können Sie keine neuen Cluster mehr erstellen, die den Betriebssystem-Image-Typ ubuntu verwenden. Das heißt, Sie können keine neuen Cluster mehr erstellen, die die Docker Engine-Containerlaufzeit verwenden.

Knotenpools mit Docker Engine angeben

Ubuntu

Listen Sie die Ubuntu-Knotenpools auf, die Docker Engine verwenden:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
    -o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'

Ersetzen Sie USER_CLUSTER_KUBECONFIG durch den Pfad der kubeconfig-Datei des Nutzerclusters.

Beispielausgabe:

ubuntu-node-pool-1
ubuntu-node-pool-3

Windows

Alle Windows-Knotenpools in einem Nutzercluster verwenden dieselbe Containerlaufzeit. Die Laufzeit für Windows-Knoten wird durch den Wert von enableWindowsDataplaneV2 bestimmt, einem Feld in der Nutzercluster-Konfigurationsdatei.

Wenn enableWindowsDataplaneV2 den Wert true hat, verwenden alle Windows-Knoten im Nutzercluster containerd. Wenn der Wert false ist, verwenden alle Windows-Knoten Docker Engine.

Führen Sie den folgenden Befehl aus, um festzustellen, für welche Nutzercluster enableWindowsDataplaneV2 auf false festgelegt ist. Hier sehen Sie, welche Nutzercluster für die Verwendung von Docker Engine für Windows-Knoten konfiguriert sind.

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
    -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'

In der Ausgabe werden alle Nutzercluster aufgelistet, die für die Verwendung von Docker Engine für Windows-Knoten konfiguriert sind. Beispiele:

user-cluster-1

Unabhängig davon, ob ein Nutzercluster Windows-Knotenpools hat, wenn Sie für den Cluster enableWindowsDataplaneV2 auf false festgelegt haben, können Sie für den Cluster kein Upgrade auf Version 1.13 durchführen.

Linux-Knotenpools zur Verwendung von containerd aktualisieren

Legen Sie für jeden Knotenpool in der Konfigurationsdatei des Nutzerclusters den Wert osImageType ubuntu_containerd oder cos fest.

Beispiel:

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_containerd"

Aktualisieren Sie den Nutzercluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Dabei gilt:

  • ADMIN_CLUSTER_KUBECONFIG: der Pfad der kubeconfig-Datei des Administratorclusters

  • USER_CLUSTER_CONFIG: der Pfad Ihrer Nutzerclusterkonfigurationsdatei.

Windows-Knoten für die Verwendung von containerd aktualisieren

Legen Sie in der Konfigurationsdatei des Nutzerclusters enableWindowsDataplaneV2 auf true fest.

enableWindowsDataplaneV2: true

Aktualisieren Sie den Nutzercluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Der vorherige Befehl legt die Containerlaufzeit für alle Windows-Knoten im Cluster auf „containerd“ fest.