Bekannte Probleme bei GKE

Auf dieser Seite werden bekannte Probleme mit GKE aufgeführt. Diese Seite richtet sich an Administratoren und Architekten, die den Lebenszyklus der zugrunde liegenden technischen Infrastruktur verwalten und auf Benachrichtigungen und Seiten reagieren, wenn Service Level Objectives (SLOs) nicht erfüllt werden oder Anwendungen ausfallen.

Auf dieser Seite sind bekannte Probleme für alle unterstützten Versionen und für die beiden Nebenversionen aufgeführt, die der frühesten Version im erweiterten Support unmittelbar vorausgehen. Nachdem eine Version das Ende des erweiterten Supports erreicht hat, werden alle N-2-Probleme entfernt. Wenn beispielsweise Version 1.30 das Ende des erweiterten Supports erreicht, werden bekannte Probleme, die für Version 1.28 und früher spezifisch sind, entfernt.

Wenn Sie am Google-Entwicklerprogramm teilnehmen, speichern Sie diese Seite, um Benachrichtigungen zu erhalten, wenn eine Versionsanmerkung zu dieser Seite veröffentlicht wird. Weitere Informationen finden Sie unter Gespeicherte Seiten.

Zum Filtern der bekannten Probleme nach einer Produktversion oder -kategorie wählen Sie in den folgenden Drop-down-Menüs die gewünschten Filter aus.

Wählen Sie Ihre GKE-Version aus:

Wählen Sie eine Kategorie für Ihr Problem aus:

Oder suchen Sie nach Ihrem Problem:

Kategorie Identifizierte Version(en) Korrigierte Version(en) Problem und Problemumgehung
Vorgang 1.33-Versionen vor 1.33.4-gke.1036000 1.33.4-gke.1036000 und höher

Falsche Leistungsstufe für dynamisch bereitgestellte Lustre-Instanzen

Wenn Sie eine Lustre-Instanz dynamisch bereitstellen, schlägt die Instanzerstellung mit einem InvalidArgument-Fehler für „PerUnitStorageThroughput“ fehl, unabhängig vom in der API-Anfrage angegebenen Wert für „perUnitStorageThroughput“.

Workaround:

Führen Sie ein Upgrade des GKE-Cluster auf Version 1.33.4-gke.1036000 oder höher durch. Wenn Sie den Stable Channel verwenden, ist möglicherweise noch keine neuere Version verfügbar. In diesem Fall können Sie manuell eine Version aus den Kanälen „Regelmäßig“ oder „Schnell“ auswählen, die den Fix enthält.

Vorgang
  • 1.32.3-gke.1099000 und höher
  • 1.33
1.33.3-gke.1266000 und höher

Eingabe-/Ausgabefehler beim Umbenennen oder Verschieben von Dateien mit dem Cloud Storage FUSE-CSI-Treiber

Wenn Sie eine betroffene Version des Cloud Storage FUSE CSI-Treibers verwenden, kann das Umbenennen oder Verschieben von Dateien in Cloud Storage-Buckets mit einem E/A-Fehler fehlschlagen.

Workaround:

Fügen Sie Ihrem Pod-Manifest vorübergehend eine bestimmte Sidecar-Bilddefinition hinzu. Fügen Sie im Abschnitt spec.containers des Pod-Manifests die folgende Containerdefinition mit dem Image gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2 hinzu.

    # Add the following block to use the fixed sidecar image
    - name: gke-gcsfuse-sidecar
      image: gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2
    

Weitere Informationen finden Sie im Pod-Manifest unter Privates Image für den Sidecar-Container konfigurieren.

Nachdem Sie Ihren Cluster auf eine korrigierte GKE-Version oder höher aktualisiert haben, müssen Sie den gesamten gke-gcsfuse-sidecar-Block aus Ihrem Manifest entfernen. Nachdem Sie diesen Block entfernt haben, fügt GKE das richtige Sidecar-Image für Ihre aktualisierte Clusterversion wieder automatisch ein und verwaltet es.

Logging und Monitoring Alle Versionen TBD

Race-Bedingung in gke-metrics-agent-DaemonSets

Wenn Sie einem Knotenpool das Label cloud.google.com/gke-metrics-agent-scaling-level hinzufügen, um die Speicherzuweisung des gke-metrics-agent-DaemonSets manuell zu erhöhen, tritt beim Erstellen neuer Knoten eine Race-Bedingung im DaemonSet auf. Diese Race Condition führt zu zeitweiligen Neustarts und kann zu verlorenen Messwerten führen.

