Auf dieser Seite finden Sie Schritte zur Fehlerbehebung für einige häufige Probleme und Fehler.
FAILED-Instanz
Der Status FAILED
bedeutet, dass die Instanzdaten verloren gegangen sind und die Instanz gelöscht werden muss.
Parallelstore-Instanzen im Status FAILED
werden weiterhin in Rechnung gestellt, bis sie gelöscht werden.
Eine Anleitung zum Abrufen des Status einer Instanz finden Sie unter Instanzen verwalten: Instanz abrufen.
Informationen zum Löschen einer Instanz finden Sie unter Instanzen verwalten: Instanz löschen.
Zeitüberschreitungen bei der dfuse-Bereitstellung oder bei Netzwerktests
Wenn beim Mounten Ihrer Parallelstore-Instanz für den Befehl dfuse -m
das Zeitlimit überschritten wird oder wenn für Netzwerktestbefehle wie self_test
oder daos health net-test
das Zeitlimit überschritten wird, kann dies an einem Netzwerkverbindungsproblem liegen.
Führen Sie Folgendes aus, um die Verbindung zu den Parallelstore-Servern zu prüfen:
self_test --use-daos-agent-env -r 1
Wenn beim Test ein Verbindungsproblem gemeldet wird, gibt es zwei mögliche Gründe:
Der DAOS-Agent hat bei der Einrichtung möglicherweise die falsche Netzwerkschnittstelle ausgewählt.
Möglicherweise müssen Sie Netzwerkschnittstellen ausschließen, die die IP-Adressen in der Liste access_points
nicht erreichen können.
Führen Sie
ifconfig
aus, um die verfügbaren Netzwerkschnittstellen aufzulisten. In der Beispielausgabe werden möglicherweise mehrere Netzwerkschnittstellen wieeth0
,docker0
,ens8
,lo
usw. angezeigt.Beenden Sie „daos_agent“.
Bearbeiten Sie
/etc/daos/daos_agent.yml
, um die unerwünschten Netzwerkschnittstellen auszuschließen. Entfernen Sie die Kommentarzeichen in der Zeileexclude_fabric_ifaces
und aktualisieren Sie die Werte. Die Einträge, die Sie einfügen, sind für Ihre Situation spezifisch. Beispiel:exclude_fabric_ifaces: ["docker0", "ens8", "lo"]
Starten Sie den daos_agent neu.
Die IP-Adresse der Instanz oder des Clients steht in Konflikt mit internen IP-Adressen.
Parallelstore-Instanzen und -Clients können keine IP-Adresse aus dem Subnetzbereich 172.17.0.0/16 verwenden. Weitere Informationen finden Sie unter Bekannte Probleme.
ENOSPC
, wenn in der Instanz ungenutzte Kapazität vorhanden ist
Wenn für Ihre Instanz die minimale oder (standardmäßig) die ausgewogene Striping-Methode verwendet wird, können ENOSPC
-Fehler auftreten, auch wenn die vorhandenen Dateien nicht die gesamte Kapazität der Instanz nutzen. Dies tritt wahrscheinlich beim Schreiben großer Dateien auf, die in der Regel größer als 8 GiB sind, oder beim Importieren solcher Dateien aus Cloud Storage.
Verwenden Sie maximales File-Striping, um die Wahrscheinlichkeit dieser Fehler zu verringern.
Fehlerbehebung bei Google Kubernetes Engine
Im folgenden Abschnitt finden Sie einige häufige Probleme und Schritte zur Behebung.
Transport endpoint is not connected
in Arbeitslast-Pods
Dieser Fehler ist auf die Beendigung von dfuse zurückzuführen. In den meisten Fällen wurde dfuse aufgrund von zu wenig Arbeitsspeicher beendet. Verwenden Sie die Pod-Annotationen gke-parallelstore/[cpu-limit|memory-limit]
, um dem Parallelstore-Sidecar-Container mehr Ressourcen zuzuweisen. Sie können gke-parallelstore/memory-limit: "0"
festlegen, um die Arbeitsspeicherbeschränkung für den Sidecar zu entfernen, wenn Sie nicht wissen, wie viel Arbeitsspeicher Sie ihm zuweisen möchten. Diese Methode funktioniert nur bei Standardclustern. Bei Autopilot-Clustern können Sie mit dem Wert 0
die Ressourcenlimits und -anfragen für den Sidecar-Container nicht aufheben. Sie müssen explizit ein höheres Ressourcenlimit für den Sidecar-Container festlegen.
Nachdem Sie die Anmerkungen geändert haben, müssen Sie den Pod für Ihre Arbeitslast neu starten. Wenn Sie einer laufenden Arbeitslast Annotationen hinzufügen, wird die Ressourcenzuweisung nicht dynamisch geändert.
Pod-Ereigniswarnungen
Wenn Ihre Arbeitslast-Pods nicht gestartet werden können, prüfen Sie die Pod-Ereignisse:
kubectl describe pod POD_NAME -n NAMESPACE
Die folgenden Lösungen beziehen sich auf häufige Fehler.
Probleme bei der Aktivierung von CSI-Treibern
Häufige Fehler bei der Aktivierung von CSI-Treibern:
MountVolume.MountDevice failed for volume "volume" : kubernetes.io/csi:
attacher.MountDevice failed to create newCsiDriverClient:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers
MountVolume.SetUp failed for volume "volume" : kubernetes.io/csi:
mounter.SetUpAt failed to get CSI client:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers
Diese Warnungen weisen darauf hin, dass der CSI-Treiber nicht aktiviert ist oder nicht ausgeführt wird.
Wenn Ihr Cluster gerade skaliert, aktualisiert oder aktualisiert wurde, ist diese Warnung normal und sollte vorübergehend sein. Es dauert einige Minuten, bis die CSI-Treiber-Pods nach Clusteroperationen funktionsfähig sind.
Prüfen Sie andernfalls, ob der CSI-Treiber in Ihrem Cluster aktiviert ist. Weitere Informationen finden Sie unter CSI-Treiber aktivieren. Wenn die CSI aktiviert ist, wird auf jedem Knoten ein Pod mit dem Namen parallelstore-csi-node-id
angezeigt, der ausgeführt wird.
Fehler bei AttachVolume.Attach
Nachdem der Pod für einen Knoten geplant wurde, wird das Volume an den Knoten angehängt und der Mounter-Pod wird erstellt, wenn die Knotenbereitstellung verwendet wird.
Dies geschieht auf dem Controller und umfasst den Schritt „AttachVolume“ im „attachdetach-controller“.
Fehlercode | Pod-Ereigniswarnung | Lösung |
InvalidArgument |
|
Ungültige Bereitstellungsflags werden an PersistentVolume oder StorageClass übergeben. Weitere Informationen finden Sie unter Unterstützte dfuse-Mount-Optionen. |
NotFound |
|
Die Parallelstore-Instanz ist nicht vorhanden. Prüfen Sie, ob der volumeHandle des PersistentVolume das richtige Format hat. |
Fehler „MountVolume.MountDevice“
Nachdem das Volume an einen Knoten angehängt wurde, wird es für den Knoten bereitgestellt.
Dies geschieht auf dem Knoten und umfasst den Schritt „MountVolume.MountDevice“ von kubelet.
Fehlercode | Pod-Ereigniswarnung | Lösung |
FailedPrecondition |
|
Dieser Fehler wird normalerweise dadurch verursacht, dass der Mounter-Pod manuell gelöscht wurde. Löschen Sie alle Arbeitslasten, die den PVC verwenden, und stellen Sie sie noch einmal bereit. Dadurch wird ein neuer Mounter-Pod erstellt. |
DeadlineExceeded |
|
Es gibt Probleme beim Herstellen einer Verbindung zur Parallelstore-Instanz. Prüfen Sie, ob Ihr VPC-Netzwerk und Ihre Zugriffspunkte richtig konfiguriert sind. |
MountVolume.SetUp-Fehler
Nachdem das Volume auf dem Knoten bereitgestellt wurde, wird es bereitgestellt und dem Container im Pod zur Verfügung gestellt. Dies geschieht auf dem Knoten und umfasst den Schritt „MountVolume.SetUp“ in kubelet.
Pod-Halterung
Fehlercode | Pod-Ereigniswarnung | Lösung |
ResourceExhausted |
|
Der dfuse-Prozess wurde beendet. Das wird in der Regel durch einen Fehler wegen unzureichendem Speicherplatz verursacht. Sie können das Speicherlimit für den Sidecar-Container mit der Annotation gke-parallelstore/memory-limit erhöhen.
Wenn Sie sich nicht sicher sind, wie viel Arbeitsspeicher Sie dem Parallelstore-Sidecar zuweisen möchten, empfehlen wir, |
Abgebrochen |
|
Der Vorgang zum Einbinden des Volumes wurde aufgrund von Ratenbegrenzung oder vorhandenen Vorgängen abgebrochen. Diese Warnung ist normal und sollte nur vorübergehend angezeigt werden. |
InvalidArgument |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = InvalidArgument desc =
|
Wenn Sie in der StorageClass oder im PersistentVolume ungültige Argumente angegeben haben, werden die Felder mit den ungültigen Argumenten im Fehlerlog angegeben. Prüfen Sie für die dynamische Bereitstellung die Speicherklasse. Prüfen Sie für die statische Bereitstellung das PersistentVolume. |
FailedPrecondition |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = FailedPrecondition desc = can not find the sidecar
container in Pod spec
|
Der Parallelstore-Sidecar-Container wurde nicht eingefügt. Prüfen Sie, ob die Pod-Annotation gke-parallelstore/volumes: "true" richtig festgelegt ist.
|
Knotenbereitstellung
Fehlercode | Pod-Ereigniswarnung | Lösung |
Abgebrochen |
|
Der Vorgang zum Einbinden des Volumes wurde aufgrund eines Ratenlimits oder vorhandener Vorgänge abgebrochen. Diese Warnung ist normal und sollte nur vorübergehend angezeigt werden. |
InvalidArgument |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = InvalidArgument desc =
|
Wenn Sie in der StorageClass oder im PersistentVolume ungültige Argumente angegeben haben, werden die Felder mit den ungültigen Argumenten im Fehlerlog angegeben. Prüfen Sie für die dynamische Bereitstellung die Speicherklasse. Prüfen Sie für die statische Bereitstellung das PersistentVolume. |
FailedPrecondition |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = FailedPrecondition desc = mounter pod expected to exist but was not found
|
Der Parallelstore-Mounter-Pod ist nicht vorhanden. Wenn der Mounter-Pod versehentlich gelöscht wurde, erstellen Sie alle Arbeitslasten neu, um die Neuerstellung zu erzwingen. |
DeadlineExceeded |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = DeadlineExceeded desc = timeout waiting for mounter pod gRPC server to become available
|
Der gRPC-Server des Mounter-Pods wurde nicht gestartet. Prüfen Sie die Logs des Mounter-Pods auf Fehler. |
Fehlerbehebung bei VPC-Netzwerken
Berechtigung zum Hinzufügen von Peering für den Dienst servicenetworking.googleapis.com
verweigert
ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.
Dieser Fehler bedeutet, dass Sie in Ihrem Nutzerkonto nicht über die IAM-Berechtigung servicenetworking.services.addPeering
verfügen.
Unter Zugriffssteuerung mit IAM finden Sie eine Anleitung zum Hinzufügen einer der folgenden Rollen zu Ihrem Konto:
roles/compute.networkAdmin
oderroles/servicenetworking.networksAdmin
Die zugewiesenen Bereiche können in CreateConnection nicht geändert werden
ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection.
Dieser Fehler wird zurückgegeben, wenn Sie bereits ein VPC-Peering für dieses Netzwerk mit anderen IP-Bereichen erstellt haben. Es gibt zwei mögliche Lösungen:
Vorhandene IP-Bereiche ersetzen:
gcloud services vpc-peerings update \
--network=NETWORK_NAME \
--ranges=IP_RANGE_NAME \
--service=servicenetworking.googleapis.com \
--force
Oder fügen Sie den neuen IP-Bereich der vorhandenen Verbindung hinzu:
Rufen Sie die Liste der vorhandenen IP-Bereiche für das Peering ab:
EXISTING_RANGES=$( gcloud services vpc-peerings list \ --network=NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --format="value(reservedPeeringRanges.list())" )
Fügen Sie dann den neuen Bereich dem Peering hinzu:
gcloud services vpc-peerings update \ --network=NETWORK_NAME \ --ranges=$EXISTING_RANGES,IP_RANGE_NAME \ --service=servicenetworking.googleapis.com
IP-Adressbereich aufgebraucht
Das Erstellen einer Instanz kann mit dem folgenden Fehler „Bereich erschöpft“ fehlschlagen:
ERROR: (gcloud.alpha.Parallelstore.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted
Wenn diese Fehlermeldung angezeigt wird, folgen Sie der VPC-Anleitung, um den IP-Bereich neu zu erstellen oder den vorhandenen IP-Bereich zu erweitern.
Wenn Sie eine Parallelstore-Instanz neu erstellen, müssen Sie den IP-Bereich neu erstellen, anstatt ihn zu erweitern.
Wartung aufgrund eines restriktiven Budgets für Pod-Störungen blockiert
In der Google Cloud -Konsole wird möglicherweise die folgende Fehlermeldung angezeigt, die darauf hinweist, dass die Wartung nicht fortgesetzt werden kann, da ein PodDisruptionBudget (PDB) so konfiguriert ist, dass keine Pod-Entfernungen zulässig sind:
GKE can't perform maintenance because the Pod Disruption Budget allows for 0 Pods evictions.
Wenn diese Fehlermeldung angezeigt wird, gehen Sie so vor, um den problematischen Pod zu ermitteln:
Klicken Sie auf die Fehlermeldung, um das Steuerfeld mit Fehlerinformationen zu öffnen.
Suchen Sie im Abschnitt Budgets für Pod-Störungen, die keine Pod-Entfernung zulassen nach dem Namen des Pods.
Wenn der Pod
parallelstorecsi-mount
ist, können Sie diesen Fehler ignorieren, da er die Wartung nicht verhindert. Prüfen Sie für alle anderen Pods Ihre PDB.