NVIDIA-GPU-Plug-in

Wenn Sie das NVIDIA GPU Plugin Cluster-Add-on aktivieren, können Sie die folgenden Schlüssel/Wert-Paare als Argumente übergeben.

Um sicherzustellen, dass Workloads, die auf NVIDIA-GPU-Worker-Knoten ausgeführt werden, nicht unerwartet unterbrochen werden, empfehlen wir Ihnen, die Version des NVIDIA-GPU-Plug-in-Add-ons für das Deployment auszuwählen, anstatt anzugeben, dass Oracle das Add-on automatisch aktualisieren soll.

Allgemeine Konfigurationsargumente für die meisten Cluster-Add-ons
Schlüssel (API und CLI) Anzeigename des Schlüssels (Konsole) Beschreibung Erforderlich/Optional Standardwert Beispielwert
affinity Affinität

Eine Gruppe von Affinitätsplanungsregeln.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • Nvidia-GPU-Operator
Mögliche Äquivalente:
  • Knotenfeature Discovery, verwenden Sie master.affinity
  • NVIDIA Network Operator, verwenden Sie operator.affinity
  • CSI-Treiber SMB, verwenden Sie contoller.affinity
  • AMD-GPU-Operator, controllerManager.affinity verwenden
Optional Null Null
nodeSelectors Knotenselektoren

Mit Knotenselektoren und Knotenlabels können Sie die Worker-Knoten steuern, auf denen Add-on-Pods ausgeführt werden.

Damit ein Pod auf einem Knoten ausgeführt werden kann, muss der Knotenselektor des Pods denselben Schlüssel/Wert wie das Label des Knotens aufweisen.

Setzen Sie nodeSelectors auf ein Schlüssel/Wert-Paar, das sowohl dem Knotenselektor des Pods als auch dem Label des Worker-Knotens entspricht.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • NVIDIA-GPU-Operator
  • CSI-Treiber SMB
Mögliche Äquivalente:
  • Knotenfeature Discovery, verwenden Sie worker.nodeSelector
  • NVIDIA Network Operator, verwenden Sie operator.nodeSelectors
  • AMD GPU-Operator, verwenden Sie selector oder controllerManager.nodeSelector
Optional Null {"foo":"bar", "foo2": "bar2"}

Der Pod wird nur auf Knoten ausgeführt, die das Label foo=bar oder foo2=bar2 aufweisen.

numOfReplicas numOfReplicas Die Anzahl der Replikate der Add-on-Bereitstellung.
Nicht verwendet von:
  • AMD-GPU-Plug-in
  • NVIDIA-GPU-Operator
  • NVIDIA-Netzwerkbetreiber
  • CSI-Treiber SMB
Mögliche Äquivalente:
  • CoreDNS, verwenden Sie nodesPerReplica
  • Knotenfeature Discovery, verwenden Sie master.replicaCount
  • AMD-GPU-Operator, controllerManager.replicas verwenden
Erforderlich 1

Erstellt ein Replikat des Add-on-Deployments pro Cluster.

2

Erstellt zwei Replikate des Add-on-Deployments pro Cluster.

rollingUpdate rollingUpdate

Steuert das gewünschte Verhalten der rollierenden Aktualisierung durch maxSurge und maxUnavailable.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • Knotenfeature-Discovery
  • NVIDIA-Netzwerkbetreiber
  • CSI-Treiber SMB
Mögliche Äquivalente:
  • NVIDIA-GPU-Operator, daemonsets.rollingUpdate.maxUnavailable verwenden
  • AMD-GPU-Operator, verwenden upgradePolicy in devicePlugin, metricsExporter, testRunner, configManager oder draDriver
Optional Null Null
tolerations Toleranzen

Mit Taints und Toleranzen können Sie die Worker-Knoten steuern, auf denen Add-on-Pods ausgeführt werden.

