במסמך הזה מתוארות השגיאות והקודים התואמים שאולי תיתקלו בהם כשאתם משתמשים ב-Backup for GKE כדי לבצע פעולות שחזור. בכל קטע מפורטים דברים שכדאי לקחת בחשבון כשמבצעים פעולות לפתרון השגיאות בשחזור, והוראות לפתרון השגיאות בפעולת השחזור.
שגיאה 200010301: הפעולה 'שחזור' לא הושלמה בגלל שירות webhook של קבלה שלא זמין
השגיאה 200010301 מתרחשת כשניסיון להשלים פעולת שחזור נכשל כי שירות של webhook להרשאה, שנקרא גם קריאה חוזרת (callback) של HTTP, לא זמין. כתוצאה מכך מוצגת הודעת השגיאה הבאה. הודעת השגיאה
מציינת ששרת ה-API של GKE ניסה ליצור קשר עם
webhook של בקרת כניסה בזמן ניסיון לשחזר משאב, אבל השירות שתומך ב-webhook
לא היה זמין או לא נמצא:
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.
השגיאה הזו מתרחשת כשמשאב ValidatingAdmissionWebhook או MutatingAdmissionWebhook GKE פעיל באשכול היעד, אבל שרת GKE API לא יכול להגיע לנקודת הקצה שהוגדרה ב-webhook. ה-webhooks של בקרת הכניסה מיירטים בקשות לשרת GKE API, וההגדרה שלהם מציינת איך שרת GKE API צריך לשלוח שאילתות לבקשות.
ה-clientConfig של ה-webhook מציין את ה-backend שמטפל בבקשות הגישה, שיכול להיות שירות אשכול פנימי או כתובת URL חיצונית. הבחירה בין שתי האפשרויות האלה תלויה בדרישות התפעוליות והארכיטקטוניות הספציפיות של ה-webhook. יכול להיות שפעולת השחזור נכשלה מהסיבות הבאות, בהתאם לסוג האפשרות:
שירותים בתוך האשכול: שירות GKE והפודים שתומכים בו לא משוחזרים או מוכנים כששרת GKE API מנסה לקרוא ל-webhook. המצב הזה קורה במהלך פעולות שחזור שבהן מוחלות הגדרות של webhook בהיקף אשכול לפני שהשירותים במרחב השמות נמצאים במצב
ready.כתובות URL חיצוניות: נקודת הקצה החיצונית לא זמינה באופן זמני בגלל בעיות בקישוריות לרשת בין אשכול GKE לבין נקודת הקצה החיצונית, או בגלל בעיות בפענוח DNS או בכללי חומת אש.
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מזהים את ה-webhook שנכשל שמוזכר בהודעת השגיאה. לדוגמה,
failed calling webhook "...".בודקים את ה-webhook באמצעות הפקודה
kubectl get validatingwebhookconfigurations:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yamlמחליפים את
WEBHOOK_NAMEבשם של ה-webhook שזוהה בהודעת השגיאה.אפשר גם להריץ את הפקודה
kubectl get mutatingwebhookconfigurationsכדי לבדוק את ה-webhook:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yamlמחליפים את
WEBHOOK_NAMEבשם של ה-webhook שזוהה בהודעת השגיאה.מבצעים את השלבים הבאים לפתרון בעיות בהתאם לסוג ההגדרה:
מבוסס על שירותים
clientConfigכדי להגדיר סדר שחזור מותאם אישית, משנים את המשאב
RestorePlanכך שיכלולRestoreOrderעםGroupKindDependencyרשומות. כך ניתן לשחזר את הרכיבים שתומכים ב-webhook, כמוDeployment,StatefulSetאוService, ולהכין אותם לפניValidatingWebhookConfigurationאוMutatingWebhookConfiguration.הוראות להגדרת סדר שחזור מותאם אישית מופיעות במאמר הגדרת סדר שחזור של משאבים במהלך השחזור.
הגישה הזו עלולה להיכשל כי הפודים של השירות לא נכנסים למצב
readyמלא גם אחרי שאובייקטServiceנוצר. סיבה נוספת לכישלון יכולה להיות שההגדרה של ה-webhook נוצרה באופן לא צפוי על ידי אפליקציה אחרת. לחלופין, אפשר לבצע פעולת שחזור בשני שלבים באופן הבא:יוצרים משאב
Restoreבאמצעות הגיבוי על ידי הגדרת פעולת השחזור עם מסנן שחזור מפורט שיכלול את המשאבים הספציפיים שנדרשים כדי שה-webhook יפעל, למשלNamespaces,Deployments,StatefulSetsאוServices.מידע נוסף על הגדרת השחזור באמצעות מסנן שחזור מפורט זמין במאמר הפעלת שחזור מפורט.
יוצרים עוד משאב
Restoreלפעולת הגיבוי ומגדירים את שאר המשאבים שבחרתם.
clientConfigעל סמך כתובת URLצריך לוודא שנקודת הקצה החיצונית של HTTPS פעילה, נגישה ופועלת בצורה תקינה.
מוודאים שיש קישוריות לרשת מהצמתים ומישור הבקרה של אשכול GKE לכתובת ה-URL החיצונית. יכול להיות שתצטרכו גם לבדוק את כללי חומת האש, למשל אם אתם משתמשים בענן וירטואלי פרטי, בשרת מקומי או בספק שירותי ענן שמארח את ה-webhook, את מדיניות הרשת ואת פענוח ה-DNS.
מנסים שוב לבצע את פעולת השחזור. אם הפעולה ממשיכה להיכשל, אפשר לפנות אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 200010302: השלמת פעולת השחזור נכשלה בגלל בקשה ליצירת משאב שנדחתה
השגיאה 200010302 מתרחשת כשניסיון להשלים פעולת שחזור נכשל כי webhook של הרשאה דוחה בקשה ליצירת משאב. כתוצאה מכך, מופיעה הודעת השגיאה הבאה שמציינת שלא ניתן ליצור משאב מהגיבוי באשכול היעד כי webhook פעיל של הרשאה יירט את הבקשה ודחה אותה על סמך מדיניות מותאמת אישית:
[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}
השגיאה הזו נגרמת בגלל ההגדרה שמוגדרת באשכול GKE של היעד, שיש לו ValidatingAdmissionWebhook או MutatingAdmissionWebhook שמחילים כללים ספציפיים על יצירה ושינוי של משאבים, וחוסמים את בקשת יצירת המשאבים.
לדוגמה, webhook מונע יצירה של משאב כי משאב קשור אבל סותר כבר קיים באשכול. לדוגמה, יכול להיות ש-webhook יסרב ליצור פריסה אם היא כבר מנוהלת על ידי משאב HorizontalPodAutoscaler GKE API.
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מזהים את ה-webhook שדוחה את הבקשה באמצעות הודעת השגיאה שמופיעה כשפעולת השחזור נכשלת. לדוגמה,
webhook WEBHOOK_NAME denied the requestהודעת השגיאה מכילה את הפרטים הבאים:השם של ה-webhook: השם של ה-webhook שדחה את הבקשה.
הסיבה לדחייה: הסיבה הספציפית לדחיית הבקשה.
בודקים את ה-webhook באמצעות הפקודה
kubectl get validatingwebhookconfigurations:kubectl get validatingwebhookconfigurations WEBHOOK_NAME -o yamlמחליפים את
WEBHOOK_NAMEבשם של ה-webhook שצוין בהודעת השגיאה.אפשר גם להריץ את הפקודה
kubectl get mutatingwebhookconfigurationsכדי לבדוק את ה-webhook:kubectl get mutatingwebhookconfigurations WEBHOOK_NAME -o yamlמחליפים את
WEBHOOK_NAMEבשם של ה-webhook שזיהיתם בהודעת השגיאה.לפתור את הבעיה הבסיסית באשכול היעד. הפעולה הנכונה תלויה בשגיאה הספציפית. לדוגמה, אם יש התנגשות של
HorizontalPodAutoscaler, צריך למחוק אתHorizontalPodAutoscalerהקיים באשכול היעד לפני שמריצים את השחזור, כדי לאפשר יצירה של עומסי העבודה שגובו ושל המשאבים שמשויכים אליהם.מנסים שוב לבצע את פעולת השחזור. אם פעולת השחזור ממשיכה להיכשל, אפשר לפנות אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 200060202: המערכת לא הצליחה להשלים את פעולת השחזור בגלל משאב GKE חסר במהלך אימות עומס העבודה
השגיאה 200060202 מתרחשת במהלך שלב האימות של עומס העבודה בפעולת שחזור, כשלא ניתן למצוא באשכול היעד משאב GKE ש-Backup for GKE מצפה לאמת. כתוצאה מכך, מוצגת הודעת השגיאה הבאה:
Workload Validation Error: [KIND] "[NAME]" not found
לדוגמה, Example: Workload Validation Error: pods "jenkins-0" not found
השגיאה הזו מתרחשת כש-Backup for GKE יוצר או מעדכן בהצלחה את משאב GKE כחלק מתהליך פעולת השחזור, אבל כשמתחיל שלב האימות, משאב GKE אחד או יותר כבר לא נמצא באשכול היעד כי המשאב נמחק אחרי שהוא נוצר או עודכן בהתחלה על ידי תהליך השחזור, אבל לפני שאימות עומס העבודה של משאב GKE יכול להסתיים. שגיאה כזו יכולה להתרחש מהסיבות הבאות:
מחיקה ידנית: משתמש או אדמין מחקו ידנית את המשאב באמצעות
kubectlאו כלים אחרים Cloud de Confiance by S3NS .אוטומציה חיצונית: בקרי GitOps כמו Config Sync, ArgoCD, Flux, סקריפטים בהתאמה אישית או כלים אחרים לניהול אשכולות ביטלו את השינוי במשאב או מחקו אותו כדי להתאים למצב הרצוי במאגר.
בקרי GKE: בקר GKE מחק משאב כי הוא מתנגש עם משאבים או מדיניות אחרים, או ששרשרת
OwnerReferenceמובילה לאיסוף פסולת, או שתהליך הניקוי האוטומטי של GKE מחק משאבים תלויים כשמשאבownerשלהם נמחק.
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מזהים את המשאב שחסר באמצעות הודעת השגיאה שמופיעה כשפעולת השחזור לא מסתיימת.
כדי לאתר את מרחב השמות שאליו המשאב שייך, משתמשים באחת מהשיטות הבאות:
יומני ביקורת של GKE: בודקים את יומני הביקורת של GKE שנוצרו כשניסיתם לבצע את פעולת השחזור. אפשר לסנן את היומנים כדי לראות פעולות מחיקה במשאבים
Kindו-Name. הרשומה ביומן הביקורת מכילה את מרחב השמות המקורי.פרטי הגיבוי: בודקים את היקף פעולת השחזור ואת התוכן של הגיבוי. באינדקס הגיבוי מוצג מרחב השמות המקורי של המשאב. אפשר גם לבדוק אם
RestorePlanמכילTransformationRuleשמציין כללים לשחזור המשאב במרחב השמות שתבחרו.חיפוש בכל מרחבי השמות: מריצים את הפקודה
kubectl getכדי לחפש את המשאב בכל מרחבי השמות:kubectl get KIND --all-namespaces | grep NAMEמחליפים את
KINDואתNAMEבערכים מהודעת השגיאה. אם המשאב עדיין קיים, הפקודה הזו תציג את מרחב השמות שלו.
מריצים את הפקודה
kubectl getכדי לוודא שהמחיקה בוצעה:kubectl get KIND NAME -n [NAMESPACE]מחליפים את
KINDואתNAMEבערכים מהודעת השגיאה. אמורה להופיע הודעת שגיאה.not foundכדי לבדוק את הסיבה למחיקה, אפשר להשתמש באחת מהשיטות הבאות:
יומני ביקורת של GKE: זיהוי הישות שהנפיקה את בקשת המחיקה. לדוגמה, המשתמש, חשבון השירות או הבקר.
בדיקת פעולות אוטומטיות שהוגדרו: אם אתם משתמשים ב-GitOps או בכלי אוטומציה אחרים, כדאי לבדוק את היומנים והסטטוס שלהם כדי לראות אם הם הפריעו למשאבים ששוחזרו.
בדיקת אירועים קשורים: כדי לבדוק אירועים של GKE במרחב השמות שנקבע, מריצים את הפקודה
kubectl get events:kubectl get events -n NAMESPACE_NAME --sort-by='.lastTimestamp'מחליפים את
NAMESPACE_NAMEבשם של מרחב השמות.
מטפלים בגורם למחיקת המשאב על סמך התוצאות של השלב הקודם. לדוגמה, להשהות אוטומציות שמתנגשות, לתקן הגדרות שגויות או לשנות את הרשאות המשתמשים.
אפשר לשחזר את המשאב החסר באחת מהשיטות הבאות:
החלה מחדש של קובצי מניפסט: אם יש לכם את המניפסט של המשאב החסר, אתם יכולים להחיל אותו מחדש על מרחב השמות הנכון.
ביצוע שחזור ברמת גרנולריות גבוהה: מבצעים פעולת שחזור ברמת גרנולריות גבוהה כדי לשחזר באופן סלקטיבי רק את המשאב החסר מאותו גיבוי, וכך מוודאים שציינתם את מרחב השמות הנכון. מידע נוסף על ביצוע פעולת שחזור ברמת גרנולריות גבוהה זמין במאמר הפעלת שחזור ברמת גרנולריות גבוהה.
מנסים שוב לבצע את פעולת השחזור. אם פעולת השחזור ממשיכה להיכשל, אפשר לפנות אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 200060201: הפעולה נכשלה בגלל פסק זמן לאימות עומס העבודה
השגיאה 200060201 מתרחשת כשעומסי עבודה אחד או יותר ששוחזרו לא הופכים ל-ready באופן מלא במהלך פעולת שחזור במסגרת הזמן הצפויה אחרי שהמשאבים נוצרו באשכול. כתוצאה מכך, מוצגת הודעת השגיאה הבאה:
Workload Validation Error: Timedout waiting for workloads to be ready - [namespace/workload_name, ...]
השגיאה הזו מתרחשת כי Backup for GKE מבצע שלב אימות אחרי שחזור ההגדרות של משאבי GKE, כדי לוודא שעומסי עבודה קריטיים פועלים בצורה תקינה. הגיבוי של GKE ממתין שעומסי עבודה מסוימים יגיעו למצב ready, אבל לפחות עומס עבודה אחד לא עמד בקריטריון המוכנות הבא בפרק הזמן שהוקצה לפסק זמן:
בלוקאל
Pods: status.PhaseהואRunningבמאפיין
Deployments: הערךstatus.ReadyReplicasשווה לערךspec.Replicasבמאפיין
StatefulSets: הערךstatus.ReadyReplicasשווה לערךspec.Replicasבמאפיין
DaemonSets: הערךstatus.NumberReadyשווה לערךstatus.DesiredNumberScheduled
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מזהים את עומסי העבודה שלא נמצאים במצב
readyבהודעת השגיאה שבה מפורטים עומסי העבודה ומרחבי השמות שלהם שלא הצליחו להיכנס למצבready.כדי לבדוק את סטטוס עומסי העבודה ולקבל פרטים ואירועים לגבי עומסי העבודה שנכשלו, מריצים את הפקודה
kubectl describe:kubectl describe WORKLOAD_TYPE WORKLOAD_NAME -n NAMESPACE_NAME kubectl get pods -n NAMESPACE_NAME -l SELECTOR_FOR_WORKLOADמחליפים את מה שכתוב בשדות הבאים:
WORKLOAD_TYPE: סוג עומס העבודה, לדוגמה:Deployment,StatefulSetאוDaemonSet.
WORKLOAD_NAME: השם של מופע עומס העבודה הספציפי.
NAMESPACE_NAME: מרחב השמות שבו נמצא עומס העבודה.
SELECTOR_FOR_WORKLOAD: בורר התוויות כדי למצוא אתPodsשמשויך לעומס העבודה. לדוגמה,app=my-app.
לפודים בתוך סוגי עומסי עבודה של
DeploymentsאוStatefulSets, בודקים את הסטטוס של פודים ספציפיים על ידי הפעלת הפקודהkubectl describe pod:kubectl describe pod POD_NAME -n NAMESPACE_NAMEמחליפים את מה שכתוב בשדות הבאים:
POD_NAME: השם של הפוד הספציפי.
NAMESPACE_NAME: מרחב השמות שבו נמצא ה-Pod.
בקטע
Events, מנתחים את האירועים והיומנים בפלטdescribeומאתרים את המידע הבא:
ImagePullBackOff / ErrImagePull: מציין שיש בעיות באחזור תמונות של קונטיינרים.
CrashLoopBackOff: מציין שהקונטיינרים מתחילים לפעול וקורסים.
בקטע
Containers, מנתחים את היומנים של מאגר התגים בפלטdescribeכדי למצוא את שם מאגר התגים באמצעות הפעלת הפקודהkubectl logs:kubectl logs POD_NAME -n NAMESPACE_NAME -c CONTAINER_NAMEמחליפים את מה שכתוב בשדות הבאים:
POD_NAME: השם של הפוד הספציפי.
NAMESPACE_NAME: מרחב השמות שבו נמצא ה-Pod.
CONTAINER_NAME: השם של הקונטיינר ב-Pod.
לפי הפלט של
describe, יש כמה סיבות לכך שה-pod לא מופיע בפלט של המשאב, כולל:כשלים בבדיקת המוכנות: בדיקות המוכנות של הקונטיינר לא מצליחות.
בעיות במשאבים: אין מספיק מעבד (CPU), זיכרון או משאבים אחרים באשכול, או שהגעתם למגבלות המכסה.
בעיות בקונטיינר init: כשלים בקונטיינרים init שמונעים את ההפעלה של הקונטיינרים הראשיים.
שגיאות הגדרה: שגיאות ב-
ConfigMaps, ב-Secretsאו במשתני הסביבה.בעיות ברשת:
Podsלא מצליחים לתקשר עם השירותים הנדרשים.
בודקים את המשאבים של אשכול GKE כדי לוודא שיש לאשכול GKE מספיק קיבולת של צמתים, מעבד וזיכרון להרצת עומסי העבודה ששוחזרו. באשכולות Autopilot, הקצאת צמתים אוטומטית (NAP) עשויה להימשך זמן נוסף, ולכן מומלץ לבדוק אם יש מגבלות או שגיאות בהתאמה לעומס של צמתים. מטפלים בבעיות הבסיסיות על סמך הממצאים, ופותרים את הבעיות שמונעות מעומסי העבודה להיכנס למצב
ready. הגישה הזו יכולה לכלול תיקון של קובצי מניפסט, התאמה של בקשות או מגבלות משאבים, תיקון של מדיניות רשת או וידוא שהתלות מתקיימת.אחרי שפותרים את הבעיות הבסיסיות, מחכים שעומסי העבודה יעברו למצב
ready. לא צריך להפעיל שוב את פעולת השחזור.
אם הבעיה נמשכת, אפשר לפנות אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 200060102: השלמת פעולת השחזור נכשלה בגלל שגיאת אימות של עוצמת הקול
השגיאה 200060102 מתרחשת כי אחד או יותר מהמשאבים VolumeRestore, שמנהלים את תהליך השחזור של נתונים מ-VolumeBackup אל PersistentVolume, נכנסו למצב failed או deleting במהלך שלב אימות הנפח של פעולת השחזור. שחזור הנפח שנכשל
גורם להודעת השגיאה הבאה בשדה stateReason של משאב השחזור:
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), ...]
בהודעת השגיאה מפורטים השמות המלאים של המשאבים שנכשלו VolumeRestore,
כולל שם היעד PersistentVolumeClaim ומרחב השמות. הודעת השגיאה מציינת שתהליך שחזור הנתונים של PersistentVolumeClaim המושפע לא הושלם בהצלחה כש-Backup for GKE הפעיל משאבי VolumeRestore כדי להקצות PersistentVolumes מ-VolumeBackups, ויצירת הדיסק הקשיח הבסיסי מהתמונה נכשלה. יכולות להיות כמה סיבות לכשלים ב-VolumeRestore:
מכסה לא מספיקה: אין מספיק מכסת דיסקים קשיחים קבועים שהוקצתה בפרויקט או באזור, לדוגמה,
SSD_TOTAL_GB.בעיות בהרשאות: לחשבון השירות שבו משתמשים ב-Backup for GKE חסרות ההרשאות הנדרשות ליצירת דיסקים או לגישה לתמונות מצב.
בעיות ברשת: יש בעיות זמניות או קבועות ברשת שמפריעות לתהליך יצירת הדיסק.
Invalid snapshot (קובץ snapshot לא תקין): המקור
VolumeBackupאו קובץ ה-snapshot הבסיסי של Persistent Disk פגום או לא נגיש.אילוצי משאבים: אילוצים אחרים של משאבי אשכול מעכבים את הקצאת הנפח.
שגיאות פנימיות: יש בעיות פנימיות בשירות Persistent Disk.
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מזהים את
PersistentVolumeClaimsשנכשלו שמופיעים בהודעת השגיאה, שבה מפורטים שמות המשאבים המלאים של אובייקטים מסוגVolumeRestoreשנכשלו.כדי לקבל פרטים על כל משאב
VolumeRestoreשנכשל, מריצים את הפקודהgcloud beta container backup-restore volume-restores describe:gcloud beta container backup-restore volume-restores describe VOLUME_RESTORE_ID \ --project=PROJECT_ID \ --location=LOCATION \ --restore-plan=RESTORE_PLAN_ID \ --restore=RESTORE_IDמחליפים את מה שכתוב בשדות הבאים:
VOLUME_RESTORE_ID: המזהה של משאבVolumeRestoreשנכשל.
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
LOCATION: Cloud de Confiance by S3NS המיקום של השחזור.
RESTORE_PLAN_ID: המזהה של תוכנית השחזור.
RESTORE_ID: המזהה של פעולת השחזור.
בודקים את השדות
.stateו-stateMessageבפלט כדי לקבל פרטים על הכשל.בודקים את המצב של יעד
PersistentVolumeClaimעל ידי הפעלת הפקודהkubectl get pvc:kubectl get pvc PVC_NAME -n NAMESPACE_NAME -o yamlמחליפים את מה שכתוב בשדות הבאים:
PVC_NAME: השם שלPersistentVolumeClaimהמשאב.
NAMESPACE_NAME: מרחב השמות שבו נמצאPersistentVolumeClaim.
מוודאים שבקטע
status.phaseשל הפלט מצוין שלבPending. בשלב הזה,PersistentVolumeClaimעדיין לא מקושר ל-PersistentVolume, וזה צפוי אםVolumeRestoreנכשל.בודקים את הקטע
Eventsבפלט ה-YAML כדי לראות הודעות שקשורות לכשלים בהקצאת משאבים, כמו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).הפלט מציין שיש בעיה בהרשאות בזמן הגישה למפתח ההצפנה במהלך יצירת הדיסק. כדי לספק את ההרשאה הרלוונטית לגישה למפתח, צריך לפעול לפי ההוראות שמתוארות במסמכי התיעוד של Backup for GKE בנושא הפעלת הצפנת CMEK.
compute service agentבודקים את האירועים ב-GKE במרחב השמות
PersistentVolumeClaim, שכוללים הודעות שגיאה מפורטות מהבקרPersistentVolumeאו מנהל ה-CSI, על ידי הפעלת הפקודהkubectl get events:kubectl get events -n NAMESPACE_NAME --sort-by='.lastTimestamp'מחליפים את
NAMESPACE_NAMEבמרחב השמות שלPersistentVolumeClaim,זיהוי אירועים שקשורים לשם
PersistentVolumeClaim, שמכיל מילות מפתח כמוFailedProvisioningאוExternalProvisioning. האירועים יכולים לכלול גם שגיאות מספק האחסון, כמוpd.csi.storage.gke.io.בודקים את יומני Persistent Disk ביומני הביקורת של Cloud וב-Cloud Logging כדי לראות אם יש שגיאות שקשורות לפעולות של יצירת דיסק בסביבות הזמן של הכשל.
על סמך הודעות השגיאה שנוצרו, צריך לטפל בבעיות הבסיסיות הבאות:
אם מצוין, מגדילים את המכסות של דיסק אחסון מתמיד (persistent disk), למשל
(QUOTA_EXCEEDED}: Quota SSD_TOTAL_GB exceeded.בודקים ומתקנים את ההרשאות ב-IAM.
בודקים את הבעיות ברשת ופותרים אותן.
כדי לפתור בעיות שקשורות לתמונת המצב או לשירות Persistent Disk, צריך לפנות ל-Cloud Customer Care.
הסטטוס של
PersistentVolumeClaimנשארPending.תהליך השחזור לא מנסה אוטומטית לשחזר את
VolumeRestore. כדי לפתור את הבעיה, צריך להפעיל פעולת שחזור עבור עומס העבודהDeploymentאוStatefulSetשמשתמש ב-PersistentVolumeClaimהמושפע.משתמשים בשחזור מדויק כדי לשחזר באופן סלקטיבי את עומס העבודה
DeploymentאוStatefulSetשמשויך ל-PersistentVolumeClaimשנכשל. הגישה הזו מאפשרת למנגנונים הרגילים של GKE לטפל שוב בתהליך של יצירתPersistentVolumeClaimוקישור, אם הבעיה הבסיסית נפתרה. מידע נוסף על שחזור ברמת גרנולריות גבוהה זמין במאמר בנושא הפעלת שחזור ברמת גרנולריות גבוהה.
אם הבעיה נמשכת או שהסיבה לVolumeRestoreהכשל לא ברורה, אפשר לפנות אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 200060101: פעולת השחזור לא הושלמה בגלל פסק זמן לאימות עוצמת הקול
השגיאה 200060101 מתרחשת במהלך שלב אימות הנפח של פעולת שחזור, כש-Backup for GKE מפסיק להמתין כי לפחות אחד מהמשאבים VolumeRestore, שמנהל את שחזור הנתונים מ-VolumeBackup, לא הגיע למצב succeeded בתוך תקופת הזמן הקצובה. יכול להיות שגם VolumeRestoreמשאבים אחרים יהיו חלקיים.
הודעת השגיאה בשדה stateReason של המשאב Restore מציגה את רשימת המשאבים VolumeRestore שנמצאו אבל עדיין לא היו במצב succeeded כשנבדק פסק הזמן. הוא כולל את השם של משאב היעד PersistentVolumeClaim ואת מרחב השמות שלו עבור משאבי VolumeRestore האלה, לדוגמה:
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), ...]
בנוסף, אם שחזור של נפח כלשהו נכשל, הודעת השגיאה תכלול את הכשלים האלה, לדוגמה:
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), ...]
הגיבוי ל-GKE יוזם הקצאה של משאבי VolumeRestorePersistentVolumes מ-VolumeBackups. השגיאה מציינת שיצירת דיסק האחסון המתמיד (persistent disk) הבסיסי מתוך ה-snapshot והקישור הבא של PersistentVolumeClaim אל PersistentVolume נמשכו יותר מהזמן הקצוב לתפוגה שחושב עבור VolumeRestores שצוין. יכול להיות שגם פעולות שחזור אחרות עם אותו VolumeRestores יהיו במצב לא הושלם.
גם אם הגיע הזמן הקצוב לתפוגה מנקודת המבט של Backup for GKE, יכול להיות שתהליך יצירת הדיסק הבסיסי עבור משאב VolumeRestore שצוין, ואולי גם משאבי VolumeRestore אחרים, עדיין מתבצע או נכשל.
כדי לפתור את הבעיה, צריך לפעול לפי ההוראות הבאות:
מזהים את השם ואת מרחב השמות של
PersistentVolumeClaimשחלף הזמן הקצוב לתגובה שלו בהודעת השגיאה. לדוגמה,(PVC: PVC_NAMESPACE/PVC_NAME).כדי לראות את הסטטוסים הנוכחיים של כל
VolumeRestoresשמשויכים לפעולת השחזור, מריצים את הפקודהgcloud beta container backup-restore volume-restores list:gcloud beta container backup-restore volume-restores list \ --project=PROJECT_ID \ --location=LOCATION \ --restore-plan=RESTORE_PLAN_NAME \ --restore=RESTORE_NAMEמחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה Cloud de Confiance by S3NS הפרויקט.
LOCATION: Cloud de Confiance by S3NS המיקום של השחזור.
RESTORE_PLAN_NAME: השם של תוכנית השחזור.
RESTORE_NAME: השם של פעולת השחזור.
מאתרים את
VolumeRestoresשלא נמצאים במצבsucceeded.אם יש כרכים במצב
failed, צריך לבצע פעולות לפתרון בעיות כדי לפתור את שגיאת האימות של הכרך. מידע נוסף זמין במאמר בנושא שגיאה 200060102: הפעולה 'שחזור' לא הושלמה בגלל שגיאה באימות עוצמת הקול. אם יש כשלים בכרכים, הם מפורטים בחלק השני של הודעת השגיאה.כדי לקבל פרטים על
VolumeRestoreשמוזכר בשגיאה ועלVolumeRestoresאחרים שלא נמצאים במצבsucceeded, מריצים את הפקודהgcloud beta container backup-restore volume-restores describe:gcloud beta container backup-restore volume-restores describe VOLUME_RESTORE_ID \ --project=PROJECT_ID \ --location=LOCATION \ --restore-plan=RESTORE_PLAN_NAME \ --restore=RESTORE_NAMEמחליפים את מה שכתוב בשדות הבאים:
VOLUME_RESTORE_ID: המזהה של משאבVolumeRestore.
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
LOCATION: Cloud de Confiance by S3NS המיקום של השחזור.
RESTORE_PLAN_NAME: השם של תוכנית השחזור.
RESTORE_NAME: השם של פעולת השחזור.
בודקים את השדות
stateוstateMessage. הערך בשדהstateהוא כנראהcreatingאוrestoring. בשדהstateMessageעשוי להיות הקשר נוסף ופרטים עלPersistentVolumeClaimהיעד.בודקים את המצב של יעד
PersistentVolumeClaimsשזוהה על ידי הרצת הפקודהkubectl get pvc:kubectl get pvc PVC_NAME -n PVC_NAMESPACE -o yamlמחליפים את מה שכתוב בשדות הבאים:
PVC_NAME: השם שלPersistentVolumeClaim.
PVC_NAMESPACE: מרחב השמות שלPersistentVolumeClaim.
הערך של
PersistentVolumeClaim'sstatus.phaseיהיה כנראהPending. בודקים את הקטעEventsכדי לראות אם מופיעות בו השגיאות הבאות:
Waiting for first consumer to be created before binding: מציין שStorageClassכוללvolumeBindingMode: WaitForFirstConsumer.הקצאת ההרשאות של
PersistentVolumeמתעכבת עד שנוצרת ומתוזמנתPodשמשתמשת בPersistentVolumeClaim. יכול להיות שהבעיה היא בתזמוןPodולא בהקצאת נפח האחסון עצמה. לכן, מומלץ לבדוק למה לא מתבצע תזמון שלPodsשצורכים אתPersistentVolumeClaimאו למה הם לא מתחילים.
FailedProvisioningאו שגיאות ממנהל הקצאות האחסון: לדוגמה,pd.csi.storage.gke.io.
בודקים את האירועים ב-GKE במרחבי השמות הרלוונטיים על ידי הפעלת הפקודה
kubectl get events:kubectl get events -n PVC_NAMESPACE --sort-by='.lastTimestamp'מחליפים את
PVC_NAMESPACEבמרחב השמות שלPersistentVolumeClaim.מחפשים אירועים שקשורים לשמות
PersistentVolumeClaim, כמו הודעות או שגיאות של הקצאת הרשאות.בודקים את יומני הביקורת של Cloud ואת יומני Persistent Disk ב-Cloud Logging.
מעקב אחרי הסטטוס של כל
VolumeRestoresב-creatingובמצביםrestoringשונים.אחרי שהבעיה נפתרת, הסטטוס של
VolumeRestoresיכול להשתנות לסטטוסsucceededאוfailed. אםVolumeRestoresמגיעים למצבsucceeded,PersistentVolumeClaimsאמור להפוך לBoundועומסי העבודה אמורים לפעול. אם נפח האחסוןVolumeRestoreעובר למצבfailed, צריך לבצע פעולות לפתרון בעיות כדי לפתור את שגיאת האימות של נפח האחסון. מידע נוסף זמין במאמר שגיאה 200060102: הפעולה 'שחזור' לא הושלמה בגלל שגיאת אימות נפח
אם VolumeRestores נשארים במצבים creating או restoring למשך זמן ממושך מדי, פנו אל Cloud Customer Care לקבלת עזרה נוספת.