Fehlerbehebung bei GPUs in GKE


Auf dieser Seite wird beschrieben, wie Sie Probleme im Zusammenhang mit GPUs in Google Kubernetes Engine (GKE) beheben.

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.

GPU-Treiberinstallation

Dieser Abschnitt enthält Informationen zur Fehlerbehebung bei der automatischen Installation von NVIDIA-Gerätetreibern in GKE.

Die Treiberinstallation schlägt auf Ubuntu-Knoten fehl

Wenn Sie Ubuntu-Knoten mit angeschlossenen L4-GPUs oder H100-GPUs verwenden, ist der Standard-GPU-Treiber, den GKE installiert, möglicherweise nicht auf dem Stand der für diese GPUs erforderlichen Version oder höher. Daher bleibt der Pod des GPU-Geräte-Plug-ins im Status „Ausstehend“ und es kann zu Problemen mit Ihren GPU-Arbeitslasten auf diesen Knoten kommen.

Zur Behebung dieses Problems empfehlen wir ein Upgrade auf die folgenden GKE-Versionen, bei denen die GPU-Treiberversion 535 als Standardtreiber installiert wird:

  • 1.26.15-gke.1483000 und höher
  • 1.27.15-gke.1039000 und höher
  • 1.28.11-gke.1044000 und höher
  • 1.29.6-gke.1073000 und höher
  • 1.30.2-gke.1124000 und höher

Alternativ können Sie die Treiberversion 535 oder höher manuell installieren. Führen Sie dazu den folgenden Befehl aus:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R535.yaml

GPU-Geräte-Plug-ins schlagen mit CrashLoopBackOff-Fehlern fehl

Das folgende Problem tritt auf, wenn Sie die manuelle Treiberinstallationsmethode in Ihrem Knotenpool vor dem 25. Januar 2023 verwendet haben und Ihren Knotenpool später auf eine GKE-Version aktualisiert haben, die automatische Treiberinstallation unterstützt. Beide Installationsarbeitslasten sind gleichzeitig vorhanden und versuchen, in Konflikt stehende Treiberversionen auf Ihren Knoten zu installieren.

Der Init-Container des GPU-Geräte-Plug-ins schlägt mit dem Status Init:CrashLoopBackOff fehl. Die Logs für den Container sehen in etwa so aus:

failed to verify installation: failed to verify GPU driver installation: exit status 18

Versuchen Sie Folgendes, um dieses Problem zu beheben:

  • Entfernen Sie das DaemonSet für die manuelle Treiberinstallation aus Ihrem Cluster. Dadurch wird die in Konflikt stehende Installationsarbeitslast gelöscht und GKE kann automatisch einen Treiber auf Ihren Knoten installieren.

    kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • Wenden Sie das DaemonSet-Manifest für die manuelle Treiberinstallation noch einmal auf Ihren Cluster an. Am 25. Januar 2023 haben wir das Manifest aktualisiert, um Knoten zu ignorieren, die eine automatische Treiberinstallation verwenden.

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • Deaktivieren Sie die automatische Treiberinstallation für Ihren Knotenpool. Die vorhandene DaemonSet-Treiberinstallation sollte nach dem Aktualisierungsvorgang wie erwartet funktionieren.

    gcloud container node-pools update POOL_NAME \
        --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=disabled \
        --cluster=CLUSTER_NAME \
        --location=LOCATION
    

    Ersetzen Sie Folgendes:

    • POOL_NAME ist der Name des Knotenpools.
    • GPU_TYPE: der GPU-Typ, den der Knotenpool bereits verwendet.
    • GPU_COUNT: die Anzahl der GPUs, die bereits an den Knotenpool angehängt sind.
    • CLUSTER_NAME: der Name des GKE-Clusters, der den Knotenpool enthält.
    • LOCATION: der Compute Engine-Standort des Clusters.

Fehler: „Container-Image cos-nvidia-installer:fixed ist mit der Pull-Richtlinie ‚Nie‘ nicht vorhanden“ oder „Container-Image ubuntu-nvidia-installer:fixed ist mit der Pull-Richtlinie ‚Nie‘ nicht vorhanden“

Dieses Problem tritt auf, wenn sich die nvidia-driver-installer-Pods im Status PodInitializing befinden und das GPU-Plug-in-Gerät oder die Pods des GPU-Treiber-Installationsprogramms den folgenden Fehler melden. Die genaue Fehlermeldung hängt vom Betriebssystem ab, das auf Ihrem Knoten ausgeführt wird:

COS

Container image "cos-nvidia-installer:fixed" is not present with pull policy of Never.

Ubuntu

Container image "gke-nvidia-installer:fixed" is not present with pull policy of Never.

