פתרון בעיות שקשורות לאחסון בגיבוי ל-GKE

בדף הזה מתוארות שגיאות שקשורות לאחסון שאתם עשויים להיתקל בהן במהלך השימוש ב-Backup for GKE, דברים שכדאי לקחת בחשבון כשמבצעים את הפעולה ושלבים לפתרון הבעיה.

שגיאה 100010105: הגיבוי של PersistentVolumeClaim נכשל – הדיסק שאליו מתייחס PersistentVolume לא קיים

השגיאה 100010105 מתרחשת כשניסיון לגבות PersistentVolumeClaim נכשל כי הוא מפנה לדיסק שלא קיים, וכתוצאה מכך מוצגת הודעת השגיאה Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist.

ב-Google Kubernetes Engine, PersistentVolumeClaims מבקשים אחסון מ-PersistentVolumes. PersistentVolume, בתורו, מייצג חלק מאחסון, לרוב דיסק לאחסון מתמיד ב-Compute Engine. שגיאה יכולה להתרחש כש-PersistentVolumeClaim מאוגד ל-PersistentVolume וההגדרה של PersistentVolume מציינת דיסק קשיח קבוע ב-Compute Engine. עם זאת, לא ניתן למצוא בפרויקט Google Cloud את הדיסק בפועל עם השם והמיקום שצוינו בהגדרה PersistentVolume. לכן, אי אפשר להמשיך את הגיבוי ל-GKE של דיסק שלא קיים, והגיבוי נכשל.

כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:

  1. מזהים את PersistentVolumeClaim וPersistentVolume הבעייתיים. השמות של PersistentVolumeClaim הבעייתי ושל PersistentVolume המשויך אליו מופיעים בשדה state reason של פעולת הגיבוי שנכשלה ב-Backup for GKE. מומלץ לתעד את PersistentVolumeClaim השם, מרחב השמות והשם של PersistentVolume.

  2. בודקים את PersistentVolume. כדי לתאר את PersistentVolume, משתמשים בשם PersistentVolume שזיהיתם בשדה של סיבת המצב בפקודה הבאה:

    kubectl describe pv PERSISTENTVOLUME_NAME
    

    מחליפים את PERSISTENTVOLUME_NAME בשם של PersistentVolume.

  3. בפלט, בודקים את הקטע source, במיוחד את הקטע csi. בקטע הזה מתואר VolumeHandle שPersistentVolume מנסה להפנות אליו. לדוגמה:

    Source:
      Type: GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
    PDName: my-non-existent-disk
    FSType: ext4
    Partition: 0
    ReadOnly: false
                In this example, the PD name is my-non-existent-disk.
    
        Source:
      Type:       CSI (a Container Storage Interface (CSI) volume)
      Driver:     pd.csi.storage.gke.io
      VolumeHandle: projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    ...
    

    בדוגמה הזו, VolumeHandle מכיל את הנתיב המלא לדיסק, כולל השם והמיקום שלו. לדוגמה, projects/my-gcp-project/zones/us-central1-a/disks/my-disk-name.

  4. משתמשים ב-VolumeHandle שמתקבל מהתיאור של PersistentVolume כדי לזהות את שם הדיסק והאזור.

  5. כדי לוודא שהדיסק קיים ב Google Cloud פרויקט, אפשר להשתמש באחת מהשיטות הבאות:

    דיסק אזורי

    אם אתם משתמשים בדיסק אזורי, מריצים את הפקודה gcloud compute disks describe באמצעות Google Cloud CLI:

    gcloud compute disks describe DISK_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DISK_NAME: השם של הדיסק שקיבלתם מהתיאור של PersistentVolume.

    • ZONE_NAME: האזור של הדיסק שהתקבל מתיאור PersistentVolume.

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

    דיסק אזורי

    אם אתם משתמשים בדיסק אזורי, מריצים את הפקודה gcloud compute disks describe באמצעות Google Cloud CLI:

    gcloud compute disks describe DISK_NAME \
        --region=REGION_NAME \
        --project=PROJECT_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DISK_NAME: השם של הדיסק שקיבלתם מהתיאור של PersistentVolume.

    • REGION_NAME: האזור של הדיסק שקיבלתם מהתיאור של PersistentVolume.

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

    אם מופיעה הודעת השגיאה Resource not found או The resource DISK_NAME was not found, הדיסק לא קיים. כדי לפתור את הבעיה, אפשר להשתמש באחת מהשיטות הבאות, בהתאם לתרחיש שהכי מתאים לצרכים שלכם:

    • אם הדיסק נמחק בטעות או ששמו שונה ואתם רוצים לשמור את הנתונים או את PersistentVolumeClaim, או אם PersistentVolume הוגדר עם שם דיסק שגוי, אתם יכולים להשתמש באחת מהשיטות הבאות כדי לפתור את הבעיה:

      • שחזור הדיסק: אם יש לכם גיבוי של הדיסק, שחזרו אותו עם אותו שם ומיקום בדיוק שאליהם מתייחס PersistentVolume.

      • יצירת דיסק חדש: אם שחזור הדיסק לא אפשרי, יוצרים דיסק חדש עם אותו שם ומיקום שמופיעים בהגדרות PersistentVolume.

    • אם אין יותר צורך ב-PersistentVolumeClaim או ב-PersistentVolume, בנתונים שלהם או באפליקציה, מומלץ להסיר את הישות שלא נחוצה:

      • מחיקת PersistentVolumeClaim: מוחקים את PersistentVolumeClaim באמצעות כלי שורת הפקודה kubectl כדי להריץ את הפקודה kubectl delete pvc:
      kubectl delete pvc PVC_NAME -n NAMESPACE
      

      מחליפים את מה שכתוב בשדות הבאים:

      • PVC_NAME: השם של PersistentVolumeClaim שרוצים למחוק.

      • NAMESPACE: מרחב השמות של PersistentVolumeClaim שרוצים למחוק.

    • PersistentVolume עדיין קיים אחרי שמוחקים את PersistentVolumeClaim: אם PersistentVolumeReclaimPolicy של PersistentVolume מוגדר לDelete, PersistentVolume נמחק אוטומטית כשמוחקים את PersistentVolumeClaim. אם הערך של persistentVolumeReclaimPolicy הוא Retain, צריך למחוק ידנית את PersistentVolume אחרי שמוחקים את PersistentVolumeClaim. כדי למחוק את PersistentVolume, משתמשים בכלי שורת הפקודה kubectl כדי להריץ את הפקודה kubectl delete pv:

      kubectl delete pv PV_NAME
      

      מחליפים את PV_NAME בשם של PersistentVolume שרוצים למחוק.

.

אם הפעולה ממשיכה להיכשל, פנו אל Cloud Customer Care לקבלת עזרה נוספת.