Damit ein Pod auf einem Knoten mit einem Taint ausgeführt werden kann, muss der Pod eine entsprechende Toleranz aufweisen.

Setzen Sie tolerations auf ein Schlüssel/Wert-Paar, das sowohl der Podtoleranz als auch dem Taint des Worker-Knotens entspricht.

JSON-Format im Klartext oder Base64-codiert.

Mögliche Äquivalente:
  • Knotenfeature Discovery, verwenden Sie master.tolerations und/oder worker.tolerations
  • NVIDIA-GPU-Operator, daemonsets.tolerations verwenden
  • NVIDIA Network Operator, verwenden Sie operator.tolerations
  • CSI-Treiber SMB, verwenden Sie controller.tolerations
  • AMD GPU-Operator, Toleranzen in devicePlugin, metricsExporter, testRunner, configManager, draDriver oder controllerManager verwenden
Optional Null [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Nur Pods mit dieser Toleranz können auf Worker-Knoten ausgeführt werden, die den Taint tolerationKeyFoo=tolerationValBar:noSchedule aufweisen.

topologySpreadConstraints topologySpreadConstraints

So verteilen Sie passende Pods auf die angegebene Topologie.

JSON-Format im Klartext oder Base64-codiert.

Nicht verwendet von:
  • Knotenfeature-Discovery
  • NVIDIA-GPU-Operator
  • NVIDIA-Netzwerkbetreiber
  • CSI-Treiber SMB
  • AMD-GPU-Operator
Optional Null Null
Für dieses Cluster-Add-on spezifische Konfigurationsargumente
Schlüssel (API und CLI) Anzeigename des Schlüssels (Konsole) Beschreibung Erforderlich/Optional Standardwert Beispielwert
deviceIdStrategy Strategie für Gerätekennung

Welche Strategie zum Übergeben von Geräte-IDs an die zugrunde liegende Laufzeit verwendet werden soll.

Einer der folgenden Werte:

  • uuid
  • index
Optional uuid
deviceListStrategy Gerätelistenstrategie

Welche Strategie zum Übergeben der Geräteliste an die zugrunde liegende Laufzeit verwendet werden soll.

Unterstützte Werte:

  • envvar
  • volume-mounts
  • cdi-annotations
  • cdi-cri

In einer kommagetrennten Liste werden mehrere Werte unterstützt.

Optional envvar
driverRoot Treiber-Root Der Root-Pfad für die NVIDIA-Treiberinstallation. Optional /
failOnInitError FailOnInitError

Gibt an, ob das Plug-in nicht erfolgreich ausgeführt werden kann, wenn während der Initialisierung ein Fehler auftritt.

Wenn dieser Wert auf false gesetzt ist, wird das Plug-in unbegrenzt blockiert, anstatt nicht erfolgreich zu sein.

Optional true
migStrategy MIG-Strategie

Welche Strategie zum Bereitstellen von MIG-(Multi-Instance-GPU-)Geräten auf GPUs verwendet werden soll, die sie unterstützen.

Einer der folgenden Werte:

  • none
  • single
  • mixed
Optional none
nvidia-gpu-device-plugin.ContainerResources nvidia-gpu-device-plugin-Containerressourcen

Sie können die Ressourcenmengen angeben, die von den Add-on-Containern angefordert werden, und Grenzwerte für die Ressourcennutzung festlegen, die von den Add-on-Containern nicht überschritten werden dürfen.

JSON-Format im Klartext oder Base64-codiert.

Optional Null {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Erstellen Sie Add-on-Container, die 100 Millicores CPU und 100 Mebibyte Speicher anfordern. Begrenzen Sie Add-on-Container auf 500 Millicores CPU und 200 Mebibyte Arbeitsspeicher.

passDeviceSpecs Gerätespezifikationen übergeben Gibt an, ob die Pfade und die gewünschten Geräteknotenberechtigungen für NVIDIA-Geräte übergeben werden sollen, die dem Container zugewiesen werden. Optional false
useConfigFile Konfigurationsdatei aus ConfigMap verwenden

Gibt an, ob das Nvidia-Geräte-Plug-in für Kubernetes mit einer Konfigurationsdatei konfiguriert werden soll. Die Konfigurationsdatei wird von einem ConfigMap abgeleitet.

Wenn dieser Wert auf true gesetzt ist, müssen Sie eine ConfigMap im Cluster erstellen, die ConfigMap nvidia-device-plugin-config benennen und Werte für Konfigurationsargumente angeben. Siehe Beispiel.

Die ConfigMap wird vom Daemonset nvidia-gpu-device-plugin referenziert.

Optional false

Beispiel für nvidia-device-plugin-config ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata: 
  name: nvidia-device-plugin-config 
  namespace: kube-system
data:
  config.yaml: |
    version: v1
    flags:
      migStrategy: "none"
      failOnInitError: true
      nvidiaDriverRoot: "/"
      plugin:
        passDeviceSpecs: false
        deviceListStrategy: envvar
        deviceIDStrategy: uuid
Große Cluster – Überlegungen

In der folgenden Tabelle werden die Aspekte beim Konfigurieren dieses Cluster-Add-ons in großen Clustern beschrieben.

Argumentname Rollen, Anzahl Knoten Beschreibung Bei zunehmender Clustergröße Risiken Empfehlung
nvidia-gpu-device-plugin.ContainerResources J

Definiert CPU- und Speicheranforderungen und Grenzwerte für NVIDIA GPU-Plug-in-Pods.

Das Plugin wird auf jedem GPU-Knoten als DaemonSet ausgeführt, sodass sich die gesamte Ressourcennutzung mit der Anzahl der GPU-Knoten erhöht.

Zusätzliche GPU-Knoten erhöhen:

  • GPU-Zustandsmonitoring-Overhead
  • Gerätezuweisungsverfolgung
  • Ressourcenberichte auf Knotenebene

Wenn die Ressourcen zu klein sind:

  • Das Plug-in kann auf Knoten instabil werden.
  • GPU-Ressourcen werden möglicherweise nicht korrekt angeboten.
  • Pods können möglicherweise nicht auf GPU-Knoten geplant werden.
  • Die GPU-Verfügbarkeit kann auf allen Knoten inkonsistent sein.
  • Weisen Sie jedem GPU-Knoten ausreichend Speicher zu.
  • Passen Sie Ressourcen basierend auf der Anzahl der GPUs auf jedem Knoten und der Intensität der GPU-Workloads an.
affinity / nodeSelectors / tolerations J

Steuern Sie die Knoten, auf denen NVIDIA GPU-Plug-in-Pods ausgeführt werden.

  • Stellt sicher, dass das Plug-in nur auf GPU-Knoten ausgeführt wird.
  • Verhindert unnötiges Deployment auf reinen CPU-Knoten.
  • Vergeudet keine Ressourcen auf Knoten, die keine GPUs enthalten.

Wenn diese Argumente falsch konfiguriert sind:

  • Das Plug-in kann auf reinen CPU-Knoten ausgeführt werden und Ressourcen verschwenden.
  • Das Plug-in wird möglicherweise nicht auf GPU-Knoten ausgeführt, sodass die GPUs von Kubernetes-Workloads nicht mehr verwendet werden können.
  • Verwenden Sie Knotenselektoren, die den Labels entsprechen, die auf GPU-Knoten angewendet werden.
  • Konfigurieren Sie Toleranzen, wenn GPU-Knoten verfälscht sind.
topologySpreadConstraints N

Steuert, wie NVIDIA-GPU-Plug-in-Pods auf Knoten und Availability-Domains verteilt sind.

Topologie-Verteilungsbeschränkungen helfen dabei, eine gleichmäßige Verteilung in Clustern mit mehreren Domains und Clustern mit heterogenen GPU-Knotenpools beizubehalten.

Wenn keine Topologie-Verteilungs-Constraints konfiguriert sind:

  • Plugin-Pods können ungleich verteilt sein.
  • Die Resilienz bei Knoten- oder Availability-Domain-Ausfällen kann reduziert werden.

Verwenden Sie Topologie-Verteilungsbeschränkungen für große GPU-Cluster, die sich über mehrere Availability-Domains erstrecken oder heterogene GPU-Knotenpools enthalten.

numOfReplicas N

Steuert die Anzahl der Replikate für Komponenten, die replikationsbasierte Skalierung unterstützen.

Das NVIDIA-GPU-Plug-in wird als DaemonSet mit einem Pod auf jedem berechtigten GPU-Knoten ausgeführt. Es wird nicht skaliert, indem eine Replikatanzahl geändert wird.

Nicht anwendbar Nicht anwendbar
rollingUpdate N

Steuert, wie NVIDIA GPU-Plug-in-Pods aktualisiert werden.

In großen Clustern kann sich ein Update auf viele GPU-Knoten auswirken und die GPU-Verfügbarkeit vorübergehend reduzieren.

  • GPU-Workloads werden möglicherweise unterbrochen.
  • GPUs sind möglicherweise vorübergehend nicht verfügbar, während Plug-in-Pods aktualisiert werden.
  • Verwenden Sie eine kontrollierte Strategie für Rolling Updates.
  • Vermeiden Sie es, eine große Anzahl von GPU-Knoten gleichzeitig zu aktualisieren.
failOnInitError J

Steuert das Plug-in-Verhalten, wenn die Initialisierung nicht erfolgreich verläuft.

Initialisierungsfehler treten eher irgendwo im Cluster auf, da die Anzahl der GPU-Knoten zunimmt.

  • Wenn der Wert true lautet, wird das Plug-in möglicherweise beendet, und die GPU auf dem betroffenen Knoten ist nicht mehr verfügbar.
  • Wenn der Wert false lautet, wird das Plug-in möglicherweise weiter ausgeführt, ohne betriebsbereit zu sein. Dadurch wird der Fehler weniger sichtbar.
  • Setzen Sie den Wert auf true , damit Initialisierungsfehler sichtbar bleiben.
  • Überwachen Sie Plug-in-Initialisierungsfehler über GPU-Knoten hinweg.
deviceListStrategy / deviceIdStrategy N

Steuern Sie, wie GPU-Geräte identifiziert und Containern ausgesetzt werden.

Die ausgewählten Strategien wirken sich auf die Container-Laufzeitintegration und die GPU-Zuweisungseffizienz über GPU-Knoten hinweg aus.

Bei falscher Konfiguration werden GPU-Geräte möglicherweise nicht identifiziert oder konsistent in Container injiziert. Dies kann zu GPU-Workload-Fehlern, falschen Gerätezuweisungen oder Planungsproblemen über GPU-Knoten führen.

Konfigurieren Sie deviceListStrategy und deviceIdStrategy so, dass sie mit Ihrer Containerlaufzeit- und GPU-Umgebung übereinstimmen, und verwenden Sie die Standard-Uuid-Geräteidentifikationsstrategie, sofern ein validierter Anwendungsfall nichts anderes erfordert.
migStrategy N

Steuert, wie NVIDIA Multi-Instance-GPU-Ressourcen für Kubernetes verfügbar gemacht werden.

Multi-Instance-GPU kann die GPU-Freigabe und -Auslastung verbessern, da die Anzahl der GPU-Workloads steigt.

Wenn dieses Argument falsch konfiguriert ist:

  • GPU-Ressourcen können fragmentiert werden.
  • Die Workload-Planung kann komplexer werden.

Verwenden Sie Multi-Instance-GPU nur, wenn eine GPU-Partitionierung erforderlich ist.