In diesem Dokument werden die Fehler und die entsprechenden Codes beschrieben, die bei der Verwendung von Sicherung für GKE zum Ausführen von Wiederherstellungsvorgängen auftreten können. Jeder Abschnitt enthält Hinweise, die Sie bei der Behebung der Wiederherstellungsfehler beachten sollten, sowie eine Anleitung zur Behebung der Fehler bei der Wiederherstellung.
Fehler 200010301: Wiederherstellungsvorgang konnte aufgrund eines nicht verfügbaren Zugangs-Webhook-Dienstes nicht abgeschlossen werden
Der Fehler 200010301 tritt auf, wenn ein Wiederherstellungsvorgang fehlschlägt, weil ein Admission-Webhook-Dienst (auch als HTTP-Callback bezeichnet) nicht verfügbar ist. Dies führt zur folgenden Fehlermeldung. Die Fehlermeldung weist darauf hin, dass der GKE API-Server versucht hat, einen Admission-Webhook zu kontaktieren, als er versuchte, eine Ressource wiederherzustellen. Der Dienst, der den Webhook unterstützt, war jedoch entweder nicht verfügbar oder wurde nicht gefunden:
resource [/example-group/ClusterSecretStore/example-store] restore failed:
Internal error occurred: failed calling webhook "example-webhook.io":
failed to call webhook: Post "https://example-webhook.example-namespace.svc:443/validate-example": service "example-webhook" not found.
Dieser Fehler tritt auf, wenn eine GKE-Ressource vom Typ ValidatingAdmissionWebhook oder MutatingAdmissionWebhook im Zielcluster aktiv ist, der GKE API-Server jedoch den im Webhook konfigurierten Endpunkt nicht erreichen kann. Zulassungs-Webhooks fangen Anfragen an den GKE API-Server ab. In ihrer Konfiguration wird festgelegt, wie der GKE API-Server die Anfragen abfragen soll.
Der clientConfig des Webhooks gibt das Backend an, das die Zulassungsanfragen verarbeitet. Das kann ein interner Clusterdienst oder eine externe URL sein. Die Wahl zwischen diesen beiden Optionen hängt von den spezifischen Betriebs- und Architekturanforderungen Ihres Webhooks ab. Je nach Optionstyp ist der Wiederherstellungsvorgang möglicherweise aus den folgenden Gründen fehlgeschlagen:
In-Cluster-Dienste: Der GKE-Dienst und die zugehörigen Pods werden nicht wiederhergestellt oder sind nicht bereit, wenn der GKE API-Server versucht, den Webhook aufzurufen. Dies geschieht bei Wiederherstellungsvorgängen, bei denen Webhook-Konfigurationen auf Clusterebene angewendet werden, bevor die Namespace-bezogenen Dienste vollständig den Status
readyerreicht haben.Externe URLs: Der externe Endpunkt ist aufgrund von Problemen mit der Netzwerkverbindung zwischen dem GKE-Cluster und dem externen Endpunkt, Problemen mit der DNS-Auflösung oder Firewallregeln vorübergehend nicht verfügbar.
So beheben Sie diesen Fehler:
Identifizieren Sie den fehlgeschlagenen Webhook, der in der Fehlermeldung erwähnt wird. Beispiel:
failed calling webhook "..."Prüfen Sie den Webhook mit dem Befehl
kubectl get validatingwebhookconfigurations:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yamlErsetzen Sie
WEBHOOK_NAMEdurch den Namen des Webhooks, der in der Fehlermeldung angegeben ist.Sie können auch den Befehl
kubectl get mutatingwebhookconfigurationsausführen, um den Webhook zu prüfen:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yamlErsetzen Sie
WEBHOOK_NAMEdurch den Namen des Webhooks, der in der Fehlermeldung angegeben wurde.Führen Sie je nach Konfigurationstyp die folgenden Schritte zur Fehlerbehebung aus:
Dienstbasiert
clientConfigDefinieren Sie eine benutzerdefinierte Wiederherstellungsreihenfolge, indem Sie die Ressource
RestorePlanso ändern, dass sie eineRestoreOrdermitGroupKindDependency-Einträgen enthält. Dadurch können die Komponenten, die den Webhook unterstützen, z. B.Deployment,StatefulSetoderService, vor demValidatingWebhookConfigurationoderMutatingWebhookConfigurationwiederhergestellt und bereitgestellt werden.Eine Anleitung zum Definieren einer benutzerdefinierten Wiederherstellungsreihenfolge finden Sie unter Reihenfolge der Ressourcenwiederherstellung während der Wiederherstellung angeben.
Dieser Ansatz kann fehlschlagen, weil die Pods des Dienstes auch nach dem Erstellen des
Service-Objekts nicht in den Statusreadywechseln. Ein weiterer Grund für einen Fehler könnte sein, dass die Webhook-Konfiguration unerwartet von einer anderen Anwendung erstellt wurde. Alternativ können Sie eine zweistufige Wiederherstellung mit den folgenden Schritten durchführen:Erstellen Sie eine
Restore-Ressource mit dem Backup, indem Sie den Wiederherstellungsvorgang mit einem detaillierten Wiederherstellungsfilter konfigurieren, der die spezifischen Ressourcen enthält, die für die Funktion des Webhooks erforderlich sind, z. B.Namespaces,Deployments,StatefulSetsoderServices.Weitere Informationen zum Konfigurieren der Wiederherstellung mit einem detaillierten Wiederherstellungsfilter finden Sie unter Detaillierte Wiederherstellung aktivieren.
Erstellen Sie eine weitere
Restore-Ressource für den Sicherungsvorgang und konfigurieren Sie die restlichen Ressourcen, die Sie auswählen.
URL-basiert
clientConfigPrüfen Sie den externen HTTPS-Endpunkt und stellen Sie sicher, dass er aktiv, erreichbar und funktionsfähig ist.
Prüfen Sie, ob eine Netzwerkverbindung von den Knoten und der Steuerungsebene Ihres GKE-Clusters zur externen URL besteht. Möglicherweise müssen Sie auch Firewallregeln prüfen, z. B. wenn Sie Virtual Private Cloud, eine lokale Umgebung oder einen Cloud-Anbieter verwenden, der den Webhook, Netzwerkrichtlinien und die DNS-Auflösung hostet.
Wiederholen Sie den Wiederherstellungsvorgang. Wenn der Vorgang weiterhin fehlschlägt, wenden Sie sich bitte an den Cloud Customer Care.
Fehler 200010302: Wiederherstellungsvorgang konnte nicht abgeschlossen werden, da die Anfrage zum Erstellen von Ressourcen abgelehnt wurde
Der Fehler 200010302 tritt auf, wenn ein Versuch, einen Wiederherstellungsvorgang abzuschließen, fehlschlägt, weil ein Zulassungs-Webhook eine Anfrage zum Erstellen einer Ressource ablehnt. Dies führt zu der folgenden Fehlermeldung, die angibt, dass eine Ressource aus Ihrem Backup nicht im Zielcluster erstellt werden konnte, weil ein aktiver Zulassungs-Webhook die Anfrage abgefangen und auf Grundlage einer benutzerdefinierten Richtlinie abgelehnt hat:
[KubeError]; e.g. resource
[/example-namespace/example-api/ExampleResource/example-name]
restore failed: admission webhook "example-webhook.example.com" denied the request: {reason for denial}
Dieser Fehler wird durch die Konfiguration im Ziel-GKE-Cluster verursacht, die entweder ValidatingAdmissionWebhook oder MutatingAdmissionWebhook enthält, wodurch bestimmte Regeln für das Erstellen und Ändern von Ressourcen erzwungen werden und die Anfrage zum Erstellen von Ressourcen blockiert wird.
Ein Webhook verhindert beispielsweise die Erstellung einer Ressource, weil im Cluster bereits eine zugehörige, aber in Konflikt stehende Ressource vorhanden ist. Ein Webhook kann beispielsweise die Erstellung einer Bereitstellung ablehnen, wenn sie bereits von einer HorizontalPodAutoscaler-GKE API-Ressource verwaltet wird.
So beheben Sie diesen Fehler:
Ermitteln Sie den Webhook, der die Anfrage ablehnt, anhand der Fehlermeldung, die beim Fehlschlagen des Wiederherstellungsvorgangs angezeigt wird. Beispiel:
webhook WEBHOOK_NAME denied the requestDie Fehlermeldung enthält die folgenden Informationen:Webhook-Name: Der Name des Webhooks, der die Anfrage ablehnt.
Grund für Ablehnung: Der genaue Grund für die Ablehnung des Antrags.
Prüfen Sie den Webhook mit dem Befehl
kubectl get validatingwebhookconfigurations:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yamlErsetzen Sie
WEBHOOK_NAMEdurch den Namen des Webhooks, den Sie in der Fehlermeldung gefunden haben.Sie können auch den Befehl
kubectl get mutatingwebhookconfigurationsausführen, um den Webhook zu prüfen:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yamlErsetzen Sie
WEBHOOK_NAMEdurch den Namen des Webhooks, den Sie in der Fehlermeldung gefunden haben.Beheben Sie das zugrunde liegende Problem im Zielcluster. Die richtige Maßnahme hängt vom jeweiligen Fehler ab. Wenn im Beispiel ein
HorizontalPodAutoscaler-Konflikt auftritt, müssen Sie das vorhandeneHorizontalPodAutoscalerim Zielcluster löschen, bevor Sie die Wiederherstellung ausführen, damit die gesicherten Arbeitslasten und die zugehörigen Ressourcen erstellt werden können.Wiederholen Sie den Wiederherstellungsvorgang. Wenn der Wiederherstellungsvorgang weiterhin fehlschlägt, wenden Sie sich an Cloud Customer Care.
Fehler 200060202: Wiederherstellungsvorgang konnte nicht abgeschlossen werden, da bei der Arbeitslastvalidierung eine GKE-Ressource gefehlt hat
Der Fehler 200060202 tritt während der Phase der Arbeitslastvalidierung eines Wiederherstellungsvorgangs auf, wenn eine GKE-Ressource, die von Sicherung für GKE zur Validierung erwartet wird, im Zielcluster nicht gefunden werden kann. Dies führt zur folgenden Fehlermeldung:
Workload Validation Error: [KIND] "[NAME]" not found
Beispiel: Example: Workload Validation Error: pods "jenkins-0" not found
Dieser Fehler tritt auf, wenn Sicherung für GKE die GKE-Ressource im Rahmen des Wiederherstellungsvorgangs erfolgreich erstellt oder aktualisiert, aber zu Beginn der Validierungsphase eine oder mehrere der GKE-Ressourcen nicht mehr im Zielcluster vorhanden sind, weil die Ressource nach dem Erstellen oder Aktualisieren durch den Wiederherstellungsvorgang, aber vor Abschluss der Arbeitslastvalidierung für die GKE-Ressource gelöscht wurde. Ein solcher Fehler kann folgende Ursachen haben:
Manuelles Löschen: Ein Nutzer oder Administrator hat die Ressource manuell mit
kubectloder anderen Google Cloud -Tools gelöscht.Externe Automatisierung: GitOps-Controller wie Config Sync, ArgoCD, Flux, benutzerdefinierte Skripts oder andere Cluster-Managementtools haben die Ressource zurückgesetzt oder gelöscht, um einen gewünschten Zustand in einem Repository zu erreichen.
GKE-Controller: Ein GKE-Controller hat eine Ressource gelöscht, weil sie mit anderen Ressourcen oder Richtlinien in Konflikt steht, oder eine
OwnerReference-Kette führt zur automatischen Speicherbereinigung oder zum automatischen Bereinigungsprozess von GKE, bei dem abhängige Ressourcen gelöscht werden, wenn ihreowner-Ressource gelöscht wird.
So beheben Sie diesen Fehler:
Ermitteln Sie die fehlende Ressource anhand der Fehlermeldung, die angezeigt wird, wenn der Wiederherstellungsvorgang nicht abgeschlossen werden kann.
Suchen Sie den Namespace, zu dem die Ressource gehört, mit einer der folgenden Methoden:
GKE-Audit-Logs: Prüfen Sie die GKE-Audit-Logs, die beim Versuch des Wiederherstellungsvorgangs generiert wurden. Sie können Logs für Löschvorgänge für die Ressourcen
KindundNamefiltern. Der Audit-Logeintrag enthält den ursprünglichen Namespace.Sicherungsdetails: Hier können Sie den Umfang des Wiederherstellungsvorgangs und den Inhalt der Sicherung prüfen. Der Sicherungsindex enthält den ursprünglichen Namespace der Ressource. Sie können auch prüfen, ob das
RestorePlaneinTransformationRuleenthält, in dem Regeln zum Wiederherstellen der Ressource im ausgewählten Namespace angegeben sind.Namespaceübergreifend suchen: Führen Sie den Befehl
kubectl getaus, um die Ressource in allen Namespaces zu suchen:kubectl get KIND --all-namespaces | grep NAMEErsetzen Sie
KINDundNAMEdurch die Werte aus der Fehlermeldung. Wenn die Ressource noch vorhanden ist, wird mit diesem Befehl ihr Namespace angezeigt.
Prüfen Sie, ob die Datei gelöscht wurde, indem Sie den Befehl
kubectl getausführen:kubectl get KIND NAME -n [NAMESPACE]Ersetzen Sie
KINDundNAMEdurch die Werte aus der Fehlermeldung. Sie sollten die Fehlermeldungnot founderhalten.Ermitteln Sie die Ursache für das Löschen mit einer der folgenden Methoden:
GKE-Audit-Logs: Hier können Sie ermitteln, welche Entität die Löschanfrage gestellt hat. Beispiel: Nutzer, Dienstkonto oder Controller.
Konfigurierte Automatisierungen prüfen: Wenn Sie GitOps oder andere Automatisierungstools verwenden, prüfen Sie deren Logs und Status, um festzustellen, ob sie die wiederhergestellten Ressourcen beeinträchtigt haben.
Zugehörige Ereignisse untersuchen: Prüfen Sie GKE-Ereignisse im ermittelten Namespace, indem Sie den Befehl
kubectl get eventsausführen:kubectl get events -n NAMESPACE_NAME --sort-by='.lastTimestamp'Ersetzen Sie
NAMESPACE_NAMEdurch den Namen des Namespace.
Beheben Sie die Ursache für das Löschen der Ressource anhand der Ergebnisse des vorherigen Schritts. Sie können beispielsweise in Konflikt stehende Automatisierungen pausieren, Fehlkonfigurationen korrigieren oder Nutzerberechtigungen anpassen.
Stellen Sie die fehlende Ressource mit einer der folgenden Methoden wieder her:
Manifestdateien noch einmal anwenden: Wenn Sie das Manifest für die fehlende Ressource haben, können Sie es noch einmal auf den richtigen Namespace anwenden.
Detaillierte Wiederherstellung durchführen: Führen Sie eine detaillierte Wiederherstellung durch, um nur die fehlende Ressource aus derselben Sicherung wiederherzustellen. So stellen Sie sicher, dass Sie den richtigen Namespace angeben. Weitere Informationen zum Ausführen einer detaillierten Wiederherstellung finden Sie unter Detaillierte Wiederherstellung aktivieren.
Wiederholen Sie den Wiederherstellungsvorgang. Wenn der Wiederherstellungsvorgang weiterhin fehlschlägt, wenden Sie sich an Cloud Customer Care.
Fehler 200060201: Fehler beim Abschließen des Wiederherstellungsvorgangs aufgrund von Zeitüberschreitung bei der Arbeitslastvalidierung
Der Fehler 200060201 tritt auf, wenn eine oder mehrere wiederhergestellte Arbeitslasten während eines Wiederherstellungsvorgangs innerhalb des erwarteten Zeitlimits nach dem Erstellen der Ressourcen im Cluster nicht vollständig ready werden. Dies führt zu folgender Fehlermeldung:
Workload Validation Error: Timedout waiting for workloads to be ready - [namespace/workload_name, ...]
Dieser Fehler tritt auf, weil Sicherung für GKE nach dem Wiederherstellen von GKE-Ressourcenkonfigurationen einen Validierungsschritt ausführt, um sicherzustellen, dass kritische Arbeitslasten ordnungsgemäß funktionieren. Sicherung für GKE wartet, bis bestimmte Arbeitslasten den Status ready erreichen. Mindestens eine Arbeitslast hat das folgende Bereitschaftskriterium jedoch nicht innerhalb des zugewiesenen Zeitlimits erfüllt:
Für
Pods:status.PhaseistRunningFür
Deployments:status.ReadyReplicas=spec.ReplicasFür
StatefulSets:status.ReadyReplicas=spec.ReplicasFür
DaemonSets:status.NumberReady=status.DesiredNumberScheduled
So beheben Sie diesen Fehler:
Identifizieren Sie die Arbeitslasten, die sich nicht im Status
readybefinden. Die Fehlermeldung enthält eine Liste der Arbeitslasten und ihrer Namespaces, die nicht in den Statusreadywechseln konnten.Mit dem Befehl
kubectl describekönnen Sie den Status der Arbeitslasten prüfen und Details und Ereignisse für die fehlgeschlagenen Arbeitslasten abrufen:kubectl describe WORKLOAD_TYPE WORKLOAD_NAME -n NAMESPACE_NAME kubectl get pods -n NAMESPACE_NAME -l SELECTOR_FOR_WORKLOADErsetzen Sie Folgendes:
WORKLOAD_TYPE: der Typ der Arbeitslast, z. B.Deployment,StatefulSetoderDaemonSet.WORKLOAD_NAME: der Name der spezifischen Arbeitslastinstanz.NAMESPACE_NAME: der Namespace, in dem sich die Arbeitslast befindet.SELECTOR_FOR_WORKLOAD: die Labelauswahl, um die mit der Arbeitslast verknüpftePodszu finden. Beispiel:app=my-app
Prüfen Sie für Pods in den Arbeitslasttypen
DeploymentsoderStatefulSetsden Status einzelner Pods, indem Sie den Befehlkubectl describe podausführen:kubectl describe pod POD_NAME -n NAMESPACE_NAMEErsetzen Sie Folgendes:
POD_NAME: der Name des jeweiligen Pods.NAMESPACE_NAME: der Namespace, in dem sich der Pod befindet.
Analysieren Sie im Abschnitt
EventsEreignisse und Logs in der Ausgabe vondescribeund suchen Sie nach den folgenden Informationen:ImagePullBackOff / ErrImagePull: Gibt an, dass beim Abrufen von Container-Images Probleme aufgetreten sind.CrashLoopBackOff: Gibt an, dass Container gestartet werden und abstürzen.
Analysieren Sie im Abschnitt
Containersdie Containerlogs in derdescribe-Ausgabe, um den Containernamen zu ermitteln. Führen Sie dazu den Befehlkubectl logsaus:kubectl logs POD_NAME -n NAMESPACE_NAME -c CONTAINER_NAMEErsetzen Sie Folgendes:
POD_NAME: der Name des jeweiligen Pods.NAMESPACE_NAME: der Namespace, in dem sich der Pod befindet.CONTAINER_NAME: der Name des Containers im Pod.
Laut der
describe-Ausgabe kann es mehrere Gründe dafür geben, dass der Pod nicht in der Ressourcenausgabe angezeigt wird. Dazu gehören:Fehler bei Bereitschaftsprüfungen: Die Bereitschaftsprüfungen des Containers sind nicht erfolgreich.
Ressourcenprobleme: Es sind nicht genügend CPU, Arbeitsspeicher oder andere Ressourcen im Cluster vorhanden oder die Kontingentlimits wurden erreicht.
Probleme mit Init-Containern: Fehler in Init-Containern, die das Starten von Hauptcontainern verhindern.
Konfigurationsfehler: Fehler in
ConfigMaps,Secretsoder Umgebungsvariablen.Netzwerkprobleme:
Podskann nicht mit den erforderlichen Diensten kommunizieren.
Prüfen Sie die GKE-Clusterressourcen, um sicherzustellen, dass der GKE-Cluster über genügend Knotenkapazität, CPU und Arbeitsspeicher verfügt, um die wiederhergestellten Arbeitslasten auszuführen. In Autopilot-Clustern kann die automatische Knotenbereitstellung zusätzliche Zeit in Anspruch nehmen. Daher empfehlen wir, nach Einschränkungen oder Fehlern bei der Knotenskalierung zu suchen. Beheben Sie die zugrunde liegenden Probleme anhand Ihrer Ergebnisse und beseitigen Sie die Probleme, die verhindern, dass die Arbeitslasten den Status
readyerreichen. Dazu kann es erforderlich sein, Manifeste zu korrigieren, Ressourcenanfragen oder ‑limits anzupassen, Netzwerkrichtlinien zu korrigieren oder dafür zu sorgen, dass Abhängigkeiten erfüllt werden.Nachdem die zugrunde liegenden Probleme behoben wurden, warten Sie, bis die Arbeitslasten den Status
readyerreichen. Sie müssen den Wiederherstellungsvorgang nicht noch einmal ausführen.
Wenn das Problem weiterhin besteht, wenden Sie sich an Cloud Customer Care.
Fehler 200060102: Wiederherstellungsvorgang konnte aufgrund eines Volume-Validierungsfehlers nicht abgeschlossen werden
Der Fehler 200060102 tritt auf, weil eine oder mehrere VolumeRestore-Ressourcen, die den Prozess der Wiederherstellung von Daten aus VolumeBackup in ein PersistentVolume verwalten, während der Phase der Volume-Validierung eines Wiederherstellungsvorgangs den Status failed oder deleting erreicht haben. Die fehlgeschlagene Volume-Wiederherstellung führt zu der folgenden Fehlermeldung im Feld „stateReason“ der Wiederherstellungsressource:
Volume Validation Error: Some of the volume restores failed - [projects/PROJECT_ID/locations/LOCATION/restorePlans/RESTORE_PLAN_ID/restores/RESTORE_ID/volumeRestores/VOLUME_RESTORE_ID (PVC: NAMESPACE/PVC_NAME), ...]
In der Fehlermeldung werden die vollständigen Ressourcennamen der fehlgeschlagenen VolumeRestore aufgeführt, einschließlich des Namens und Namespace des Ziel-PersistentVolumeClaim. Die Fehlermeldung gibt an, dass die Datenwiederherstellung für die betroffene PersistentVolumeClaim nicht erfolgreich abgeschlossen wurde, als Sicherung für GKE VolumeRestore-Ressourcen zum Bereitstellen von PersistentVolumes aus VolumeBackups initiiert hat und die zugrunde liegende Erstellung der Persistent Disk aus dem Snapshot fehlgeschlagen ist. VolumeRestore-Fehler können aus folgenden Gründen auftreten:
Unzureichendes Kontingent: Im Projekt oder in der Region ist nicht genügend Kontingent für nichtflüchtige Speicher zugewiesen, z. B.
SSD_TOTAL_GB.Berechtigungsprobleme: Das von Sicherung für GKE verwendete Dienstkonto hat nicht die erforderlichen Berechtigungen zum Erstellen von Laufwerken oder zum Zugriff auf Snapshots.
Netzwerkprobleme: Es gibt vorübergehende oder dauerhafte Netzwerkprobleme, die den Prozess der Laufwerkerstellung unterbrechen.
Ungültiger Snapshot: Die Quelle
VolumeBackupoder der zugrunde liegende Persistent Disk-Snapshot ist beschädigt oder nicht zugänglich.Ressourceneinschränkungen: Andere Clusterressourceneinschränkungen verhindern die Bereitstellung von Volumes.
Interne Fehler: Es gibt interne Probleme im Persistent Disk-Dienst.
So beheben Sie diesen Fehler:
Suchen Sie in der Fehlermeldung nach dem fehlgeschlagenen
PersistentVolumeClaims. Dort sind die vollständigen Ressourcennamen der fehlgeschlagenenVolumeRestore-Objekte aufgeführt.Rufen Sie Details zu jeder fehlgeschlagenen
VolumeRestore-Ressource ab, indem Sie den Befehlgcloud beta container backup-restore volume-restores describeausführen:gcloud beta container backup-restore volume-restores describe VOLUME_RESTORE_ID \ --project=PROJECT_ID \ --location=LOCATION \ --restore-plan=RESTORE_PLAN_ID \ --restore=RESTORE_IDErsetzen Sie Folgendes:
VOLUME_RESTORE_ID: die ID der fehlgeschlagenenVolumeRestore-Ressource.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: Der Google Cloud -Standort der Wiederherstellung.RESTORE_PLAN_ID: die ID des Wiederherstellungsplans.RESTORE_ID: die ID des Wiederherstellungsvorgangs.
Sehen Sie sich die Felder
stateundstateMessagein der Ausgabe an, um Details zum Fehler zu erhalten.Prüfen Sie den Status des Ziels
PersistentVolumeClaimmit dem Befehlkubectl get pvc:kubectl get pvc PVC_NAME -n NAMESPACE_NAME -o yamlErsetzen Sie Folgendes:
PVC_NAME: der Name derPersistentVolumeClaim-Ressource.NAMESPACE_NAME: der Namespace, in dem sich diePersistentVolumeClaimbefindet.
Prüfen Sie, ob im Abschnitt
status.phaseder Ausgabe einePending-Phase angegeben ist. Diese Phase bedeutet, dass derPersistentVolumeClaimnoch nicht an einPersistentVolumegebunden ist. Das ist zu erwarten, wenn derVolumeRestorefehlschlägt.Sehen Sie im Abschnitt
Eventsder YAML-Ausgabe nach, ob Meldungen zu Bereitstellungsfehlern wieProvisioningFailedvorhanden sind. Beispiel:Cloud KMS error when using key projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY: Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource 'projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY' (or it may not exist).Die Ausgabe weist darauf hin, dass beim Zugriff auf den Verschlüsselungsschlüssel während der Erstellung des Laufwerks ein Berechtigungsproblem aufgetreten ist.
compute service agentUm die entsprechende Berechtigung für den Zugriff auf den Schlüssel zu erteilen, folgen Sie der Anleitung in der Sicherung für GKE-Dokumentation zum Aktivieren der CMEK-Verschlüsselung.Sehen Sie sich die GKE-Ereignisse im Namespace
PersistentVolumeClaiman. Sie enthalten detaillierte Fehlermeldungen vomPersistentVolume-Controller oder CSI-Treiber. Führen Sie dazu den Befehlkubectl get eventsaus:kubectl get events -n NAMESPACE_NAME --sort-by='.lastTimestamp'Ersetzen Sie
NAMESPACE_NAMEdurch den Namespace desPersistentVolumeClaim.Suchen Sie nach Ereignissen, die mit dem Namen
PersistentVolumeClaimzusammenhängen und Keywords wieFailedProvisioningoderExternalProvisioningenthalten. Die Ereignisse können auch Fehler des Speicherbereitstellers enthalten, z. B.pd.csi.storage.gke.io.Prüfen Sie die Persistent Disk-Logs auf Fehler im Zusammenhang mit der Erstellung von Laufwerken zum Zeitpunkt des Fehlers. Suchen Sie dazu in Cloud Logging nach Cloud-Audit-Logs und Persistent Disk-Logs.
Beheben Sie die folgenden zugrunde liegenden Probleme basierend auf den generierten Fehlermeldungen:
Erhöhen Sie die Kontingente für nichtflüchtige Speicher, wenn dies angegeben ist, z. B.
(QUOTA_EXCEEDED}: Quota SSD_TOTAL_GB exceeded.IAM-Berechtigungen prüfen und korrigieren
Netzwerkprobleme untersuchen und beheben
Wenden Sie sich an Cloud Customer Care, um Probleme mit dem Snapshot oder dem Persistent Disk-Dienst zu beheben.
Die
PersistentVolumeClaimbleibt im StatusPending.Beim Wiederherstellungsvorgang wird die
VolumeRestorenicht automatisch noch einmal versucht. Um dieses Problem zu beheben, sollten Sie einen Wiederherstellungsvorgang für dieDeployment- oderStatefulSet-Arbeitslast auslösen, die die betroffenePersistentVolumeClaimverwendet.Verwenden Sie eine detaillierte Wiederherstellung, um die
Deployment- oderStatefulSet-Arbeitslast wiederherzustellen, die mit dem fehlgeschlagenenPersistentVolumeClaimverknüpft ist. Bei diesem Ansatz können die Standard-GKE-Mechanismen den Prozess zum Erstellen und Binden vonPersistentVolumeClaimwieder übernehmen, wenn das zugrunde liegende Problem behoben ist. Weitere Informationen zur detaillierten Wiederherstellung finden Sie unter Detaillierte Wiederherstellung aktivieren.
Wenn das Problem weiterhin besteht oder die Ursache des VolumeRestore-Fehlers unklar ist, wenden Sie sich an Cloud Customer Care.
Fehler 200060101: Wiederherstellungsvorgang konnte aufgrund eines Zeitüberschreitungsfehlers bei der Volume-Validierung nicht abgeschlossen werden
Der Fehler 200060101 tritt während der Volume-Validierungsphase eines Wiederherstellungsvorgangs auf, wenn Sicherung für GKE das Warten beendet, weil mindestens eine VolumeRestore-Ressource, die die Wiederherstellung von Daten aus einem VolumeBackup verwaltet, den Status succeeded nicht innerhalb des zugewiesenen Zeitlimits erreicht hat. Auch andere VolumeRestore-Ressourcen sind möglicherweise unvollständig.
Die Fehlermeldung im Feld stateReason der Ressource Restore enthält die Liste der VolumeRestore-Ressourcen, die beim Prüfen des Zeitlimits noch nicht den Status succeeded hatten. Sie enthält den Namen und Namespace des Ziels PersistentVolumeClaim für diese VolumeRestore-Ressourcen, z. B.:
Volume Validation Error: Timed out waiting for volume restore [projects/PROJECT_ID/locations/LOCATION/restorePlans/RESTORE_PLAN_NAME/restores/RESTORE_NAME/volumeRestores/VOLUME_RESTORE_ID (PVC: PVC_NAMESPACE/PVC_NAME), ...]
Wenn außerdem Volume-Wiederherstellungen fehlgeschlagen sind, enthält die Fehlermeldung diese Fehler, z. B.:
Volume Validation Error: Timed out waiting for volume restore [projects/PROJECT_ID/locations/LOCATION/restorePlans/RESTORE_PLAN_NAME/restores/RESTORE_NAME/volumeRestores/VOLUME_RESTORE_ID (PVC: PVC_NAMESPACE/PVC_NAME), ...] and some of the volume restores failed - [projects/PROJECT_ID/locations/LOCATION/restorePlans/RESTORE_PLAN_ID/restores/RESTORE_ID/volumeRestores/VOLUME_RESTORE_ID (PVC: NAMESPACE/PVC_NAME), ...]
Sicherung für GKE initiiert VolumeRestore-Ressourcen, um PersistentVolumes aus VolumeBackups bereitzustellen. Der Fehler weist darauf hin, dass die zugrunde liegende Erstellung des nichtflüchtigen Speichers aus dem Snapshot und die anschließende Bindung von PersistentVolumeClaim an PersistentVolume länger gedauert haben als das berechnete Zeitlimit für die angegebene VolumeRestores. Andere VolumeRestores für denselben Wiederherstellungsvorgang befinden sich möglicherweise auch in einem nicht abgeschlossenen Zustand.
Auch wenn die Zeitüberschreitung aus Sicht von Sicherung für GKE erreicht wurde, kann der zugrunde liegende Laufwerkserstellungsprozess für die genannte VolumeRestore-Ressource und möglicherweise für VolumeRestore-Ressourcen noch laufen oder fehlgeschlagen sein.
So beheben Sie das Problem:
Suchen Sie in der Fehlermeldung nach dem Namen und Namespace des Zeitüberschreitungs-
PersistentVolumeClaim, z. B.(PVC: PVC_NAMESPACE/PVC_NAME).Listen Sie alle
VolumeRestoresauf, die mit dem Wiederherstellungsvorgang verknüpft sind, um ihren aktuellen Status zu sehen. Führen Sie dazu den Befehlgcloud beta container backup-restore volume-restores listaus:gcloud beta container backup-restore volume-restores list \ --project=PROJECT_ID \ --location=LOCATION \ --restore-plan=RESTORE_PLAN_NAME \ --restore=RESTORE_NAMEErsetzen Sie Folgendes:
PROJECT_ID: die ID des Google Cloud -Projekts.LOCATION: der Google Cloud -Standort der Wiederherstellung.RESTORE_PLAN_NAME: der Name des Wiederherstellungsplans.RESTORE_NAME: der Name des Wiederherstellungsvorgangs.
Suchen Sie nach
VolumeRestores, die sich nicht im Statussucceededbefinden.Wenn sich Volumes im Status
failedbefinden, müssen Sie Schritte zur Fehlerbehebung ausführen, um den Fehler bei der Volume-Validierung zu beheben. Weitere Informationen finden Sie unter Fehler 200060102: Wiederherstellungsvorgang konnte aufgrund eines Volume-Validierungsfehlers nicht abgeschlossen werden. Wenn Volumes fehlgeschlagen sind, werden sie im zweiten Teil der Fehlermeldung aufgeführt.Rufen Sie mit dem Befehl
gcloud beta container backup-restore volume-restores describeDetails zumVolumeRestoreab, der im Fehler erwähnt wird, und zu allen anderenVolumeRestores, die sich nicht im Statussucceededbefinden:gcloud beta container backup-restore volume-restores describe VOLUME_RESTORE_ID \ --project=PROJECT_ID \ --location=LOCATION \ --restore-plan=RESTORE_PLAN_NAME \ --restore=RESTORE_NAMEErsetzen Sie Folgendes:
VOLUME_RESTORE_ID: die ID derVolumeRestore-Ressource.PROJECT_ID: die ID Ihres Projekts in Google Cloud .LOCATION: Der Google Cloud -Standort der Wiederherstellung.RESTORE_PLAN_NAME: der Name des Wiederherstellungsplans.RESTORE_NAME: der Name des Wiederherstellungsvorgangs.
Prüfen Sie die Felder
stateundstateMessage. Der Wert des Feldsstateist wahrscheinlichcreatingoderrestoring. Das FeldstateMessagebietet möglicherweise mehr Kontext und enthält die Details zum Ziel-PersistentVolumeClaim.Prüfen Sie den Status des identifizierten Ziels
PersistentVolumeClaims, indem Sie den Befehlkubectl get pvcausführen:kubectl get pvc PVC_NAME -n PVC_NAMESPACE -o yamlErsetzen Sie Folgendes:
PVC_NAMEist der Name desPersistentVolumeClaim.PVC_NAMESPACE: der Namespace desPersistentVolumeClaim.
Der Wert von
PersistentVolumeClaim'sstatus.phaseliegt wahrscheinlich beiPending. Prüfen Sie den AbschnittEventsauf die folgenden Fehler:Waiting for first consumer to be created before binding: Gibt an, dass dieStorageClassvolumeBindingMode: WaitForFirstConsumerhat.Die Bereitstellung des
PersistentVolumewird verzögert, bis einPod, der denPersistentVolumeClaimverwendet, erstellt und geplant wird. Das Problem liegt möglicherweise an derPod-Planung und nicht an der Bereitstellung des Volumes selbst. Daher empfehlen wir, zu prüfen, warum diePods, die diePersistentVolumeClaimverbrauchen, nicht geplant oder nicht gestartet werden.FailedProvisioningoder Fehler vom Speicherbereitsteller: Zum Beispielpd.csi.storage.gke.io.
Prüfen Sie GKE-Ereignisse in den relevanten Namespaces, indem Sie den Befehl
kubectl get eventsausführen:kubectl get events -n PVC_NAMESPACE --sort-by='.lastTimestamp'Ersetzen Sie
PVC_NAMESPACEdurch den Namespace desPersistentVolumeClaim.Suchen Sie nach Ereignissen, die mit den
PersistentVolumeClaim-Namen zusammenhängen, z. B. Bereitstellungsmeldungen oder ‑fehler.Prüfen Sie die Cloud-Audit-Logs und Persistent Disk-Logs in Cloud Logging.
Überwachen Sie den Status aller
VolumeRestoresim Statuscreatingundrestoring.Nachdem das Problem behoben wurde, kann der Status von
VolumeRestoresinsucceededoderfailedgeändert werden. Wenn dieVolumeRestoresden Statussucceedederreichen, sollte diePersistentVolumeClaimsden StatusBoundannehmen und die Arbeitslasten sollten funktionieren. Wenn einVolumeRestorein den Statusfailedwechselt, müssen Sie Schritte zur Fehlerbehebung ausführen, um den Fehler bei der Lautstärkevalidierung zu beheben. Weitere Informationen finden Sie unter Fehler 200060102: Wiederherstellungsvorgang konnte aufgrund eines Volume-Validierungsfehlers nicht abgeschlossen werden.
Wenn VolumeRestores für einen längeren Zeitraum im Status creating oder restoring verbleiben, wenden Sie sich an Cloud Customer Care.