In diesem Dokument erfahren Sie, wie Sie häufige Probleme mit der IBM Spectrum Symphony-Integration für Google Cloudbeheben. Dieses Dokument enthält insbesondere Informationen zur Fehlerbehebung für den IBM Spectrum Symphony-Hostfactory-Dienst, die Connectors für Compute Engine- und GKE-Anbieter sowie den Symphony Operator für Kubernetes.
Probleme mit dem Symphony-Host-Werksdienst
Diese Probleme beziehen sich auf den zentralen Symphony-Host-Factory-Dienst. Die Hauptlogdatei für diesen Dienst finden Sie unter Linux an folgendem Speicherort:
$EGO_TOP/hostfactory/log/hostfactory.hostname.log
Sie legen die Umgebungsvariable $EGO_TOP fest, wenn Sie die Umgebungsvariablen der Host-Factory laden.
In IBM Spectrum Symphony verweist $EGO_TOP auf das Installationsstammverzeichnis des Enterprise Grid Orchestrator (EGO), der der zentrale Ressourcenmanager für den Cluster ist. Der Standardinstallationspfad für $EGO_TOP unter Linux ist in der Regel /opt/ibm/spectrumcomputing.
Cluster fügt keine neuen VMs für ausstehende Arbeitslasten hinzu
Dieses Problem tritt auf, wenn die Symphony-Warteschlange Jobs enthält, die Host-Factory jedoch keine neuen virtuellen Maschinen (VMs) zur Bewältigung der Last bereitstellen kann. Die Host-Fabrikprotokolldatei enthält keine SCALE-OUT-Meldungen.
Dieses Problem tritt in der Regel auf, wenn der Symphony-Anforderer nicht richtig konfiguriert oder aktiviert ist. Prüfen Sie den Status des konfigurierten Antragstellers, um festzustellen, ob er aktiviert ist und ob eine ausstehende Arbeitslast vorhanden ist.
Suchen Sie die Konfigurationsdatei des Antragstellers. Die Datei befindet sich normalerweise unter:
$HF_TOP/conf/requestors/hostRequestors.jsonDie Umgebungsvariable
$HF_TOPwird in Ihrer Umgebung definiert, wenn Sie den source-Befehl verwenden. Der Wert ist der Pfad zum Installationsverzeichnis der obersten Ebene für den IBM Spectrum Symphony-Hostfactory-Dienst.Öffnen Sie die Datei
hostRequestors.jsonund suchen Sie den EintragsymAinst. Prüfen Sie in diesem Abschnitt, ob der Parameterenabledauf den Wert1festgelegt ist und ob die Anbieterliste den Namen Ihrer konfigurierten Google Cloud Anbieterinstanz enthält.- Bei Compute Engine-Konfigurationen muss in der Anbieterliste der Name des Compute Engine-Anbieters angezeigt werden, den Sie während der Installation des Compute Engine-Anbieters unter Anbieterinstanz aktivieren erstellt haben.
- Bei GKE-Konfigurationen muss in der Anbieterliste der Name des GKE-Anbieters angezeigt werden, den Sie während der Installation des GKE-Anbieters in Anbieterinstanz aktivieren erstellt haben.
Nachdem Sie bestätigt haben, dass der symAinst-Anfragende aktiviert ist, prüfen Sie, ob für einen Consumer eine ausstehende Arbeitslast vorhanden ist, die eine horizontale Skalierung erfordert.
So rufen Sie eine Liste aller Consumer und deren Arbeitslaststatus auf:
egosh consumer listSuchen Sie in der Ausgabe nach dem Consumer, der Ihrer Arbeitslast zugeordnet ist, und prüfen Sie, ob die Arbeitslast aussteht. Wenn der Anfragesteller aktiviert ist und eine Arbeitslast aussteht, der Host Factory-Dienst jedoch keine Scale-out-Anfragen initiiert, prüfen Sie die Host Factory-Dienstlogs auf Fehler.
Host-Werksdienst startet nicht
Wenn der Host-Fabrikdienst nicht ausgeführt wird, führen Sie die folgenden Schritte aus, um das Problem zu beheben:
Prüfen Sie den Status des
HostFactory-Dienstes:egosh service listSuchen Sie in der Ausgabe nach dem Dienst
HostFactoryund prüfen Sie, ob im FeldSTATEder StatusSTARTEDangezeigt wird.Wenn der
HostFactory-Dienst nicht gestartet ist, starten Sie ihn neu:egosh service stop HostFactory egosh service start HostFactory
Andere Fehler und Logging
Wenn Sie andere Fehler mit dem Host Factory-Dienst feststellen, erhöhen Sie die Ausführlichkeit der Logs, um detailliertere Logs zu erhalten. Führen Sie dazu folgende Schritte aus:
Öffnen Sie die Datei
hostfactoryconf.jsonzur Bearbeitung. Die Datei befindet sich in der Regel unter:$EGO_TOP/hostfactory/conf/Weitere Informationen zum Wert der Umgebungsvariable
$EGO_TOPfinden Sie unter Probleme mit dem Symphony-Host-Factory-Dienst.Aktualisieren Sie den Wert
HF_LOGLEVELvonLOG_INFOaufLOG_DEBUG:{ ... "HF_LOGLEVEL": "LOG_DEBUG", ... }Speichern Sie die Datei, nachdem Sie die Änderung vorgenommen haben.
Damit die Änderung wirksam wird, starten Sie den Dienst
HostFactoryneu:egosh service stop HostFactory egosh service start HostFactory
Nach dem Neustart generiert der HostFactory-Dienst detailliertere Logs, die Sie zur Fehlerbehebung bei komplexen Problemen verwenden können. Sie können sich diese Logs in der Haupt-Host-Logdatei ansehen, die sich unter Linux unter $EGO_TOP/hostfactory/log/hostfactory.hostname.log befindet.
Probleme mit dem Host-Fabrikprovider
Die folgenden Probleme treten in den Host Factory Provider-Skripts für Compute Engine oder Google Kubernetes Engine auf.
Prüfen Sie die Anbieterlogs (hf-gce.log oder hf-gke.log) auf detaillierte Fehlermeldungen. Der Speicherort der Dateien hf-gce.log und hf-gke.log wird durch die Variable LOGFILE bestimmt, die in der Konfigurationsdatei des Bereitstellers unter Anbieterinstanz aktivieren festgelegt ist.
Virtuelle Maschine oder Pod wird nicht bereitgestellt
Dieses Problem kann auftreten, wenn in den Host-Factory-Provider-Logs ein Aufruf des requestMachines.sh-Skripts zu sehen ist, die Ressource aber nicht in Ihrem Google Cloud-Projekt angezeigt wird.
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
Prüfen Sie die Protokolle des Anbieterskripts (
hf-gce.logoderhf-gke.log) auf Fehlermeldungen von der Google Cloud API. Der Speicherort der Dateienhf-gce.logundhf-gke.logwird durch die VariableLOGFILEbestimmt, die in der Konfigurationsdatei des Anbieters unter Anbieterinstanz aktivieren festgelegt ist.Prüfen Sie, ob das Dienstkonto die richtigen IAM-Berechtigungen hat:
- Folgen Sie der Anleitung unter Aktuellen Zugriff ansehen.
- Prüfen Sie, ob das Dienstkonto die IAM-Rolle Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) für das Projekt hat. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Damit die Compute Engine-Parameter in Ihrer Hostvorlage gültig sind, müssen Sie Folgendes überprüfen:
Die Hostvorlagenparameter müssen in der Datei
gcpgceinstprov_templates.jsonenthalten sein, die Sie bei der Installation des Compute Engine-Anbieters beim Einrichten einer Anbieterinstanz erstellt haben. Die häufigsten Parameter, die validiert werden müssen, sindgcp_zoneundgcp_instance_group.Prüfen Sie, ob die mit dem Parameter
gcp_instance_groupfestgelegte Instanzgruppe vorhanden ist. Wenn Sie die Instanzgruppe bestätigen möchten, folgen Sie der Anleitung unter Eigenschaften einer MIG ansehen. Verwenden Sie dazu die Werte fürgcp_instance_group(Name) undgcp_zone(Zone) aus der Vorlagendatei.
Pod bleibt in GKE im Status Pending oder Error hängen
Dieses Problem kann auftreten, nachdem im hf-gke-Log die Erstellung der GCPSymphonyResource-Ressource angezeigt wird, der entsprechende Pod im GKE-Cluster jedoch nie den Status Running erreicht und möglicherweise einen Status wie Pending, ImagePullBackOff oder CrashLoopBackOff aufweist.
Dieses Problem tritt auf, wenn es ein Problem im Kubernetes-Cluster gibt, z. B. einen ungültigen Containerimage-Namen, unzureichende CPU- oder Arbeitsspeicherressourcen oder eine falsch konfigurierte Volume- oder Netzwerkeinstellung.
Verwenden Sie kubectl describe, um die Ereignisse für die benutzerdefinierte Ressource und den Pod zu prüfen und die Ursache zu ermitteln:
kubectl describe gcpsymphonyresource RESOURCE_NAME
kubectl describe pod POD_NAME
Ersetzen Sie Folgendes:
RESOURCE_NAMEist der Name der -Ressource.POD_NAME: der Name des Pods.
Fehlerbehebung bei Kubernetes-Operator-Problemen
Der Kubernetes-Operator verwaltet den Lebenszyklus eines Symphony-Pods. Die folgenden Abschnitte können Ihnen helfen, häufige Probleme zu beheben, die bei der Verwendung des Operators und dieser Ressourcen auftreten können.
Probleme mit Ressourcenstatusfeldern diagnostizieren
Der Kubernetes-Operator verwaltet Symphony-Arbeitslasten in GKE mit zwei primären Ressourcentypen:
- Mit der
GCPSymphonyResource-Ressource (GCPSR) wird der Lebenszyklus von Compute-Pods für Symphony-Arbeitslasten verwaltet. - Die
MachineReturnRequest-Ressource (MRR) verarbeitet die Rückgabe und Bereinigung von Computeressourcen.
Verwenden Sie diese Statusfelder, um Probleme mit der GCPSymphonyResource-Ressource zu diagnostizieren:
phase: Die aktuelle Lebenszyklusphase der Ressource. Die Optionen sindPending,Running,WaitingCleanupoderCompleted.availableMachines: Die Anzahl der Compute-Pods, die bereit sind.conditions: Detaillierte Statusbedingungen mit Zeitstempeln.returnedMachines: Eine Liste der zurückgegebenen Pods.
Verwenden Sie diese Statusfelder, um Probleme mit der MachineReturnRequest-Ressource zu diagnostizieren:
phase: Die aktuelle Phase der Rückgabeanfrage. Die Optionen sindPending,InProgress,Completed,FailedoderPartiallyCompleted.totalMachines: Die Gesamtzahl der zurückzugebenden Maschinen.returnedMachines: Die Anzahl der erfolgreich zurückgegebenen Geräte.failedMachines: Die Anzahl der Geräte, die nicht zurückgegeben wurden.machineEvents: Statusdetails pro Maschine.
GCPSymphonyResource-Ressource hängt im Status Pending fest
Dieses Problem tritt auf, wenn die GCPSymphonyResource-Ressource im Status Pending verbleibt und der Wert von availableMachines nicht steigt.
Dieses Problem kann folgende Ursachen haben:
- Unzureichende Knotenkapazität in Ihrem Cluster.
- Probleme beim Abrufen des Container-Image.
- Einschränkungen des Ressourcenkontingents.
So lösen Sie dieses Problem:
Prüfen Sie den Status der Pods, um Probleme mit dem Abrufen von Images oder der Ressourcenzuweisung zu erkennen:
kubectl describe pods -n gcp-symphony -l symphony.requestId=REQUEST_IDErsetzen Sie
REQUEST_IDdurch Ihre Anfrage-ID.Knoten prüfen, um sicherzustellen, dass ausreichend Kapazität vorhanden ist:
kubectl get nodes -o wideFür Pods wird möglicherweise der Status
Pendingangezeigt. Dieses Problem tritt in der Regel auf, wenn der Kubernetes-Cluster skaliert werden muss und dies länger als erwartet dauert. Überwachen Sie die Knoten, um sicherzustellen, dass die Steuerungsebene horizontal skaliert werden kann.
Pods werden nicht zurückgegeben
Dieses Problem tritt auf, wenn Sie einen MachineReturnRequest (MRR) erstellen, die Anzahl der returnedMachines jedoch nicht steigt.
Das Problem kann folgende Ursachen haben:
- Pods bleiben im Status
Terminating. - Es gibt Probleme mit der Knotenverbindung.
So lösen Sie dieses Problem:
Prüfen Sie, ob Pods im Status
Terminatinghängen bleiben:kubectl get pods -n gcp-symphony --field-selector=status.phase=TerminatingBeschreiben Sie das
MachineReturnRequest, um Details zum Rückgabeprozess zu erhalten:kubectl describe mrr MRR_NAME -n gcp-symphonyErsetzen Sie
MRR_NAMEdurch den Namen IhresMachineReturnRequest.Löschen Sie das benutzerdefinierte Ressourcenobjekt manuell. Durch das Löschen wird die endgültige Bereinigungslogik aktiviert:
kubectl delete gcpsymphonyresource RESOURCE_NAMEErsetzen Sie
RESOURCE_NAMEdurch den Namen derGCPSymphonyResource-Ressource.
Hohe Anzahl fehlgeschlagener Maschinen in einem MachineReturnRequest
Dieses Problem tritt auf, wenn die Anzahl der failedMachines im Status MachineReturnRequest größer als 0 ist. Das Problem kann folgende Ursachen haben:
- Zeitüberschreitung beim Löschen des Pods.
- Ein Knoten ist nicht verfügbar.
So lösen Sie dieses Problem:
Prüfen Sie den
machineEventsimMachineReturnRequest-Status auf bestimmte Fehlermeldungen:kubectl describe mrr MRR_NAME -n gcp-symphonySuchen Sie nach Ereignissen zu Knotenausfällen oder Leistungsproblemen der Steuerungsebene:
Rufen Sie den Status aller Knoten ab:
kubectl get nodes -o wideEinen bestimmten Knoten prüfen:
kubectl describe node NODE_NAME
Pods werden nicht gelöscht
Dieses Problem tritt auf, wenn gelöschte Pods im Status Terminating oder Error hängen bleiben.
Das Problem kann folgende Ursachen haben:
- Eine überlastete Steuerungsebene oder ein überlasteter Operator, was zu Zeitüberschreitungen oder API-Drosselungsereignissen führen kann.
- Die manuelle Löschung der übergeordneten
GCPSymphonyResource-Ressource.
So lösen Sie dieses Problem:
Prüfen Sie, ob die übergeordnete Ressource
GCPSymphonyResourcenoch verfügbar ist und nicht den StatusWaitingCleanuphat:kubectl describe gcpsymphonyresource RESOURCE_NAMEWenn die übergeordnete
GCPSymphonyResource-Ressource nicht mehr im System vorhanden ist, entfernen Sie den Finalizer manuell aus dem Pod oder den Pods. Der Finalizer weist Kubernetes an, zu warten, bis der Symphony-Operator seine Bereinigungsaufgaben abgeschlossen hat, bevor Kubernetes den Pod vollständig löscht. Sehen Sie sich zuerst die YAML-Konfiguration an, um den Finalizer zu finden:kubectl get pods -n gcp-symphony -l symphony.requestId=REQUEST_ID -o yamlErsetzen Sie
REQUEST_IDdurch die Anforderungs-ID, die den Pods zugeordnet ist.Suchen Sie in der Ausgabe im Abschnitt „metadata“ nach dem Feld „finalizers“. Die Ausgabe sollte in etwa so aussehen:
metadata: ... finalizers: - symphony-operator/finalizerVerwenden Sie den Befehl
kubectl patch, um den Finalizer manuell aus dem Pod oder den Pods zu entfernen:kubectl patch pod -n gcp-symphony -l symphony.requestId=REQUEST_ID --type json -p '[{"op": "remove", "path": "/metadata/finalizers", "value": "symphony-operator/finalizer"}]'Ersetzen Sie
REQUEST_IDdurch die Anforderungs-ID, die den Pods zugeordnet ist.
Alte Symphony-Ressourcen werden nicht automatisch aus dem GKE-Cluster gelöscht
Nachdem eine Arbeitslast abgeschlossen ist und GKE die zugehörigen Pods beendet hat, verbleiben die zugehörigen GCPSymphonyResource- und MachineReturnRequest-Objekte länger als der erwartete Bereinigungszeitraum von 24 Stunden in Ihrem GKE-Cluster.
Dieses Problem tritt auf, wenn einem GCPSymphonyResource-Objekt die erforderliche Bedingung Completed status fehlt. Der automatische Bereinigungsprozess des Betreibers hängt von diesem Status ab, um das Objekt zu entfernen. So beheben Sie das Problem:
Sehen Sie sich die Details der betreffenden
GCPSymphonyResource-Ressource an:kubectl get gcpsr GCPSR_NAME -o yamlErsetzen Sie
GCPSR_NAMEdurch den Namen derGCPSymphonyResource-Ressource mit diesem Problem.Prüfen Sie die Bedingungen für einen
Completed-Vorgang mit dem StatusTrue:status: availableMachines: 0 conditions: - lastTransitionTime: "2025-04-14T14:22:40.855099+00:00" message: GCPSymphonyResource g555dc430-f1a3-46bb-8b69-5c4c481abc25-2pzvc has no pods. reason: NoPods status: "True" # This condition will ensure this type: Completed # custom resource is cleaned up by the operator phase: WaitingCleanup returnedMachines: - name: g555dc430-f1a3-46bb-8b69-5c4c481abc25-2pzvc-pod-0 returnRequestId: 7fd6805f-9a00-41f9-afe9-c38aa35002db returnTime: "2025-04-14T14:22:39.373216+00:00"Wenn diese Bedingung nicht in den
GCPSymphonyResource-Details zu sehen ist, stattdessen aberphase: WaitingCleanupangezeigt wird, ist dasCompleted-Ereignis verloren gegangen.Prüfen Sie, ob Pods mit der
GCPSymphonyResourceverknüpft sind:kubectl get pods -l symphony.requestId=REQUEST_IDErsetzen Sie
REQUEST_IDdurch die Anforderungs-ID.Wenn keine Pods vorhanden sind, können Sie die
GCPSymphonyResource-Ressource gefahrlos löschen:kubectl delete gcpsr GCPSR_NAMEErsetzen Sie
GCPSR_NAMEdurch den Namen IhresGCPSymphonyResource.Wenn die Pods vor dem Löschen des
GCPSymphonyResourcevorhanden waren, müssen Sie sie löschen. Wenn die Pods noch vorhanden sind, folgen Sie der Anleitung im Abschnitt Pods werden nicht gelöscht.
Pod tritt dem Symphony-Cluster nicht bei
Dieses Problem tritt auf, wenn ein Pod in GKE ausgeführt wird, aber nicht als gültiger Host im Symphony-Cluster angezeigt wird.
Dieses Problem tritt auf, wenn die Symphony-Software, die im Pod ausgeführt wird, keine Verbindung zum primären Symphony-Host herstellen und sich dort nicht registrieren kann. Dieses Problem wird häufig durch Probleme mit der Netzwerkverbindung oder eine Fehlkonfiguration des Symphony-Clients im Container verursacht.
Prüfen Sie zur Behebung dieses Problems die Logs der Symphony-Dienste, die im Pod ausgeführt werden.
Verwenden Sie SSH oder exec, um auf den Pod zuzugreifen und die Logs anzusehen:
kubectl exec -it POD_NAME -- /bin/bashErsetzen Sie
POD_NAMEdurch den Namen des Pods.Wenn Sie eine Shell im Pod haben, befinden sich die Logs für die EGO- und LIM-Daemons im Verzeichnis
$EGO_TOP/kernel/log. Die Umgebungsvariable$EGO_TOPverweist auf das Stammverzeichnis der IBM Spectrum Symphony-Installation:cd $EGO_TOP/kernel/logWeitere Informationen zum Wert der Umgebungsvariable
$EGO_TOPfinden Sie unter Probleme mit dem Symphony-Host-Factory-Dienst.Prüfen Sie die Logs auf Konfigurations- oder Netzwerkfehler, die die Verbindung vom GKE-Pod zum primären lokalen Symphony-Pod blockieren.
Retourenanfrage für Maschine fehlgeschlagen
Dieses Problem kann bei Scale-in-Vorgängen auftreten, wenn Sie eine benutzerdefinierte Ressource vom Typ MachineReturnRequest erstellen, das Objekt jedoch hängen bleibt und der Operator den entsprechenden Symphony-Pod nicht beendet.
Ein Fehler in der Finalizer-Logik des Operators verhindert das vollständige Löschen des Pods und der zugehörigen benutzerdefinierten Ressource. Dieses Problem kann zu verwaisten Ressourcen und unnötigen Kosten führen.
Löschen Sie die benutzerdefinierte Ressource manuell, um dieses Problem zu beheben. Dadurch sollte die Bereinigungslogik des Operators aktiviert werden:
kubectl delete gcpsymphonyresource RESOURCE_NAME
Ersetzen Sie RESOURCE_NAME durch den Namen der Ressource.