Dieses Problem kann auftreten, wenn der Garbage Collector das vorab geladene NVIDIA-Treiber-Image entfernt, um Speicherplatz auf einem Knoten freizugeben. Wenn der Treiber-Pod neu erstellt oder sein Container neu gestartet wird, kann GKE das vorab geladene Image nicht finden.

Aktualisieren Sie Ihre GKE-Knoten auf eine der folgenden Versionen, die die Fehlerkorrektur enthalten, um das Problem der automatischen Speicherbereinigung bei der Ausführung von COS zu beheben:

  • 1.25.15-gke.1040000 und höher
  • 1.26.10-gke.1030000 und höher
  • 1.27.6-gke.1513000 und höher
  • 1.28.3-gke.1061000 und höher

Wenn auf Ihren Knoten Ubuntu ausgeführt wird, ist für dieses Problem der automatischen Speicherbereinigung noch keine Lösung verfügbar. Zur Behebung dieses Problems unter Ubuntu können Sie einen privilegierten Container ausführen, der mit dem Host interagiert, um die korrekte Einrichtung der NVIDIA-GPU-Treiber zu gewährleisten. Führen Sie dazu sudo /usr/local/bin/nvidia-container-first-boot von Ihrem Knoten aus aus oder wenden Sie das folgende Manifest an:

apiVersion: v1
kind: Pod
metadata:
  name: gke-nvidia-installer-fixup
spec:
  nodeSelector:
    cloud.google.com/gke-os-distribution: ubuntu
  hostPID: true
  containers:
  - name: installer
    image: ubuntu
    securityContext:
      privileged: true
    command:
      - nsenter
      - -at
      - '1'
      - --
      - sh
      - -c
      - "/usr/local/bin/nvidia-container-first-boot"
  restartPolicy: Never

Eine weitere mögliche Ursache des Problems ist, wenn die NVIDIA-Treiber-Images nach einem Knotenneustart oder einer Hostwartung verloren gehen. Dies kann bei vertraulichen Knoten oder Knoten mit GPUs auftreten, die sitzungsspezifischen lokalen SSD-Speicher verwenden. In diesem Fall lädt GKE die nvidia-installer-driver-Container-Images vorab auf die Knoten und verschiebt sie beim ersten Start vom Bootlaufwerk auf die lokale SSD.

Verwenden Sie den folgenden Protokollfilter, um zu prüfen, ob ein Hostwartungsereignis aufgetreten ist:

resource.type="gce_instance"
protoPayload.serviceName="compute.googleapis.com"
log_id("cloudaudit.googleapis.com/system_event")

Aktualisieren Sie Ihre GKE-Version auf eine der folgenden Versionen, um das Problem der Hostwartung zu beheben:

  • 1.27.13-gke.1166000 und höher
  • 1.29.3-gke.1227000 und höher
  • 1.28.8-gke.1171000 und höher

Fehler: Konfiguration der Installationsverzeichnisse für GPU-Treiber fehlgeschlagen: lib64-Overlay konnte nicht erstellt werden: Verzeichnis konnte nicht erstellt werden /usr/local/nvidia/lib64: mkdir /usr/local/nvidia/lib64: kein Verzeichnis.

Dieser Fehler tritt im Container des GPU-Treiberinstallationsprogramms im GPU-Geräte-Plug-in auf, wenn NCCL-Fastsocket aktiviert ist:

failed to configure GPU driver installation dirs: failed to create lib64 overlay: failed to create dir /usr/local/nvidia/lib64: mkdir /usr/local/nvidia/lib64: not a directory.

Dieses Problem tritt nur auf Clustern und Knoten auf, auf denen GKE 1.28 und 1.29 ausgeführt wird.

Das Problem wird durch eine NCCL-Fastsocket-Race-Bedingung mit dem GPU-Treiber-Installationsprogramm verursacht.

Aktualisieren Sie Ihre GKE-Version auf eine der folgenden Versionen, um dieses Problem zu beheben:

  • 1.28.8-gke.1206000 und höher
  • 1.29.3-gke.1344000 und höher

Fehler: Gerät für nvidia0 nicht gefunden: Gerät nvidia0 nicht gefunden.

Der folgende Fehler gibt an, dass XID 62 und RmInitAdapter für GPU mit Nebenversion 0 fehlgeschlagen sind:

Failed to get device for nvidia0: device nvidia0 not found.

Die NVIDIA-Treiberversion 525.105.17 hat einen Fehler, der Kommunikationsfehler (XID) verursachen und die ordnungsgemäße Initialisierung der GPU verhindern kann, was zu einem Fehler bei der Initialisierung der GPU führt.

Aktualisieren Sie den NVIDIA-Treiber auf die Treiberversion 525.110.11 oder höher, um dieses Problem zu beheben.

Nächste Schritte

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.