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-Images | Containerlaufzeit |
---|---|
ubuntu_containerd | containerd |
cos | containerd |
windows | containerd |
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. Beispiel:
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.