In diesem Dokument werden die Fehler und entsprechenden Codes beschrieben, die bei der Verwendung von Sicherung für GKE für Wiederherstellungsvorgänge auftreten können. In jedem Abschnitt finden Sie Hinweise dazu, was 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 Zulassungs-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 ValidatingAdmissionWebhook- oder MutatingAdmissionWebhook-GKE-Ressource 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 angegeben, wie der GKE API-Server die Anfragen abfragen soll.
Im clientConfig des Webhooks wird das Backend angegeben, 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 betrieblichen und architektonischen Anforderungen Ihres Webhooks ab. Je nach Optionstyp kann der Wiederherstellungsvorgang aus folgenden Gründen fehlgeschlagen sein:
In-Cluster-Dienste: Der GKE-Dienst und die zugehörigen Pods wurden nicht wiederhergestellt oder sind nicht bereit, als der GKE API-Server versucht hat, den Webhook aufzurufen. Dies geschieht bei Wiederherstellungsvorgängen, bei denen Webhook-Konfigurationen auf Clusterebene angewendet werden, bevor die Namespaces-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 oder aufgrund von Problemen mit der DNS-Auflösung oder Firewallregeln vorübergehend nicht verfügbar.
So beheben Sie diesen Fehler:
Ermitteln 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 wurde.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 die folgenden Schritte zur Fehlerbehebung entsprechend Ihrer Konfiguration aus:
Dienstbasiert
clientConfigSie können eine benutzerdefinierte Wiederherstellungsreihenfolge definieren, indem Sie die
RestorePlan-Ressource so ändern, dass sie einRestoreOrdermitGroupKindDependency-Einträgen enthält. So können die Komponenten, die den Webhook unterstützen, z. B.Deployment,StatefulSetoderService, wiederhergestellt und bereit sein, bevorValidatingWebhookConfigurationoderMutatingWebhookConfiguration.Eine Anleitung zum Definieren einer benutzerdefinierten Wiederherstellungsreihenfolge finden Sie unter Reihenfolge der Ressourcenwiederherstellung während der Wiederherstellung angeben.
Dieser Ansatz kann fehlschlagen, da die Pods des Dienstes auch nach der Erstellung des
Service-Objekts nicht in den Statusreadywechseln. Ein weiterer Grund für den 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 sorgen Sie dafür, 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, lokale oder einen Cloud-Anbieter verwenden, der den Webhook hostet, Netzwerkrichtlinien und DNS-Auflösung.
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 eine ValidatingAdmissionWebhook oder MutatingAdmissionWebhook enthält, die bestimmte Regeln für die Ressourcenerstellung und -änderung erzwingt und die Anfrage zur Ressourcenerstellung blockiert.
Ein Webhook verhindert beispielsweise die Erstellung einer Ressource, weil eine zugehörige, aber in Konflikt stehende Ressource bereits im Cluster 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 die 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 angegeben 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 es im Beispiel einen
HorizontalPodAutoscaler-Konflikt gibt, müssen Sie den vorhandenenHorizontalPodAutoscalerim 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: Fehler beim Wiederherstellungsvorgang aufgrund einer fehlenden GKE-Ressource während der Arbeitslastvalidierung
Der Fehler 200060202 tritt während der Arbeitslastvalidierungsphase 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 wenn die Validierungsphase beginnt, ist eine oder mehrere der GKE-Ressourcen nicht mehr im Zielcluster vorhanden, da die Ressource gelöscht wurde, nachdem sie ursprünglich vom Wiederherstellungsvorgang erstellt oder aktualisiert wurde, aber bevor die Arbeitslastvalidierung für die GKE-Ressource abgeschlossen werden konnte. 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 Clusterverwaltungstools haben die Ressource zurückgesetzt oder gelöscht, um einem gewünschten Status in einem Repository zu entsprechen.
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 zu Garbage Collection oder der automatische Bereinigungsprozess von GKE löscht abhängige Ressourcen, 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: Untersuchen Sie die GKE-Audit-Logs, die beim Versuch, den Wiederherstellungsvorgang auszuführen, 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.Back-up-Details: Hier können Sie den Umfang des Wiederherstellungsvorgangs und den Inhalt des Back-ups ansehen. Der Sicherungsindex enthält den ursprünglichen Namespace der Ressource. Sie können auch prüfen, ob
RestorePlaneineTransformationRuleenthält, in der 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 Löschung erfolgt ist, 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 wird angegeben, welche Entität die Löschanfrage gestellt hat. Das kann beispielsweise der Nutzer, das Dienstkonto oder der Controller sein.
Konfigurierte Automatisierungen überprü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. Beispielsweise können Sie 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 einen detaillierten Wiederherstellungsvorgang durch, um nur die fehlende Ressource aus derselben Sicherung selektiv wiederherzustellen. So stellen Sie sicher, dass Sie den richtigen Namespace angeben. Weitere Informationen zum Ausführen eines detaillierten Wiederherstellungsvorgangs 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: Wiederherstellungsvorgang konnte aufgrund eines Zeitüberschreitungsfehlers bei der Arbeitslastvalidierung nicht abgeschlossen werden
Der Fehler 200060201 tritt auf, wenn eine oder mehrere wiederhergestellte Arbeitslasten während eines Wiederherstellungsvorgangs innerhalb des erwarteten Zeitlimits nach der Erstellung der Ressourcen im Cluster nicht vollständig ready werden. Dies führt zur folgenden 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:
Ermitteln Sie die Arbeitslasten, die sich nicht im Status
readybefinden, anhand der Fehlermeldung, in der die Arbeitslasten und ihre Namespaces aufgeführt sind, die nicht in den Statusreadywechseln konnten.Mit dem Befehl
kubectl describekönnen Sie den Status von 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 zum Suchen vonPods, die mit der Arbeitslast verknüpft sind. 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 Protokolle in derdescribe-Ausgabe und 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: Im Cluster sind nicht genügend CPU, Arbeitsspeicher oder andere Ressourcen verfügbar oder es werden Kontingentlimits erreicht.
Probleme mit Init-Containern: Fehler in Init-Containern, die verhindern, dass Hauptcontainer gestartet werden.
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. Wir empfehlen daher, 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 eine PersistentVolume verwalten, während der Phase der Volume-Validierung eines Wiederherstellungsvorgangs den Status failed oder deleting erreicht haben. Die fehlgeschlagene Wiederherstellung des Volumes 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 sind die vollständigen Ressourcennamen der fehlgeschlagenen VolumeRestore aufgeführt, einschließlich des Namens und Namespace des Ziels 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: Dem vom Sicherung für GKE verwendeten Dienstkonto fehlen die erforderlichen Berechtigungen zum Erstellen von Laufwerken oder zum Zugriff auf Snapshots.
Netzwerkprobleme: Es gibt vorübergehende oder dauerhafte Netzwerkprobleme, die den Prozess der Speichererstellung 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 behindern die Bereitstellung von Volumes.
Interne Fehler: Es gibt interne Probleme im Persistent Disk-Dienst.
So beheben Sie diesen Fehler:
Ermitteln Sie den fehlgeschlagenen
PersistentVolumeClaims, der in der Fehlermeldung aufgeführt ist. Dort finden Sie die vollständigen Ressourcennamen der fehlgeschlagenenVolumeRestore-Objekte.Rufen Sie Details zu jeder fehlgeschlagenen
VolumeRestore-Ressource mit dem Befehlgcloud beta container backup-restore volume-restores describeab: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 Google Cloud Projekts.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 dasPersistentVolumeClaimbefindet.
Prüfen Sie, ob im Abschnitt
status.phaseder Ausgabe einePending-Phase angegeben ist. In dieser Phase istPersistentVolumeClaimnoch nicht anPersistentVolumegebunden. Das ist zu erwarten, wennVolumeRestorefehlschlägt.Sehen Sie im YAML-Output im Abschnitt
Eventsnach, ob Nachrichten zu Bereitstellungsfehlern vorhanden sind, z. B.ProvisioningFailed: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 Laufwerkerstellung ein Berechtigungsproblem aufgetreten ist. Um die
compute service agent-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 vom Speicherbereitsteller enthalten, z. B.pd.csi.storage.gke.io.Prüfen Sie die Persistent Disk-Logs, indem Sie in Cloud Logging die Cloud-Audit-Logs und die Persistent Disk-Logs auf Fehler im Zusammenhang mit Vorgängen zur Erstellung von Laufwerken zum Zeitpunkt des Fehlers untersuchen.
Beheben Sie anhand der generierten Fehlermeldungen die folgenden zugrunde liegenden Probleme:
Erhöhen Sie die Kontingente für nichtflüchtige Speicher, falls erforderlich, 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 wiederholt. Um dieses Problem zu beheben, sollten Sie einen Wiederherstellungsvorgang für denDeployment- oderStatefulSet-Arbeitslast auslösen, der das betroffenePersistentVolumeClaimverwendet.Verwenden Sie eine detaillierte Wiederherstellung, um die mit dem fehlgeschlagenen
PersistentVolumeClaimverknüpfte ArbeitslastDeploymentoderStatefulSetselektiv wiederherzustellen. 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 für den VolumeRestore-Fehler 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, innerhalb des zugewiesenen Zeitlimits keinen succeeded-Status erreicht hat. Auch andere VolumeRestore-Ressourcen sind möglicherweise unvollständig.
Die Fehlermeldung im Feld stateReason der Restore-Ressource zeigt die erste VolumeRestore-Ressource, die beim Prüfen des Zeitlimits noch nicht im Status succeeded war. Es enthält den Namen und Namespace des Ziels PersistentVolumeClaim für das jeweilige VolumeRestore, 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)]
Sicherung für GKE initiiert die Bereitstellung von VolumeRestore-Ressourcen PersistentVolumes aus VolumeBackups. Der Fehler weist darauf hin, dass die Erstellung des zugrunde liegenden 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 VolumeRestore. Andere VolumeRestores für denselben Wiederherstellungsvorgang befinden sich möglicherweise auch in einem nicht abgeschlossenen Status.
Auch wenn das Zeitlimit aus Sicht von Sicherung für GKE erreicht wurde, kann der zugrunde liegende Prozess zum Erstellen von Festplatten für die erwähnte VolumeRestore-Ressource und möglicherweise auch für VolumeRestore-Ressourcen noch laufen oder fehlgeschlagen sein.
So beheben Sie das Problem:
Ermitteln Sie in der Fehlermeldung den 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 nicht den Statussucceededhaben.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 Google Cloud Projekts.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 FeldstateMessageenthält möglicherweise mehr Kontext und die Details zum ZielPersistentVolumeClaim.Prüfen Sie den Status des ermittelten 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.phaseist wahrscheinlichPending. 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 einPoderstellt und geplant wird, das denPersistentVolumeClaimverwendet. Das Problem liegt möglicherweise an derPod-Planung und nicht an der Bereitstellung des Volumes selbst. Daher empfehlen wir, herauszufinden, warum diePods, die diePersistentVolumeClaimnutzen, nicht geplant oder gestartet werden.FailedProvisioningoder Fehler vom Speicherbereitsteller: Zum Beispielpd.csi.storage.gke.io.
Sehen Sie sich GKE-Ereignisse in den relevanten Namespaces an, 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 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 diePersistentVolumeClaimsBoundwerden und die Arbeitslasten sollten funktionieren. Wenn einVolumeRestorein den Statusfailedwechselt, 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 VolumeRestores für einen längeren Zeitraum im Status creating oder restoring verbleiben, wenden Sie sich an Cloud Customer Care.