Dieses Problem tritt auf, weil es eine Verzögerung gibt, bevor das Label einem neuen Knoten im Knotenpool hinzugefügt wird. Während dieser Verzögerung erstellt das DaemonSet einen Pod mit der ursprünglichen Speicherzuweisung auf diesem Knoten. Nachdem das Label angewendet wurde, erstellt das DaemonSet einen Pod mit der neuen Speicherzuweisung. Der vorhandene Pod wird nicht vollständig gelöscht, wenn der aktualisierte Pod gestartet wird. Beide Pods versuchen, an dieselbe Portnummer zu binden.

Workaround:

Nachdem Sie einem Knotenpool das Label cloud.google.com/gke-metrics-agent-scaling-level hinzugefügt haben, starten Sie das gke-metrics-agent-DaemonSet neu:

kubectl -n kube-system rollout restart daemonset gke-metrics-agent
Upgrades 1.33 1.33.2-gke.1043000

Niedrigeres Limit für offene Dateien mit containerd 2.0

Für Knotenpools mit GKE-Version 1.33, die containerd 2.0 verwenden, wird das standardmäßige Softlimit für offene Dateien (ulimit -n) für Container auf 1.024 gesenkt.

Dies ist eine Änderung in containerd selbst (siehe containerd PR #8924), bei der LimitNOFILE aus containerd.service entfernt wurde. Dadurch wird das standardmäßige Softlimit des Systems angewendet.

Bei Arbeitslasten, die ein höheres Standard-Softlimit erwarten (z. B. solche, die implizit auf dem vorherigen höheren Standardwert basieren), kann es zu Fehlern wie Too many open files-Fehlern kommen.

Lösung

Führen Sie ein Upgrade von einer früheren 1.33-Patchversion auf 1.33.2-gke.1043000 oder höher durch.

Workaround:

Sie haben folgende Möglichkeiten, um das Limit für offene Dateien für Ihre Arbeitslasten zu erhöhen:

  • Anpassung auf Anwendungsebene:Ändern Sie den Anwendungscode oder die Konfiguration, um ulimit -n oder prlimit --nofile=524288 explizit festzulegen.
  • Containerd-NRI-Ulimit-Adjuster-Plug-in : Verwenden Sie das containerd/nri ulimit-adjuster-Plug-in, um das ulimit anzupassen.
  • Downgrade des Knotenpools (nur Standard): Bei GKE-Standardclustern können Sie vorübergehend ein Downgrade des Knotenpools auf Version 1.32 durchführen, um dieses Problem zu umgehen, bis eine dauerhafte Lösung verfügbar ist.
Weitere Informationen zur Migration zu containerd 2 finden Sie unter Knoten zu containerd 2 migrieren.
Upgrades 1.31.5-gke.1169000, 1.32.1-gke.1376000 1.31.7-gke.1164000, 1.32.3-gke.1512000

Ungültiger CRD-Status.storedVersions für verwaltete CRDs

Einige von GKE verwaltete CRDs haben möglicherweise ein ungültiges status.storedVersions-Feld, was das Risiko birgt, dass nach einem Upgrade der Zugriff auf CRD-Objekte unterbrochen wird.

Dieses Problem betrifft Cluster, die die folgenden beiden Bedingungen erfüllen:

  • Cluster, die zu einem bestimmten Zeitpunkt eine betroffene GKE-Version verwendet haben.
  • Cluster, in denen nicht unterstützte (served=false) Versionen von CRD-Objekten in etcd gespeichert waren.

Workaround:

Der empfohlene Workaround besteht darin, Clusterupgrades zu verzögern, bis das Problem behoben ist.

Wenn Sie wissen, dass Ihr Cluster nicht unterstützte Versionen von CRD-Objekten enthält, können Sie diese Versionen mit dem Befehl kubectl patch dem Feld status.storedVersions hinzufügen.

Betrieb, Logging und Monitoring 1.32.2-gke.1652000, 1.31.6-gke.1221000, 1.30.10-gke.1227000
  • 1.32.2-gke.1652003 oder höher
  • 1.31.6-gke.1221001 oder höher
  • 1.30.10-gke.1227001 oder höher

Fehlende Messwerte oder Workload Autoscaler wird nicht skaliert

Nachdem die Clustergröße um mehr als fünf Knoten zugenommen hat, können in den betroffenen Versionen Lücken bei den Messwertdaten auftreten. Dieses Problem kann sich auch auf Autoscaling-Vorgänge auswirken.

Dieses Problem betrifft nur Cluster, die auf die betroffenen Versionen aktualisiert wurden. Neu erstellte Cluster sollten wie erwartet funktionieren.

Workaround:

Wenn Sie betroffen sind, können Sie ein Downgrade auf eine Patchversion oder ein Upgrade auf die neueren korrigierten Versionen durchführen.

Vorgang

Größen- und Anhängelimits für Google Cloud Hyperdisk

Normalerweise wird die automatische Bereitstellung eines neuen Knotens durch einen Pod ausgelöst, der aufgrund der Volume-Anhangslimits eines Knotens nicht erfolgreich geplant werden kann. Wenn Arbeitslasten, die ein Hyperdisk-Produkt verwenden, auf einem Knoten geplant werden, auf dem eine C3-VM ausgeführt wird, erfolgt keine automatische Knotenbereitstellung und der Pod wird auf dem bereits vollen Knoten geplant.

Die Arbeitslast wird auf dem Knoten geplant, obwohl keine verfügbare Festplattenverbindung vorhanden ist. Die Arbeitslast kann auch aufgrund eines Fehlers wie dem folgenden nicht gestartet werden:

 AttachVolume.Attach failed for volume "[VOLUME NAME]" : rpc error: code = InvalidArgument desc = Failed to Attach: failed when waiting for zonal op: rpc error: code = InvalidArgument desc = operation operation-[OPERATION NUMBERS] failed (UNSUPPORTED_OPERATION): Maximum hyperdisk-balanced disks count should be less than or equal to [16], Requested : [17]

Das Problem tritt bei allen Hyperdisk-Produkten auf C3-Maschinen auf.

Die Grenzwerte für das Anhängen von Hyperdisk-Volumes variieren je nach Anzahl der vCPUs der VM und dem Hyperdisk-Produkt. Weitere Informationen finden Sie unter Leistungsgrenzen von Hyperdisk.

Workaround:

Hyperdisk-Produkte lösen die automatische Bereitstellung auf anderen VM-Typen aus. Wir empfehlen eine Form, die nur Hyperdisk unterstützt.

Vorgang 1.32.3-gke.1927000, 1.32.3-gke.1785000, 1.32.3-gke.1717000, 1.32.3-gke.1440000, 1.32.3-gke.1170000, 1.32.3-gke.1250000, 1.32.3-gke.1671000, 1.32.3-gke.1596000, 1.32.3-gke.1298000

gke-metadata-server wird auf TPU-/GPU-Knoten durch OOMKilled beendet

Auf GKE-TPU-Knoten (z. B. ct4p-hightpu-4t) und GPU-Knoten (z. B. a3-highgpu-8g) beendet der Kernel den gke-metadata-server möglicherweise mit einem OOMKilled, wenn die Speichernutzung des Servers 100 MB überschreitet.

Workaround:

Wenn Sie OOMKilled-Ereignisse für gke-metadata-server auf TPU- oder GPU-Knoten beobachten, wenden Sie sich an das GKE Identity-On-Call-Team (Komponenten-ID: 395450), um Informationen zu möglichen Maßnahmen zu erhalten.

Vorgang
  • 1.32.0-gke.1358000 bis 1.32.4-gke.1106006, 1.32.4-gke.1236007, 1.32.4-gke.1353001, 1.32.4-gke.1415001, 1.32.4-gke.1533000
  • 1.33.0-gke.0 bis 1.33.0-gke.1552000
  • 1.32.4-gke.1353003 und höher
  • 1.33.0-gke.1552000 und höher

Die Größenänderung von Volumes kann aufgrund des Status „NodePendingResize“ für PVCs hängen bleiben.

Bei Clustern mit Version 1.32, die Knoten mit Version 1.31 oder niedriger haben, kann der PersistentVolumeClaim-Status während der Größenänderung nicht aktualisiert werden. Dieser falsche Status verhindert, dass nachfolgende Größenänderungsvorgänge gestartet werden, wodurch weitere Größenänderungen verhindert werden.

Ein PVC in diesem Status hat ein Feld status.allocatedResourceStatuses, das NodePendingResize oder sowohl das Feld status.allocatedResources als auch status.conditions.type: FileSystemResizePending enthält.

Wenn ein PVC erstellt wurde, während Ihr Cluster eine betroffene Version hatte, kann dieses Problem auch nach dem Upgrade Ihres Clusters auf eine bekannte behobene Version weiterhin auftreten. In diesem Fall muss Ihr PVC gepatcht werden, um das Feld status.allocatedResources mit einem einmaligen Workaround zu entfernen.

Workaround:

PVCs, die aufgrund eines nicht zugewiesenen Status hängen bleiben, können gepatcht werden, um diesen Status zu entfernen. Mit einem Patch-Befehl wie dem folgenden können Sie den Status „dangling“ entfernen:

kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResourceStatuses":null}}'
kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResources":null}}'
Vorgang
  • 1.32.4-gke.1236007, 1.32.4-gke.1353001
  • 1.32.4-gke.1353003 und höher

Der PDCSI-Treiber protokolliert möglicherweise zu viele Informationen.

In GKE-Clustern mit bestimmten Versionen von 1.32 werden möglicherweise übermäßig viele Logmeldungen vom PDCSI-Treiber ausgegeben. Diese zusätzlichen Logs würden das Kontingent für die Cloud Logging Write API aufbrauchen.

Workaround:

Sie können diese übermäßige Protokollierung reduzieren, indem Sie einen Ausschlussfilter hinzufügen. Verwenden Sie die folgende Abfrage, um die Aufnahme der Logmeldungen in Cloud Logging auszuschließen:

      resource.type="k8s_container"
      resource.labels.container_name="gce-pd-driver"
      (sourceLocation.file="cache.go" OR "Cannot process volume group")
    
Vorgänge
  • 1.27.16-gke.2440000 und höher
  • 1.28.15-gke.1673000 und höher
  • 1.29.13-gke.1038000 und höher
  • 1.30.9 und höher
  • 1.31.7 und höher
  • 1.32.1-gke.1357001 und höher
  • 1.27.16-gke.2691000 und höher
  • 1.28.15-gke.2152000 und höher
  • 1.29.15-gke.1218000 und höher
  • 1.30.11-gke.1190000 und höher
  • 1.31.7-gke.1363000 und höher
  • 1.32.4-gke.1106000 und höher
  • 1.33.0-gke.1552000 und höher

Pods, die versuchen, nichtflüchtige NFS-Volumes auf COS-Knoten bereitzustellen, die zuvor eine RO-Bereitstellung (Read-Only, nur lesen) hatten, werden nur im RO-Modus bereitgestellt.

In GKE-Version 1.27 und höher können NFS-Volumes, die den Kubernetes-CSI-Treiber im Baum verwenden, nichtflüchtige Volumes nur im RO-Modus einbinden, wenn zuvor eine RO-Einbindung auf demselben Knoten erfolgt ist.

Workaround:

Downgrade von Knotenpools auf eine Version, die älter als die betroffenen Versionen ist

Vorgänge
  • Versionen 1.32 von 1.32.1-gke.1357001 bis 1.32.4-gke.1106000 (nicht einschließlich)
  • Alle 1.33-Versionen vor 1.33.0-gke.1552000
  • Version 1.32: 1.32.4-gke.1106000 und höher
  • Version 1.33: 1.33.0-gke.1552000 und höher

Pods, die versuchen, nichtflüchtige NFS-Volumes auf Ubuntu-Knoten bereitzustellen, können nicht ausgeführt werden.

In GKE-Version 1.32 und höher können NFS-Volumes, die den integrierten CSI-Treiber von Kubernetes verwenden, nicht auf Ubuntu-Knoten bereitgestellt werden. In diesem Fall werden möglicherweise die folgenden Fehlermeldungen angezeigt:

"MountVolume.SetUp failed for volume 'nfs-storage' : mount failed: exit status 1"
Output: Mount failed: mount failed: exit status 127
"Output: chroot: failed to run command 'mount': No such file or directory failed to run command mount on Ubuntu nodes"
Neben diesen Fehlermeldungen können Pods, die diese Volumes verwenden, nicht gestartet werden.

Workaround:

Downgrade von Knotenpools auf Version 1.31 durchführen

Vorgang >= 1.28.15-gke.1436000, < 1.28.15-gke.1668000, >= 1.29.12-gke.1040000, < 1.29.13-gke.1028000, >= 1.30.8-gke.1053000, < 1.30.8-gke.1287000, >= 1.31.4-gke.1057000, < 1.31.6-gke.1020000, >= 1.32.0-gke.1281000, < 1.32.1-gke.1302000
  • 1.28.15-gke.1668000 oder höher
  • 1.29.13-gke.1028000 oder höher
  • 1.30.8-gke.1287000 oder höher
  • 1.31.6-gke.1020000 oder höher
  • 1.32.1-gke.1302000 oder höher

Pods, die io_uring-bezogene Systemaufrufe verwenden, können aufgrund eines Fehlers im Linux-Kernel in den Status „D“ (Festplatten-Ruhezustand), auch TASK_UNINTERRUPTIBLE genannt, eintreten. Prozesse im Status D können nicht durch Signale, einschließlich SIGKILL, reaktiviert werden.

Wenn ein Pod von diesem bekannten Problem betroffen ist, werden seine Container möglicherweise nicht normal beendet. In den containerd-Logs werden möglicherweise wiederholte Meldungen wie die folgende angezeigt: Kill container [container-id]. Das bedeutet, dass das System wiederholt versucht, einen Container zu stoppen.
Gleichzeitig werden in den kubelet-Logs Fehlermeldungen wie die folgenden angezeigt:

"Kill container failed" err="rpc error: code = DeadlineExceeded desc = context deadline exceeded"

oder

"Error syncing pod, skipping" err="[failed to \"KillContainer\" for \"container-name\" with KillContainerError: \"rpc error: code = DeadlineExceeded desc = an error occurs during waiting for container \\\"container-id\\\" to be killed: wait container \\\"container-id\\\": context deadline exceeded\", failed to \"KillPodSandbox\" for \"pod-uuid\" with KillPodSandboxError: \"rpc error: code = DeadlineExceeded desc = context deadline exceeded\"]" pod="pod-name" podUID="pod-uuid"

Diese Symptome deuten darauf hin, dass Prozesse im Container im unterbrechungsfreien Ruhemodus (D-Status) feststecken, was eine ordnungsgemäße Beendigung des Pods verhindert.

Arbeitslasten, die „io_uring“ direkt oder indirekt über eine Sprachlaufzeitumgebung wie NodeJS verwenden, sind möglicherweise von diesem bekannten Problem betroffen. Betroffene Arbeitslasten haben einen Prozess im Status „D“ (Festplatten-Ruhezustand) in der Datei /proc/<pid>/state und zeigen den String io_uring als Teil des Inhalts von /proc/<pid>/stack an. Bei NodeJS-Arbeitslasten kann die Verwendung von io_uring möglicherweise über UV_USE_IO_URING=0 deaktiviert werden.

Workaround:

Führen Sie ein Upgrade der Clusternodes auf eine korrigierte Version oder höher durch.

Vorgang 1.28, 1.29, 1.30, 1.31
  • 1.30.8-gke.1261000 und höher
  • 1.31.4-gke.1183000 und höher
  • 1.32.0-gke.1448000 und höher

Arbeitslasten, die Image-Streaming verwenden, schlagen mit Authentifizierungsfehlern fehl

Ein Fehler in der Image-Streaming-Funktion kann dazu führen, dass Arbeitslasten fehlschlagen, wenn beim Lesen von Dateien durch den Container bestimmte Bedingungen erfüllt sind. Fehlermeldungen im Zusammenhang mit Authentifizierungsfehlern sind möglicherweise im gcfsd-Log sichtbar.

So prüfen Sie, ob Sie betroffen sind: Suchen Sie in den Logs mit dieser Suchanfrage: resource.type="k8s_node" resource.labels.project_id="[project_id]" resource.labels.cluster_name="[cluster_name]" logName="projects/[project_id]/logs/gcfsd" "backend.FileContent failed" "Request is missing required authentication credential."

Das Vorhandensein dieser Fehler weist darauf hin, dass die Knoten betroffen sind.

Wenn Sie von diesem Problem betroffen sind, können Sie ein Upgrade Ihrer Knotenpools auf eine gepatchte GKE-Version durchführen.

Vorgang
  • 1.30.0 bis 1.30.5-gke.1443001
  • 1.31.0 bis 1.31.1-gke.1678000
  • 1.30.5-gke.1628000 und höher
  • 1.31.1-gke.1846000 und höher

Erhöhte Pod-Bereinigungsraten in GKE-Versionen 1.30 und 1.31

Einige Versionen von GKE 1.30 und GKE 1.31, die COS 113 bzw. COS 117 verwenden, haben Kernel, die mit der Option CONFIG_LRU_GEN_ENABLED=y erstellt wurden. Diese Option aktiviert die Kernelfunktion Multi-Gen LRU, die dazu führt, dass das Kubelet die Speichernutzung falsch berechnet und möglicherweise Pods entfernt.

Die Konfigurationsoption CONFIG_LRU_GEN_ENABLED ist in cos-113-18244-151-96 und cos-117-18613-0-76 deaktiviert.

Möglicherweise sehen Sie nicht immer eine ungewöhnliche Pod-Entfernungsrate, da dieses Problem vom Speichernutzungsmuster der Arbeitslast abhängt. Bei Arbeitslasten, für die im Feld „resources“ kein Arbeitsspeicherlimit festgelegt wurde, besteht ein höheres Risiko, dass das Kubelet Pods entfernt. Das liegt daran, dass die Arbeitslasten möglicherweise mehr Arbeitsspeicher anfordern, als das Kubelet als verfügbar meldet.

Wenn Sie nach dem Upgrade auf die genannten GKE-Versionen ohne weitere Änderungen eine höhere Speicherauslastung einer Anwendung feststellen, sind Sie möglicherweise von der Kerneloption betroffen.

So prüfen Sie, ob es ungewöhnliche Pod-Entfernungsraten gibt: Analysieren Sie die folgenden Messwerte mit dem Metrics Explorer: kubernetes.io/container_memory_used_bytes und kubernetes.io/container_memory_request_bytes

Sie können die folgenden PromQL-Abfragen verwenden. Ersetzen Sie die Werte für cluster_name, namespace_name, metadata_system_top_level_controller_type und metadata_system_top_level_controller_name durch den Namen und Typ des Arbeitslast, die Sie analysieren möchten:

max by (pod_name)(max_over_time(kubernetes_io:container_memory_used_bytes{monitored_resource="k8s_container",memory_type="non-evictable",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))

sum by (pod_name)(avg_over_time(kubernetes_io:container_memory_request_bytes{monitored_resource="k8s_container",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))

Wenn Sie ungewöhnliche Spitzen in der Speichernutzung feststellen, die über den angeforderten Speicher hinausgehen, wird die Arbeitslast möglicherweise häufiger entfernt.

Problemumgehung

Wenn Sie kein Upgrade auf die korrigierten Versionen durchführen können und Ihre Umgebung in GKE ausgeführt wird, wo Sie privilegierte Pods bereitstellen können, können Sie die Option „Multi-Gen LRU“ mit einem DaemonSet deaktivieren.

  1. Aktualisieren Sie die GKE-Knotenpools, auf denen Sie das DaemonSet ausführen möchten, mit einer Annotation, um die Multi-Gen-LRU-Option zu deaktivieren. Beispiel: disable-mglru: "true".
  2. Aktualisieren Sie den Parameter nodeSelector im DaemonSet-Manifest mit derselben Annotation, die Sie im vorherigen Schritt verwendet haben. Ein Beispiel finden Sie in der Datei disable-mglru.yaml im Repository GoogleCloudPlatform/k8s-node-tools.
  3. Stellen Sie das DaemonSet in Ihrem Cluster bereit.

Sobald das DaemonSet in allen ausgewählten Knotenpools ausgeführt wird, ist die Änderung sofort wirksam und die Berechnung der Kubelet-Speichernutzung erfolgt wieder wie gewohnt.

Vorgang 1.28, 1.29, 1.30, 1.31
  • 1.28.14-gke.1175000 und höher
  • 1.29.9-gke.1341000 und höher
  • 1.30.5-gke.1355000 und höher
  • 1.31.1-gke.1621000 und höher

Pods bleiben im Status „Wird beendet“

Ein Fehler in der Containerlaufzeit (containerd) kann dazu führen, dass Pods und Container im Status „Terminating“ (Wird beendet) mit Fehlern ähnlich den folgenden hängen bleiben:

OCI runtime exec failed: exec failed: cannot exec in a stopped container: unknown

Wenn Sie von diesem Problem betroffen sind, können Sie Ihre Knoten auf eine GKE-Version mit einer korrigierten Version von containerd aktualisieren.

Vorgang 1.28,1.29
  • 1.28.9-gke.1103000 und höher
  • 1.29.4-gke.1202000 und höher
  • 1.30: Alle Versionen

Ein Fehler im Image-Streaming-Feature kann dazu führen, dass Container nicht gestartet werden.

Container, die auf einem Knoten mit aktiviertem Image-Streaming in bestimmten GKE-Versionen ausgeführt werden, können möglicherweise nicht mit dem folgenden Fehler erstellt werden:

"CreateContainer in sandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to create containerd container: failed to mount [PATH]: too many levels of symbolic links"

Wenn Sie von diesem Problem betroffen sind, können Sie nach leeren oder doppelten Ebenen suchen. Wenn Sie leere Ebenen oder doppelte Ebenen nicht entfernen können, deaktivieren Sie das Image-Streaming.

Vorgang 1.27,1.28,1.29
  • 1.28.9-gke.1103000 und höher
  • 1.29.4-gke.1202000 und höher
  • 1.30: Alle Versionen

Bildstreaming schlägt aufgrund fehlender Dateien fehl

Ein Fehler in der Funktion „Image-Streaming“ kann dazu führen, dass Container aufgrund einer fehlenden Datei oder mehrerer fehlender Dateien fehlschlagen.

Container, die auf einem Knoten mit aktiviertem Image-Streaming in den folgenden Versionen ausgeführt werden, können möglicherweise nicht gestartet werden oder werden mit Fehlern ausgeführt, die darauf hinweisen, dass bestimmte Dateien nicht vorhanden sind. Hier einige Beispiele für solche Fehler:

  • No such file or directory
  • Executable file not found in $PATH

Wenn Sie von diesem Problem betroffen sind, können Sie das Image-Streaming deaktivieren.

Netzwerk,Upgrades und Updates 1,28

Fehler bei der Gateway-TLS-Konfiguration

Wir haben ein Problem bei der Konfiguration von TLS für Gateways in Clustern mit GKE-Version 1.28.4-gke.1083000 festgestellt. Dies betrifft TLS-Konfigurationen mit einem SSLCertificate oder einer CertificateMap. Wenn Sie einen Cluster mit vorhandenen Gateways aktualisieren, schlagen Aktualisierungen des Gateways fehl. Bei neuen Gateways werden die Load-Balancer nicht bereitgestellt. Dieses Problem wird in einer zukünftigen GKE 1.28-Patchversion behoben.

Upgrades und Updates 1,27 1.27.8 oder höher

Problem mit dem GPU-Geräte-Plug-in

Bei Clustern, auf denen GPUs ausgeführt werden und die von Version 1.26 auf eine Patchversion von Version 1.27 vor Version 1.27.8 aktualisiert wurden, kann es zu Problemen mit den GPU-Geräte-Plug-ins (nvidia-gpu-device-plugin) der Knoten kommen. Führen Sie je nach Status Ihres Clusters die folgenden Schritte aus:

  • Wenn auf Ihrem Cluster Version 1.26 ausgeführt wird und er GPUs hat, führen Sie kein manuelles Upgrade des Clusters durch, bis Version 1.27.8 im Release-Kanal Ihres Clusters verfügbar ist.
  • Wenn auf Ihrem Cluster eine frühere 1.27-Patchversion ausgeführt wird und die Knoten betroffen sind, starten Sie die Knoten neu oder löschen Sie den nvidia-gpu-device-plugin-Pod auf den Knoten manuell. Der Add-on-Manager erstellt dann ein neues funktionierendes Plug-in.
  • Wenn Ihr Cluster automatische Upgrades verwendet, sind Sie davon nicht betroffen, da bei automatischen Upgrades nur Patchversionen mit dem Fix installiert werden.
Vorgang 1.27,1.28
  • 1.27.5-gke.1300 und höher
  • 1.28.1-gke.1400 und höher

Autoscaling für alle Arbeitslasten wird beendet

HorizontalPodAutoscaler (HPA) und VerticalPodAutoscaler (VPA) skalieren möglicherweise keine Arbeitslasten in einem Cluster mehr automatisch, wenn er falsch konfigurierte autoscaling/v2-HPA-Objekte enthält. Das Problem betrifft Cluster, auf denen frühere Patchversionen von GKE-Version 1.27 und 1.28 ausgeführt werden (z. B. 1.27.3-gke.100).

Workaround:

Korrigieren Sie falsch konfigurierte autoscaling/v2-HPA-Objekte, indem Sie darauf achten, dass die Felder in spec.metrics.resource.target übereinstimmen, z. B.:

  • Wenn spec.metrics.resource.target.type gleich Utilization ist, sollte das Ziel averageUtilization sein.
  • Wenn spec.metrics.resource.target.type gleich AverageValue ist, sollte das Ziel averageValue sein.

Weitere Informationen zum Konfigurieren von autoscaling/v2-HPA-Objekten finden Sie in der Kubernetes-Dokumentation zu HorizontalPodAutoscaler.

Vorgang 1.28,1.29
  • 1.28.7-gke.1026000
  • 1.29.2-gke.1060000

Container Threat Detection kann nicht bereitgestellt werden

Die Bereitstellung von Container Threat Detection in Autopilot-Clustern mit den folgenden GKE-Versionen kann fehlschlagen:

  • 1.28.6-gke.1095000 bis 1.28.7-gke.1025000
  • 1.29.1-gke.1016000 bis 1.29.1-gke.1781000
Netzwerk, Upgrades 1.27, 1.28, 1.29, 1.30
  • 1.30.4-gke.1282000 oder höher
  • 1.29.8-gke.1157000 oder höher
  • 1.28.13-gke.1078000 oder höher
  • 1.27.16-gke.1342000 oder höher

Verbindungsprobleme für hostPort-Pods nach Upgrade der Steuerungsebene

Bei Clustern mit aktivierter Netzwerkrichtlinie können Verbindungsprobleme mit hostPort-Pods auftreten. Außerdem kann es bei neu erstellten Pods zusätzlich 30 bis 60 Sekunden dauern, bis sie bereit sind.

Das Problem tritt auf, wenn die GKE-Steuerungsebene eines Clusters auf eine der folgenden GKE-Versionen aktualisiert wird:

  • 1.30 bis 1.30.4-gke.1281999
  • 1.29.1-gke.1545000 bis 1.29.8-gke.1156999
  • 1.28.7-gke.1042000 bis 1.28.13-gke.1077999
  • 1.27.12-gke.1107000 bis 1.27.16-gke.1341999

Workaround:

Aktualisieren oder erstellen Sie Knoten unmittelbar nach dem Upgrade der GKE-Steuerungsebene neu.

Netzwerk 1.31, 1.32
  • 1.32.1-gke.1729000 oder höher
  • 1.31.6-gke.1020000 oder höher

Fehlerhafter UDP-Traffic zwischen Pods, die auf demselben Knoten ausgeführt werden

Bei Clustern, für die die knoteninterne Sichtbarkeit aktiviert ist, kann es zu Problemen mit dem UDP-Traffic zwischen Pods kommen, die auf demselben Knoten ausgeführt werden.

Das Problem tritt auf, wenn der GKE-Clusterknoten auf eine der folgenden GKE-Versionen aktualisiert oder mit einer dieser Versionen erstellt wird:

  • 1.32.1-gke.1729000 oder höher
  • 1.31.6-gke.1020000 oder höher

Der betroffene Pfad ist Pod-zu-Pod-UDP-Traffic auf demselben Knoten über Hostport oder Dienst.

Lösung

Aktualisieren Sie den Cluster auf eine der folgenden korrigierten Versionen:

  • 1.32.3-gke.1927000 oder höher
  • 1.31.7-gke.1390000 oder höher
Vorgang 1.29,1.30,1.31
  • 1.29.10-gke.1071000 oder höher
  • 1.30.5-gke.1723000 oder höher
  • 1.31.2-gke.1115000 oder höher

Inkompatibler Ray-Operator und Cloud KMS-Datenbankverschlüsselung

Einige Ray Operator-Versionen sind nicht mit der Cloud KMS-Datenbankverschlüsselung kompatibel.

Problemumgehungen:

Führen Sie ein Upgrade der Cluster-Steuerungsebene auf eine korrigierte Version oder höher durch.

Upgrades und Updates 1.30, 1.31
  • 1.30.8-gke.1051000 oder höher
  • 1.31.1-gke.2008000 und höher

GPU-Wartungshandler-Pod hängt im CrashLoopBackOff-Status fest

Bei diesem Problem bleiben gpu-maintenance-handler-Pods auf den jeweiligen Knoten im Status „CrashLoopBackOff“ hängen. In diesem Status wird verhindert, dass das Label „Anstehende Wartung“ auf GKE-Knoten angewendet wird. Dies kann sich auf die Prozesse zum Leeren von Knoten und zum Entfernen von Pods für Arbeitslasten auswirken.

"Node upcoming maintenance label not applied due to error: Node "gke-yyy-yyy" is invalid: metadata.labels: Invalid value: "-62135596800": a valid label must be an empty string or consist of alphanumeric characters, '-','' or '.', and must start and end with an alphanumeric character (e.g.'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9])?')"

Wenn Sie von diesem Problem betroffen sind, können Sie es beheben, indem Sie Ihre Steuerungsebene auf eine GKE-Version aktualisieren, die den Fix enthält.

Vorgang 1.33.1-gke.1522000 und höher 1.33.4-gke.1142000 und höher

Pods können auf Knoten mit aktiviertem Image-Streaming nicht gestartet werden

Auf Knoten, auf denen Image-Streaming aktiviert ist, können Arbeitslasten möglicherweise nicht mit der folgenden Fehlersignatur gestartet werden: Failed to create pod sandbox ... context deadline exceeded

Die Serial-Port-Logs eines betroffenen Knotens enthalten auch die folgende Fehlersignatur: task gcfsd ... blocked for more than X seconds

Das Vorhandensein dieser beiden Fehlersignaturen weist auf einen Deadlock in einer der Komponenten für das Streamen von Bildern hin. Dieser Deadlock verhindert, dass Pods erfolgreich gestartet werden.

Möglichkeiten zur Behebung des Problems:

Starten Sie den Knoten neu, um das Problem schnell zu beheben. Beachten Sie, dass der neu gestartete Knoten möglicherweise wieder in eine Deadlock-Situation gerät. Für eine robustere Risikominderung deaktivieren Sie das Image-Streaming für den Knotenpool, indem Sie Folgendes ausführen:

gcloud container node-pools update NODE_POOL_NAME --cluster CLUSTER_NAME --no-enable-image-streaming
Hinweis: Wenn Sie Image-Streaming deaktivieren, werden alle Knoten in einem Knotenpool neu erstellt.

Nächste Schritte

  • Wenn Sie in der Dokumentation keine Lösung für Ihr Problem finden, lesen Sie den Abschnitt Support erhalten. Dort finden Sie weitere Hilfe, z. B. zu den folgenden Themen: