GPU-Hosts reparieren
Erfahren Sie, wie Sie die GPU-Hostreparatur für verwaltete GPU-Worker-Knoten in Clustern konfigurieren und verwenden, die mit Kubernetes Engine (OKE) erstellt wurden.
Mit der GPU-Hostreparatur können Sie auf bestimmte hardwarebezogene Bedingungen auf berechtigten verwalteten Bare-Metal-GPU-Worker-Knoten in verwalteten Knotenpools reagieren. Wenn ein Knoten repariert werden kann, koordiniert OKE den Reparatur-Workflow. Der Workflow macht den Knoten zunächst für neue Workloads nicht verfügbar und versucht, Workloads daraus zu entfernen, bevor er die anwendbare Compute-Aktion ausführt.
Die GPU-Hostreparatur unterstützt die folgenden Reparaturtypen:
- Vom Benutzer initiierte Reparatur: Verwenden Sie diesen Reparaturtyp, wenn Sie eine Bedingung identifizieren, bei der ein GPU-Worker-Knoten ersetzt werden muss. OKE koordiniert das Draining des Knotens, das Reporting der Bedingung an Compute, das Beenden der betroffenen Instanz und das Wiederherstellen der Kapazität des verwalteten Knotenpools.
- GPU-Instanz-Recovery: Verwenden Sie diesen Reparaturtyp, wenn das GPU-Zustandsmonitoring ein zulässiges kritisches GPU-Zustandssignal meldet. OKE koordiniert das Draining des Knotens und startet die betroffene Instanz neu.
GPU-Hostreparatur ist für berechtigte GPU-verwaltete Worker-Knoten in Clustern verfügbar, auf denen Kubernetes-Version 1.32 oder höher ausgeführt wird. Ein Knoten ist nur zulässig, wenn seine GPU-Ausprägung unterstützt und in der ausgewählten Region verfügbar ist. Die Funktionalität gilt nicht für selbstverwaltete Knoten, virtuelle Knoten oder Nicht-GPU-Worker-Knoten.
Bei der GPU-Hostreparatur werden Kubernetes-Ressourcen und Kubernetes-Standardtools verwendet. Eine NodeRepairConfig ist eine benutzerdefinierte Kubernetes-Ressource, mit der die verwalteten GPU-Worker-Knoten ausgewählt werden, für die eine Reparatur-Policy gilt. Eine NodeHealthReport ist eine benutzerdefinierte Kubernetes-Ressource, die Zustandssignale aufzeichnet und den Fortschritt für einen Knoten repariert. Sie können eine NodeHealthReport prüfen, deren Status jedoch nicht bearbeiten. Der Node Repair Controller koordiniert den Reparatur-Workflow. Bei der GPU-Instanzwiederherstellung meldet der GPU-Fehlermonitor GPU-Zustandssignale. Die Reparaturkoordination verwendet ein Kubernetes-Leasing, um die gleichzeitige Verarbeitung derselben Reparaturanforderung zu verhindern.
Verwenden Sie den Dry-Run-Modus, um die Konfiguration zu prüfen und eine vorgeschlagene Reparatur zu beobachten, ohne den Knoten zu schnüren oder auszuziehen, ein Compute-Tag anzuwenden, die Instanz zu beenden oder neu zu starten oder den Knoten zu ersetzen.
Die Reparatur von GPU-Hosts kann Workloads unterbrechen, die auf einem betroffenen Knoten ausgeführt werden. Bevor Sie die GPU-Hostreparatur konfigurieren, entwerfen Sie Workloads zur Unterbrechung. Prüfen Sie Budgets für Podunterbrechungen, Replikatkonfiguration, Checkpointing-Anforderungen, Topologie-Constraints und verfügbare GPU-Sparkapazität.
Eine Reparaturanforderung mit dem Status Completed gibt an, dass der Reparaturworkflow abgeschlossen ist. Es wird nicht bestätigt, dass der zugrunde liegende GPU-Fehler korrigiert wurde. Überprüfen Sie nach jeder Reparatur die aktuellen Zustandssignale und den Anwendungszustand des Knotens.
Vom Benutzer initiierte Reparatur für verwaltete GPU-Worker-Knoten konfigurieren
Bevor Sie eine vom Benutzer initiierte Reparatur konfigurieren, identifizieren Sie einen berechtigten verwalteten GPU-Knotenpool und einen kontrollierten Testknoten. Stellen Sie sicher, dass Workloads auf dem ausgewählten Knoten unterbrochen werden können.
Für eine vom Benutzer initiierte Reparatur ist eine Zugriffskontrolle sowohl in OCI IAM als auch in Kubernetes RBAC erforderlich. In OCI IAM benötigt der Resource Principal des OKE-Clusters die Berechtigung, das definierte Tag anzuwenden, mit dem die Hostbedingung in Compute gemeldet wird. In Kubernetes sollte nur ein vertrauenswürdiger Operator die geschützte Reparaturanforderung initiieren können. Der vertrauenswürdige Operator erfordert Standard-Kubernetes-RBAC-Berechtigungen, um die Zielressource Node und die OKE-spezifische Autorisierung zu aktualisieren, die über eine ClusterRoleBinding delegiert wird.
Wenn Sie eine vom Benutzer initiierte Reparatur anfordern, koordiniert OKE die folgenden Aktionen:
- Stellt sicher, dass jeweils nur eine Reparaturanforderung verarbeitet wird.
- Verbindet den Knoten so, dass Kubernetes keine neuen Pods darauf plant.
- Versuche, Workloads vom Knoten zu entfernen.
- Meldet die Bedingung für Compute und beendet die betroffene Instanz.
- Stellt die konfigurierte Kapazität des verwalteten Knotenpools wieder her.
So konfigurieren und testen Sie die vom Benutzer initiierte Reparatur:
-
Prüfen Sie, ob das Cluster ein erweitertes Cluster ist und Kubernetes-Version 1.32 oder höher ausführt. Prüfen Sie, ob der Knoten ein berechtigter verwalteter GPU-Worker-Knoten ist. Prüfen Sie, ob der OKE-verwaltete Node Repair Controller und die
NodeHealthReportCRDs,oke-customer-node-repair-triggerClusterRolesowie die Zulassungs-Policy und das Binding für den Triggerschutz im Cluster installiert sind. Wenn eine OKE-verwaltete Ressource fehlt, wenden Sie sich an Oracle Support. Erstellen Sie keine OKE-verwalteten Ressourcen neu. Bevor Sie eine Live-Reparatur verwenden, öffnen Sie eine Supportanfrage, um die vom Benutzer gemeldete Hardwarefehlerbehandlung für Ihren Mandanten zu aktivieren. Nehmen Sie den Mandanten-, Regions-, Cluster-OCID- und GPU-Knotenpool in die Anforderung auf.
-
Erstellen Sie das definierte Tag, mit dem der Node Repair Controller die Hostbedingung für Compute meldet, oder verwenden Sie es erneut.
Erstellen Sie einen Tag-Namespace mit dem Namen
ComputeInstanceHostActions, oder verwenden Sie ihn erneut. Erstellen Sie in diesem Namespace eine Tagschlüsseldefinition namensCustomerReportedHostStatus, oder verwenden Sie sie erneut. Erstellen Sie kein Freiformtag mit demselben Text. Weitere Informationen finden Sie unter Tag-Namespace erstellen und Tagschlüsseldefinition erstellen.Vor dem Beenden der ursprünglichen Instanz schreibt der Node Repair Controller den Wert
unhealthyin das definierte TagComputeInstanceHostActions.CustomerReportedHostStatusauf der Instanz. Erstellen Sie eine OCI-IAM-Policy, die dem Ressourcen-Principal des OKE-Clusters die uneingeschränkte Berechtigung zum Anwenden des definierten Tags erteilt:
Allow any-user to use tag-namespace in tenancy where all {request.principal.type = 'cluster', request.principal.id = '<cluster-ocid>', target.tag-namespace.name = 'ComputeInstanceHostActions'}Die Propagierung von IAM-Änderungen kann einige Zeit dauern. Warten Sie auf Propagierung, bevor Sie eine destruktive Validierung durchführen.
-
Delegieren Sie den geschützten vom Benutzer initiierten Reparatur-Trigger an vertrauenswürdige Operatoren.
Erstellen Sie eine
ClusterRoleBinding, die eine vertrauenswürdige OCI-IAM-Gruppen-OCID an die OKE-eigeneoke-customer-node-repair-triggerClusterRolebindet. Operatoren benötigen auch Standard-Kubernetes-RBAC-Berechtigungen, um dieNode-Zielressource zu aktualisieren.Erstellen Sie eine Datei namens
cir-trigger-operators.yamlmit dem folgenden Inhalt:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: oke-node-repair-trigger-operators roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: oke-customer-node-repair-trigger subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: <trusted-oci-iam-group-ocid>Ersetzen Sie
<trusted-oci-iam-group-ocid>durch die OCID der OCI-IAM-Gruppe, die die vertrauenswürdigen Operatoren enthält.Wenden Sie das Binding an, und prüfen Sie es, indem Sie Folgendes eingeben:
kubectl apply -f cir-trigger-operators.yamlkubectl get clusterrolebinding \ oke-node-repair-trigger-operators \ -o yamlDieses Binding erteilt keine allgemeine Berechtigung zum Aktualisieren von
Node-Ressourcen. Verwenden Sie Ihr vorhandenes Kubernetes-Autorisierungsmodell, um nur die standardmäßigen Kubernetes-RBAC-Berechtigungen zu erteilen, die von den vertrauenswürdigen Operatoren benötigt werden. -
Erstellen Sie eine benutzerdefinierte
NodeRepairConfig-Ressource mit nicht überlappendem Clusterbereich im Dry-Run-Modus.Wählen Sie Knoten mithilfe eines dauerhaften Node Pool-Labels, das Sie verwalten und auf Ersatzknoten vorhanden ist. Das Selektorlabel ist benutzerdefiniert. Konfigurieren Sie das Label im beabsichtigten verwalteten Knotenpool, sodass Ersatzknoten es beibehalten.
Ein Knoten muss genau einer
NodeRepairConfig-Ressource entsprechen. Anforderungen ohne übereinstimmende Konfiguration oder sich überschneidende Konfigurationen werden ohne Reparaturnebenwirkungen abgelehnt. Sie können dieselben oder separate Konfigurationen für vom Benutzer initiierte Reparatur- und GPU-Instanz-Recovery verwenden. Wenn Sie separate Konfigurationen verwenden, nehmen Sie nicht dieselben Knoten in mehreren Konfigurationen auf. Andernfalls wird die Reparaturanforderung abgelehnt.Das folgende Beispiel beginnt im Trockenlaufmodus, ermöglicht eine Reparatur nach der anderen, setzt den Schwellenwert für fehlerhafte Knoten auf 10%, verwendet eine Ablauffrist von 60 Minuten und deaktiviert das Verhalten nach der Schärfe:
apiVersion: oci.oraclecloud.com/v1beta1 kind: NodeRepairConfig metadata: name: gpu-node-repair spec: nodeSelector: matchLabels: example.com/gpu-repair: "enabled" policy: dryRun: true evictionGracePeriodMinutes: 60 forceActionAfterGracePeriod: false maxUnhealthyNodeThreshold: "10%" maximumParallelNodeRepairs: 1Im Abschnitt
policysinddryRunundforceActionAfterGracePeriodboolesche Werte.evictionGracePeriodMinutesist eine nicht negative Ganzzahl.maximumParallelNodeRepairsist eine positive Ganzzahl.maxUnhealthyNodeThresholdakzeptiert eine positive Knotenanzahl oder einen in Anführungszeichen stehenden Prozentsatz, wie"10%".Beginnen Sie mit
dryRun: true. Nachdem Sie die Konfiguration validiert haben, aktualisieren Sie nurdryRunfür Livevorgänge infalse. -
Fordern Sie eine Trockenlaufreparatur an, indem Sie das geschützte Label
oci.oraclecloud.com/customer-report-host-status=unhealthyauf den ausgewählten Knoten anwenden. Prüfen SieNodeHealthReportund den zugehörigen Knotenstatus. Eine Dry-Run-Anforderung erstellt einen abgeschlossenenNodeHealthReport-Datensatz, jedoch nicht Cordon, Drain, Anwenden des Compute-definierten Tags, Beenden, Neustarten oder Ersetzen des Knotens. Lösen Sie eine Live-Reparatur aus, indem Sie das geschützte Triggerlabel zusammen mit dem One-Shot-Live-Override
oci.oraclecloud.com/node-repair-dry-run=falseanwenden. Die Live-Überschreibung ist nur mit einem aktiven Trigger gültig und wird nur abgetastet, wenn ein neuer Trigger erstellt wird.Um eine vom Benutzer initiierte Reparaturanforderung zu wiederholen, entfernen Sie das Label
oci.oraclecloud.com/customer-report-host-status=unhealthy, und wenden Sie es erneut an. Wenn Sie denselben Etikettenwert erneut anwenden, wird keine weitere Anforderung gestartet. Durch das Entfernen des Labels wird eine aktive Reparatur nicht abgebrochen.Wichtig
Eine vom Benutzer initiierte Livereparatur kann Workloads entladen und die ursprüngliche Compute-Instanz beenden. Draining verwendet die Kubernetes Eviction-API und würdigt Podunterbrechungsbudgets. DaemonSet-Pods und statische Pods werden übersprungen. Wenn "Force-after-Grace" aktiviert ist, erzwingt der Node Repair Controller das Löschen der verbleibenden Pods nicht. Die nachfolgende Hostaktion kann sie jedoch weiterhin unterbrechen.Prüfen Sie den Fortschritt der Reparaturaktion, das definierte Compute-Tag, das Beenden der ursprünglichen Instanz, die Wiederherstellung der Kapazität des Managed Node Pools und die Erstellung eines Ersatzknotens mit einer neuen UID und Instanz-OCID. Die
NodeHealthReportfür beendete Instanzen wird vorübergehend beibehalten, nachdem der Workflow abgeschlossen ist.Ein
Deferred-Ergebnis bedeutet, dass der Workflow vorübergehend blockiert wird. EinFailed-Ergebnis bedeutet, dass der Versuch gestoppt wurde. EinSuperseded-Ergebnis bedeutet, dass ein OKE-Workflow mit höherer Priorität übernommen wurde. EinCompleted-Ergebnis bedeutet, dass OKE den angeforderten Beendigungsworkflow beendet hat. Dies bedeutet nicht, dass die physische Reparatur abgeschlossen ist oder dass die AustauschkapazitätReadyist. Prüfen Sie nach Abschluss des Workflows, ob der verwaltete Knotenpool die erwartete Kapazität aufweist und ob der Ersatzknoten den aktuellen fehlerfreien Status meldet.
Bei einer vom Benutzer initiierten Reparatur hängt die Erstellung eines Ersatz-Worker-Knotens von der Abstimmung zwischen verwaltetem Knoten und Pool und der verfügbaren GPU-Kapazität ab. Ein abgeschlossener Workflow bestätigt nicht, dass der zugrunde liegende GPU-Fehler korrigiert wurde.
GPU-Instanz-Recovery für verwaltete GPU-Worker-Knoten konfigurieren
Bevor Sie das GPU-Instanz-Recovery konfigurieren, identifizieren Sie einen berechtigten verwalteten GPU-Knotenpool, und bestätigen Sie, dass seine Workloads unterbrochen werden können. GPU-Instanz-Recovery kann einen betroffenen Knoten verschlüsseln und entladen, bevor die Instanz neu gestartet wird.
Erstellen Sie vor dem Konfigurieren des GPU-Instanz-Recoverys die IAM-Policys, die vom GPU-Zustandsmonitoring-Add-on zum Überwachen von GPU-Hosts erforderlich sind:
Allow dynamic-group <dg-name> to manage instance-family in compartment id <compartment-ocid>
Allow dynamic-group <dg-name> to read instance-agent-plugins in compartment id <compartment-ocid>
Hierbei gilt:
-
<dg-name>ist der Name der dynamischen Gruppe, die Compute-Instanzen für die GPU-Worker-Knoten enthält. Beispiel: Verwenden Sie eine Regel wieALL {instance.compartment.id = '<compartment-ocid>'}. Durch das Anwenden von Tags auf Knotenpools können Sie restriktivere Regeln erstellen, wie:ALL { instance.compartment.id = 'ocid1.compartment.oc1..examplecompartment', tag.Operations.Workload.value = 'gpu-monitoring', tag.Operations.Environment.value = 'prod' }Weitere Informationen finden Sie unter Tags auf Knotenpools anwenden.
<compartment-ocid>ist die OCID des Compartments, das die GPU-Worker-Knoten enthält.
GPU-Instanzwiederherstellung wird nur auf berechtigten verwalteten GPU-Worker-Knoten unterstützt, die folgende GPU-Ausprägungen verwenden:
BM.GPU.A10.4BM.GPU.A100-v2.8BM.GPU.B200.8BM.GPU.B300.8BM.GPU.B300.HS.8BM.GPU.B4.8BM.GPU.GB200-v2.4BM.GPU.GB200-v3.4BM.GPU.GB200.4BM.GPU.GB300.4BM.GPU.H100.8BM.GPU.H100T.8BM.GPU.H200-NC.8BM.GPU.H200.8BM.GPU.L40S-NC.4BM.GPU.L40S.4BM.GPU.MI300X.8BM.GPU.MI355X-v1.8BM.GPU.MI355X.8
Die Verfügbarkeit der GPU-Ausprägung variiert je nach Region. Stellen Sie sicher, dass die ausgewählte GPU-Ausprägung in der Region verfügbar ist, in der das Cluster ausgeführt wird.
Oracle Cloud Agent Version 1.64.0 oder höher ist für das Compute RDMA GPU Monitoring-Plug-in erforderlich und muss auf den ausgewählten Knoten installiert werden.
Wenn OKE ein zulässiges GPU-Zustandssignal empfängt, koordiniert es die folgenden Aktionen:
- Stellt sicher, dass jeweils nur eine Recovery-Anforderung verarbeitet wird.
- Verbindet den Knoten so, dass Kubernetes keine neuen Pods darauf plant.
- Versuche, Workloads vom Knoten zu entfernen.
- Startet die betroffene Compute-Instanz neu.
So konfigurieren Sie das GPU-Instanz-Recovery:
-
Prüfen Sie, ob auf dem Cluster Kubernetes-Version 1.32 oder höher ausgeführt wird. Prüfen Sie, ob der Knoten ein berechtigter verwalteter GPU-Worker-Knoten ist. Prüfen Sie, ob der OKE-verwaltete Node Repair Controller und die
NodeHealthReport-CRDs im Cluster installiert sind, und prüfen Sie, ob das GPU-Zustandsmonitoring-Add-on für das Cluster verfügbar ist. Prüfen Sie, ob das GPU-Zustandsmonitoring-Add-on eine Option
ACTIVEfür die im Cluster ausgeführte Kubernetes-Version enthält, indem Sie Folgendes eingeben:oci ce addon-option list \ --kubernetes-version <version> \ --addon-name GpuHealthMonitoringWenn Sie das Add-on installieren, installieren Sie die neueste Option
ACTIVE, anstatt eine Version anzuheften. Die installierte Version mussv1.1.0oder höher sein.Installieren Sie das OKE-verwaltete GPU-Zustandsüberwachungs-Add-on, indem Sie Folgendes eingeben:
oci ce cluster install-addon \ --addon-name GpuHealthMonitoring \ --cluster-id $CLUSTER_ID \ --region $REGIONDer Befehl installiert die neueste verfügbare Version des Add-ons für das Cluster.
Die unterstützten Add-on-Konfigurationsschlüssel sind
nodeSelectors,tolerationsundrollingUpdate. Der WertrollingUpdatesteuert das rollierende Aktualisierungsverhalten nachmaxSurgeundmaxUnavailable, wobei das JSON-Format im Nur-Text-Format verwendet wird.-
Erstellen Sie eine
GpuHealthMonitoringConfig-Ressource, um das GPU-Zustandsmonitoring für die ausgewählten GPU-Worker-Knoten zu aktivieren. Für die Konfiguration sindspec.enabledund ein nicht leerer Knotenselektor erforderlich.apiVersion: oci.oraclecloud.com/v1beta1 kind: GpuHealthMonitoringConfig metadata: name: gpu-health-monitoring spec: enabled: true nodeSelector: matchLabels: nvidia.com/gpu.present: "true"Speichern Sie die Konfiguration unter
gpu-health-monitoring.yaml, und wenden Sie sie an, indem Sie Folgendes eingeben:kubectl apply -f gpu-health-monitoring.yamlDas Feld
spec.enabledaktiviert oder deaktiviert das Monitoring für die ausgewählten Knoten. Im Feldspec.nodeSelectorwerden die GPU-Knoten ausgewählt, auf denen das Compute RDMA GPU Monitoring-Plug-in und der GPU Fault Monitor ausgeführt werden.Vermeiden Sie das Erstellen mehrerer aktivierter
GpuHealthMonitoringConfig-Ressourcen, deren Selektoren mit demselben Knoten übereinstimmen. Überschneidende Policys werden abgelehnt, wenn die BedingungReadystatusaufFalseundreasonaufMultipleMatchingPoliciesgesetzt ist. Prüfen Sie die GPU-Zustandsmonitoringkonfiguration auf den ausgewählten Knoten.
Der Controller veröffentlicht die Knotenbedingung
oci.oraclecloud.com/GpuHealthMonitoringConfigured. Der WertTruegibt an, dass das Compute RDMA GPU Monitoring-Plug-in als aktiviert konfiguriert wurde. Der WertFalsegibt an, dass er als deaktiviert konfiguriert wurde. Der WertUnknowngibt an, dass der konfigurierte Status derzeit nicht vertrauenswürdig ist.Der GPU-Faultmonitor veröffentlicht die Knotenbedingung
oci.oraclecloud.com/GpuHealthMonitoringUnavailable. Der WertTruegibt an, dass mindestens eine erforderliche GPU-Zustandsergebnisdatei nicht verfügbar ist. Mögliche Ursachen sind eine veraltete Oracle Cloud Agent-Version, eine nicht unterstützte Ausprägung, ein deaktiviertes oder fehlerhaftes Plug-in oder eine falsche Konfiguration. Der WertFalsegibt an, dass die erforderlichen Ergebnisdateien vorhanden sind.-
Erstellen Sie eine benutzerdefinierte
NodeRepairConfig-Ressource mit nicht überlappendem Clusterbereich im Dry-Run-Modus.Wählen Sie Knoten mithilfe eines dauerhaften Node Pool-Labels aus, das Sie verwalten. Das Selektorlabel ist benutzerdefiniert.
Ein Knoten muss genau einer
NodeRepairConfig-Ressource entsprechen. Anforderungen ohne übereinstimmende Konfiguration oder sich überschneidende Konfigurationen werden ohne Reparaturnebenwirkungen abgelehnt. Sie können dieselben oder separate Konfigurationen für vom Benutzer initiierte Reparatur- und GPU-Instanz-Recovery verwenden. Wenn Sie separate Konfigurationen verwenden, nehmen Sie nicht dieselben Knoten in mehreren Konfigurationen auf. Andernfalls wird die Reparaturanforderung abgelehnt.Das folgende Beispiel beginnt im Trockenlaufmodus, ermöglicht eine Reparatur nach der anderen, setzt den Schwellenwert für fehlerhafte Knoten auf 10%, verwendet eine Ablauffrist von 60 Minuten und deaktiviert das Verhalten nach der Schärfe:
apiVersion: oci.oraclecloud.com/v1beta1 kind: NodeRepairConfig metadata: name: gpu-node-repair spec: nodeSelector: matchLabels: example.com/gpu-repair: "enabled" policy: dryRun: true evictionGracePeriodMinutes: 60 forceActionAfterGracePeriod: false maxUnhealthyNodeThreshold: "10%" maximumParallelNodeRepairs: 1Im Abschnitt
policysinddryRunundforceActionAfterGracePeriodboolesche Werte.evictionGracePeriodMinutesist eine nicht negative Ganzzahl.maximumParallelNodeRepairsist eine positive Ganzzahl.maxUnhealthyNodeThresholdakzeptiert eine positive Knotenanzahl oder einen in Anführungszeichen stehenden Prozentsatz, wie"10%".Beginnen Sie mit
dryRun: true. Nachdem Sie die Konfiguration validiert haben, aktualisieren Sie nurdryRunfür Livevorgänge infalse.Beachten Sie, dass das GPU-Instanz-Recovery funktionsgesteuert ist. Wenden Sie das vom Benutzer initiierte Reparaturlabel
oci.oraclecloud.com/customer-report-host-status=unhealthynicht für das GPU-Instanz-Recovery an. Prüfen Sie, ob ein zulässiges GPU-Zustandssignal für den Knoten gemeldet wird.
Ein Knoten kann nur dann automatisch neu gestartet werden, wenn alle der folgenden Bedingungen erfüllt sind:
- Die Knotenbedingung
oci.oraclecloud.com/GpuHealthMonitoringFaultDetectedistTrue. - Die
NodeHealthReportenthält einen Eintrag unterstatus.signals.clusterHealthCheck[]. - Das Signal hat eine nicht leere
id. - Das Signal hat
action=REBOOT. Beim Wert wird Groß-/Kleinschreibung nicht beachtet. - Das Signal hat einen Wert ungleich Null
firstObservedAt. - Das Signal hat einen Wert ungleich Null
lastObservedAt, der angibt, dass das Signal aktiv ist. - Das Signal bleibt mindestens 10 Minuten aktiv.
- Wiederholungs- und Cooldown-Regeln des Node Repair Controllers erlauben einen weiteren Versuch. Die Wiederholungsabklingzeit für den Neustart beträgt 60 Minuten.
- Der effektive Trockenlaufwert ist
falsefür einen tatsächlichen Neustart. - Nachträgliche Eintritts- und Störungsschienen passieren.
Signale mit
action=CUSTOMER_ACTION_REQUIREDlösen keinen automatischen Neustart aus. Wenn eines dieser Signale angezeigt wird, prüfen Sie dieNodeHealthReport- und Knotenbedingungen, untersuchen Sie das gemeldete GPU-Zustandsproblem, und wenden Sie sich an den Support, wenn Sie Hilfe bei der Lösung benötigen.- Die Knotenbedingung
-
Aktivieren Sie die Livereparatur in der Ressource
NodeRepairConfig.Die Wiederherstellung der GPU-Instanz beginnt erst, nachdem das berechtigte Signal mindestens 10 Minuten aktiv geblieben ist und die Wiederholungsabklingzeit für den Neustart 60 Minuten beträgt. Das Drain-Verhalten folgt der Reparatur-Policy, die in der übereinstimmenden
NodeRepairConfig-Ressource angegeben ist. Draining verwendet die Kubernetes Eviction-API und würdigt Podunterbrechungsbudgets. Die für den Abschluss des GPU-Instanz-Recoverys erforderliche Zeit kann variieren, abhängig von Workload-Unterbrechungseinstellungen, dem Verhalten bei der Knotenentladung und dem Status der Compute-Instanz. -
Prüfen Sie, ob das GPU-Instanz-Recovery erfolgreich abgeschlossen wurde.
Stellen Sie sicher, dass
NodeHealthReporteineReboot-Aktion im Livemodus anzeigt und den TerminalstatusCompletedaufweist. Stellen Sie sicher, dass sich die Compute-Instanz im StatusRunningbefindet, der Kubernetes-KnotenReadylautet und das aktuelle GPU-Zustandsergebnis den Fault nicht mehr meldet. Prüfen Sie das GPU-Zustandsergebnis nach Abschluss des Workflows.
Wenn das GPU-Zustandsergebnis nach dem Neustart immer noch denselben Fehler meldet oder den Fehler erneut meldet, wurde der Fehler nicht behoben. Ein abgeschlossener Recovery-Workflow bedeutet nicht, dass der zugrunde liegende GPU-Fehler korrigiert wurde. Bei der GPU-Instanzwiederherstellung werden Cooldown-Regeln verwendet, um sofortige Neustartschleifen zu verhindern. Nachdem das GPU-Zustandsergebnis den Fault nicht mehr meldet, kann ein späteres GPU-Zustandsergebnis, das einen neuen Fault meldet, den Knoten für eine andere Reparatur qualifizieren.
Die generierte
GpuHealthMonitoringAction-Ressource ist Controller-eigentum. Erstellen oder bearbeiten Sie keine GpuHealthMonitoringAction-Ressourcen.GPU-Hostreparatur für GPU-Worker-Knoten überwachen und Fehler beheben
Verwenden Sie Kubernetes-Ressourcen und standardmäßige Kubernetes-Überwachungstools, um die NodeHealthReport, Knotenbedingungen, betroffenen Workloads und den Reparaturworkflow zu prüfen.
Ein
NodeHealthReport mit dem Status Completed gibt an, dass der Reparaturworkflow abgeschlossen ist. Es gibt nicht an, dass der zugrunde liegende GPU-Fehler behoben wurde. Überprüfen Sie die aktuellen Zustandssignale, die Bereitschaft des Worker-Knotens und den Anwendungszustand, nachdem der Workflow abgeschlossen ist.So überwachen Sie einen GPU-Hostreparaturworkflow:
Prüfen Sie die
NodeHealthReportund den betroffenen Worker-Knoten vor, während und nach der Reparatur.Prüfen Sie die
NodeHealthReportauf die Reparaturanforderung, den Reparaturfortschritt, die Aktion, den Trockenlauf- oder Livemodus sowie das Workflowergebnis. Prüfen Sie die betroffene Kubernetes-RessourceNodeauf Knotenlabels und -bedingungen. Prüfen Sie Kubernetes-Ereignisse auf aktuelle Knoten- und Reparaturaktivitäten. Prüfen Sie beim GPU-Instanz-Recovery die BedingungenGpuHealthMonitoringConfigured,GpuHealthMonitoringUnavailableundGpuHealthMonitoringFaultDetectedin der betroffenen Kubernetes-RessourceNode.Controller-eigene Ressourcen als schreibgeschützt behandeln. Erstellen oder bearbeiten Sie keine generierten Aktionen oder Controller-Ressourcen.
Prüfen Sie den unterstützten Reparaturstatus und Knotenstatus.
Verwenden Sie die
NodeHealthReport, um die Reparatur-Policy, den effektiven Trockenlaufwert, das Zulassungsergebnis, das Endergebnis und den letzten Reparaturversuch zu prüfen. Mit der betroffenen Kubernetes-RessourceNodekönnen Sie Knotenbedingungen prüfen. Prüfen Sie gegebenenfalls den Lebenszyklusstatus der Compute-Instanz, das Compute-definierte Tag, das für eine vom Benutzer initiierte Reparatur verwendet wird, und ob die Austauschkapazität bereit ist.Verlassen Sie sich nicht als Statusindikatoren auf interne Leasings, Anforderungs-IDs, Dateipfade, Polling-Intervalle oder Zwischenworkflowphasen.
-
Untersuchen Sie abgelehnte Anforderungen, verzögerte Reparaturen, fehlgeschlagene Reparaturen und ersetzte Reparaturen, um vom Benutzer initiierte Reparaturen durchzuführen.
Eine Anforderung kann abgelehnt werden, wenn keine
NodeRepairConfig-Ressource mit dem Knoten übereinstimmt oder wenn mehrere Konfigurationen angewendet werden.Verwenden Sie das Ergebnis
NodeHealthReport, um zu entscheiden, was untersucht werden soll:- Wenn in
NodeHealthReportAdmissionRejectedangezeigt wird, prüfen Sie die RessourceNodeRepairConfig, die Triggerautorisierung und die Labelkonfiguration. - Wenn
NodeHealthReportDeferredanzeigt, warten Sie, bis die Blockierungsbedingung gelöscht wird, oder passen Sie die Kapazität an, wenn die Ersatzkapazität nicht verfügbar ist. - Wenn in
NodeHealthReportFailedangezeigt wird, prüfen SieNodeHealthReport, Kubernetes-Ereignisse, Budgets für Podunterbrechungen, IAM-Policy, definiertes Compute-Tag und Compute-Instanzstatus. - Wenn in
NodeHealthReportSupersededangezeigt wird, befolgen Sie den OKE-Workflow, der die Reparatur übernommen hat. - Wenn in
NodeHealthReportCompletedangezeigt wird, prüfen Sie, ob die ursprüngliche Instanz beendet wurde und ob die Ersatzkapazität bereit ist.
- Wenn in
-
Untersuchen Sie bei der GPU-Instanzwiederherstellung die Konfiguration der GPU-Zustandsüberwachung, nicht verfügbare Zustandsergebnisse, Neustartsignale, Signale, die eine Aktion erfordern, unvollständige Drains, abgeschlossene Neustarts mit einem laufenden Fehler und fortlaufende Signale, die keinen wiederholten Neustart auslösen.
Verwenden Sie Knotenbedingungen, GPU-Zustandssignale und das Ergebnis
NodeHealthReport, um zu entscheiden, was untersucht werden soll:- Wenn die Knotenbedingung
GpuHealthMonitoringConfiguredFalseoderUnknownlautet, prüfen Sie die Oracle Cloud Agent-Konfiguration und die Add-on-KonfigurationGpuHealthMonitoring. - Wenn die Knotenbedingung
GpuHealthMonitoringUnavailableTruelautet, prüfen Sie, ob die GPU-Ausprägung unterstützt wird, Oracle Cloud Agent Version1.64.0oder höher installiert ist, das Compute RDMA GPU Monitoring-Plug-in aktiviert ist und das GPU Health Monitoring-Add-on installiert und konfiguriert ist. - Wenn ein aktives GPU-Zustandssignal
action=REBOOTaufweist, überwachen SieNodeHealthReportfür den GPU-Instanz-Recovery-Workflow. - Wenn ein GPU-Zustandssignal
action=CUSTOMER_ACTION_REQUIREDaufweist, untersuchen Sie das gemeldete GPU-Zustandsproblem. Dieses Signal löst keinen automatischen Neustart aus. - Wenn die
NodeHealthReporteine unvollständige Drain- oder nicht erfolgreiche Reparatur anzeigt, prüfen Sie Kubernetes-Ereignisse, Podunterbrechungsbudgets, Workload-Status und Knotenbedingungen. - Wenn der Neustart abgeschlossen ist, das GPU-Zustandsergebnis den Fehler jedoch weiterhin meldet, untersuchen Sie den laufenden Fehler.
- Wenn das gleiche Signal nach dem Neustart fortgesetzt wird, startet das GPU-Instanz-Recovery den Knoten nicht sofort neu. Cooldown-Regeln verhindern sofortige Neustartschleifen.
- Wenn die Knotenbedingung
-
Sammeln Sie vor dem Öffnen einer Serviceanfrage die Informationen, die zum Untersuchen des Reparaturworkflows erforderlich sind.
Schließen Sie Mandanten-OCID, Cluster-OCID, Region, Kubernetes-Version, GPU-Zustandsmonitoring-Add-on-Version, Oracle Cloud Agent-Version, betroffenen Worker-Knotennamen, Compute-Instanz-OCID, relevante
NodeHealthReport- undNodeRepairConfig-Ressourcen, Knotenlabels und -bedingungen, Kubernetes-Ereignisse, Podunterbrechungsbudget und Workload-Status, Zeitstempel und aktuelle GPU-Zustandsergebnisse ein.Ändern Sie keine CRDs, Controllerressourcen, Zulassungsobjekte, generierten Aktionen oder Koordinierungsressourcen im Besitz von OKE.
Fehlerbehebung bei GPU-Hostreparatur
| Problem | Aktion |
|---|---|
| Nach einer vom Benutzer initiierten Anforderung wird keine Reparatur gestartet. | Prüfen Sie, ob genau eine NodeRepairConfig den Knoten auswählt, ob die Anforderung von einem autorisierten Operator ausgeführt wurde, und prüfen Sie das NodeHealthReport-Zulassungsergebnis. |
| Der Knoten bleibt verschlüsselt, oder Workloads werden nicht abgelassen. | Prüfen Sie Budgets für Podunterbrechungen, Pods, die nicht entfernt werden können, Einschränkungen bei der Workload-Planung und verfügbare Ersatzkapazität. |
| Der verwaltete Knotenpool wird nach der vom Benutzer initiierten Reparatur nicht wieder auf die konfigurierte Kapazität zurückgesetzt. | Prüfen Sie die GPU-Ausprägungskapazität in der ausgewählten Region, Servicelimits, Compartment-Quotas und den Status des verwalteten Knotenpools. |
| Ein GPU-Zustandssignal startet kein GPU-Instanz-Recovery. | Prüfen Sie, ob Signal und Knoten zulässig sind, und prüfen Sie das GPU-Zustandsmonitoring-Add-on und NodeRepairConfig. |
| Der GPU-Worker-Knoten ist nach dem GPU-Instanz-Recovery nicht bereit. | Prüfen Sie die Knotenbedingungen, die aktuellen GPU-Zustandssignale und den Anwendungszustand. Ein abgeschlossener Workflow bestätigt nicht, dass der zugrunde liegende GPU-Fault behoben wurde. |
Verwenden Sie Kubernetes-Ressourcen, Knotenbedingungen und Kubernetes-Ereignisse als Belege zur Fehlerbehebung. Wenn Sie eine Serviceanfrage öffnen, kann Oracle Support bei Bedarf serviceseitige Logs abrufen.