בדף הזה מתוארות שגיאות הרשאה שאתם עשויים להיתקל בהן כשאתם משתמשים ב-Backup for GKE, דברים שכדאי לקחת בחשבון כשמבצעים את הפעולה ואיך לפתור את השגיאה.
שגיאה 100010101: הגיבוי של PersistentVolumeClaim נכשל – חסר קישור IAM לפרויקט הדייר (tenant)
השגיאה 100010101 מתרחשת כשניסיון לגבות את PersistentVolumeClaim נכשל בגלל שחסר קישור של ניהול זהויות והרשאות גישה (IAM) לפרויקט הדייר (tenant), ומוצגת הודעת השגיאה Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project.
הכלי "גיבוי ל-GKE" יוצר קובצי snapshot של Persistent Disk באשכול GKE. תמונות המצב נמצאות בפרויקט Google Cloud שלכם, שנקרא גם פרויקט הצרכן, ו- Google Cloud יוצר אותן בפרויקט דייר (tenant) שהוא מנהל. פרויקט הדייר (tenant) נמצא בארגון google.com, בנפרד מהארגון שלכם.
סוכן השירות בפרויקט הדייר (tenant) צריך הרשאות ספציפיות כדי להשתמש במפתח ההצפנה בניהול הלקוח (CMEK) שמצפין את ה-Persistent Disk שאליו מפנה ה-PersistentVolumeClaim של האשכול. ההרשאה הזו מצפינה את הנתונים בתמונת המצב ומפענחת אותם. אם לסוכן השירות של service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com אין את התפקיד roles/cloudkms.cryptoKeyEncrypterDecrypter ב-CMEK של הדיסק, פעולת הגיבוי תיכשל.
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מוודאים שיש לכם הרשאות IAM מספיקות לשינוי מדיניות IAM במפתח Cloud Key Management Service במסוף Google Cloud , כמו
roles/cloudkms.adminאוroles/owner.מאתרים את סוכן השירות של Compute Engine בפרויקט הדייר באמצעות הערך
TENANT_PROJECT_NUMBERשמופיע בהודעהstatus reasonשל פעולת הגיבוי שנכשלה. לדוגמה:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.מאתרים את פרטי ה-CMEK הבאים שמשמשים להצפנה של הדיסק לאחסון מתמיד:
שם המפתח: השם של מפתח ההצפנה.
Key ring: השם של אוסף המפתחות שבו נמצא המפתח.
Location: המיקום של המפתח ב- Google Cloud . לדוגמה,
globalאוus-central1.
כדי להקצות לסוכן השירות של Compute Engine בפרויקט הדייר את התפקיד
roles/cloudkms.cryptoKeyEncrypterDecrypterבמפתח ה-CMEK, מריצים את הפקודהgcloud kms keys add-iam-policy-bindingבאמצעות Google Cloud CLI:gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypterמחליפים את מה שכתוב בשדות הבאים:
KEY_NAME: השם של מפתח ההצפנה.
KEY_RING: השם של אוסף המפתחות.
LOCATION: Google Cloud המיקום של המפתח. לדוגמה,globalאוus-central1.
TENANT_PROJECT_NUMBER: מספר פרויקט הדייר שקיבלתם מההודעהstatus reasonשל פעולת הגיבוי שנכשלה.
אם הפקודה בוצעה בהצלחה, הפלט ייראה כך:
- members: - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypterבודקים מחדש את פעולת הגיבוי. אם הפעולה עדיין לא מצליחה, אפשר לפנות אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 100010104: הגיבוי של PersistentVolumeClaim נכשל – הפרה של הגבלת מדיניות ארגונית במהלך יצירת תמונת מצב
השגיאה 100010104 מתרחשת כשניסיון לגבות את PersistentVolumeClaim נכשל בגלל הפרה של הגבלת מדיניות הארגון במהלך יצירת תמונת המצב, וכתוצאה מכך מוצגת הודעת השגיאה Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot.
הכלי "גיבוי ל-GKE" יוצר קובצי snapshot של Persistent Disk באשכול GKE. התמונות של המצב נמצאות בפרויקט שלכם ב- Google Cloud , שנקרא גם פרויקט צרכן, והן נוצרות בפרויקט דייר (tenant) שמנוהל על ידי Google Cloud. פרויקט הדייר (tenant) נמצא בארגון google.com, בנפרד מהארגון שלכם.
מדיניות הארגון קובעת איפה אפשר ליצור משאבי אחסון. השגיאה Constraint constraints/compute.storageResourceUseRestrictions violated מציינת שמשאב או תמונת מצב מפרים את המדיניות כי הם נוצרו בפרויקט של דייר שלא נכלל במבנה הארגוני המותר. מכיוון שהפרויקט של הדייר נמצא בארגון של Google, הוא לא נכלל במדיניות שהגדרתם, ולכן הגיבוי נכשל.
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מאתרים את מדיניות הארגון שמטמיעה את האילוץ
constraints/compute.storageResourceUseRestrictions. למידע נוסף על הצגת מדיניות הארגון באמצעות מסוף Google Cloud , קראו את המאמר הצגת מדיניות הארגון.משנים את המדיניות
constraints/compute.storageResourceUseRestrictionsכדי לכלול ברשימת ההיתרים שלה את תיקיית הפרויקט של הדיירfolders/77620796932שבה נעשה שימוש בגיבוי ל-GKE.אחרי שמוסיפים את התיקייה לרשימת ההיתרים, שומרים את השינויים במדיניות.
אחרי שהמדיניות הארגונית מתעדכנת ומופצת, מה שקורה בדרך כלל תוך כמה דקות, צריך לבדוק מחדש את פעולת הגיבוי. הגיבוי אמור להמשיך בלי להפר את מגבלות השימוש במשאבי האחסון. אם הפעולה עדיין נכשלת, פנו ל-Cloud Customer Care כדי לקבל עזרה נוספת.
שגיאה 100010106: הגיבוי של PersistentVolumeClaim נכשל – חסר קישור IAM לסוכן השירות של Backup for GKE
השגיאה 100010106 מתרחשת כשניסיון לגבות PersistentVolumeClaim נכשל בגלל שחסר קישור של ניהול זהויות והרשאות גישה (IAM) לסוכן השירות של "גיבוי ל-GKE", וכתוצאה מכך מופיעה הודעת השגיאה Failed to backup PVC - Missing IAM binding for Backup for GKE service agent.
כדי להצפין ולפענח את הכרכים של דיסקים לאחסון מתמיד, ל-Backup for GKE נדרשות הרשאות לשימוש במפתח ההצפנה בניהול הלקוח (CMEK) של BackupPlan. אם לסוכן השירות של Backup for GKE אין את התפקיד roles/cloudkms.cryptoKeyEncrypterDecrypter ב-BackupPlan CMEK, פעולות הגיבוי ייכשלו.
כדי לפתור את השגיאה, פועלים לפי ההוראות הבאות:
מזהים את סוכן השירות של Backup for GKE שמנוהל על ידי Google, שספציפי לפרויקט שלכם. לדוגמה,
service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com. אפשר למצוא את מספר הפרויקט בדרכים הבאות:משתמשים במרכז הבקרה של הפרויקט Google Cloud במסוף Google Cloud .
מריצים את הפקודה
gcloud projects describeבאמצעות Google Cloud CLI:gcloud projects describe PROJECT_ID –format="value(projectNumber)"מחליפים את
PROJECT_IDבשם הייחודי של הפרויקט.
מזהים את פרטי ה-CMEK הבאים:
שם המפתח: השם של מפתח ההצפנה.
Key ring: השם של אוסף המפתחות שבו נמצא המפתח.
מיקום: Google Cloud המיקום שבו נמצא מפתח ה-CMEK שלכם
BackupPlan. לדוגמה:globalאוus-central1.
כדי להקצות לסוכן השירות של "גיבוי ל-GKE" את התפקיד
roles/cloudkms.cryptoKeyEncrypterDecrypterב-CMEK, מריצים את הפקודהgcloud kms keys add-iam-policy-bindingבאמצעות Google Cloud CLI:gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypterמחליפים את מה שכתוב בשדות הבאים:
KEY_NAME: השם של מפתח ההצפנה.
KEY_RING: השם של אוסף המפתחות.
LOCATION: Google Cloud המיקום של המפתח. לדוגמה:globalאוus-central1.
PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud .
מוודאים שיש לכם את ההרשאות הנדרשות לניהול זהויות והרשאות גישה (IAM) במפתח Cloud Key Management Service. לדוגמה,
roles/cloudkms.adminאוroles/owner.מוודאים שיש לכם את ההרשאות שניתנו. בפלט של הפקודה הקודמת
gcloud kms keys add-iam-policy-binding, מחפשים רשומה שדומה לזו:-members: -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypterאחרי שנותנים את ההרשאות הנדרשות, מנסים שוב לבצע את פעולת הגיבוי. אם הפעולה לא מסתיימת בהצלחה, פנו אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 100010107: לא ניתן לגבות את PersistentVolumeClaim – חסר קישור IAM – חשבון שירות של סוכן (KCP)
השגיאה 100010107
מתרחשת כשמנסים לבצע גיבוי של GKE ואין לסוכן השירות של אשכול Google Kubernetes Engine גישה למפתח ההצפנה בניהול הלקוח (CMEK). כתוצאה מכך, מוצגת ההודעה Failed to backup PVC - Missing IAM binding - agent service account (KCP).
סוכן השירות של אשכול Google Kubernetes Engine, בדרך כלל בפורמט service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com, חיוני כדי שאשכול GKE יוכל ליצור אינטראקציה עם שירותים. Google Cloudכשתוכנית הגיבוי משתמשת במפתח הצפנה בניהול הלקוח (CMEK).
סוכן השירות הזה צריך הרשאות כדי להצפין ולפענח את נתוני הגיבוי באמצעות ה-CMEK. אם חסר לתוכנית הגיבוי התפקיד roles/cloudkms.cryptoKeyEncrypterDecrypter ב-CMEK, פעולות הגיבוי שהופעלו מהאשכול ייכשלו עם השגיאה permission denied.
כדי לפתור את השגיאה, פועלים לפי הוראות פתרון הבעיות הבאות:
מוודאים שיש לכם את ההרשאות הנכונות לשינוי מדיניות IAM במפתח Cloud Key Management Service. לדוגמה,
cloudkms.adminאוroles/owner.מזהים את סוכן השירות של אשכול Google Kubernetes Engine. סוכן השירות הזה נוצר ומנוהל באופן אוטומטי על ידי Google Cloud בשביל אשכולות ה-GKE שלכם. לדוגמה,
service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com. כדי ליצור את חשבון השירות המלא, צריך את מספר הפרויקט. אפשר למצוא את מספר הפרויקט באחת מהשיטות הבאות:משתמשים במרכז הבקרה של הפרויקט Google Cloud במסוף Google Cloud .
מריצים את הפקודה
gcloud projects describeבאמצעות Google Cloud CLI:gcloud projects describe PROJECT_ID –-format="value(projectNumber)"מחליפים את
PROJECT_IDבמזהה הפרויקט.
מאתרים את פרטי ה-CMEK הבאים:
שם המפתח: השם של מפתח ההצפנה.
Key ring: השם של אוסף המפתחות שבו נמצא המפתח.
Location: המיקום של המפתח ב- Google Cloud . לדוגמה,
globalאוus-central1.
הקצאת התפקיד
roles/cloudkms.cryptoKeyEncrypterDecrypterברמת ה-CMEK. סוכן השירות של Google Kubernetes Engine צריך הרשאות במפתח ההצפנה שלכם. כדי להעניק את התפקידroles/cloudkms.cryptoKeyEncrypterDecrypterב-CMEK, מריצים את הפקודהgcloud kms key add-iam-policy-bindingבאמצעות Google Cloud CLI:gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypterמחליפים את מה שכתוב בשדות הבאים:
KEY_NAME: השם של מפתח ההצפנה.
KEY_RING: השם של אוסף המפתחות.
LOCATION: Google Cloud המיקום של המפתח. לדוגמה:globalאוus-central1.
PROJECT_NUMBER: שם הפרויקט.
הפלט אמור להיראות כך:
- members: - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter ```מנסים שוב לבצע את הפעולה של גיבוי ל-GKE. אם הפעולה ממשיכה להיכשל, פנו ל-Cloud Customer Care כדי לקבל עזרה נוספת.
שגיאה 100010109: הגיבוי של PersistentVolumeClaim נכשל – מדיניות DiskSettings לא מאפשרת גיבוי באזור היעד
שגיאה 100010109 מתרחשת כשאזור הגיבוי המוגדר לא מורשה על ידי מדיניות מיקום הגישה של DiskSettings.
הסבר על השגיאה
השגיאה הזו מתרחשת כשללקוח מוגדרת מדיניות מיקומי גישה DiskSettings עם הערך SPECIFIC_REGIONS עבור חלק ממיקומי הדיסקים שמפנים אליהם בגיבוי של האשכול. מדיניות הגישה למיקום מאפשרת ליצור קובצי Snapshot רק באזורים ספציפיים, ולכן הגיבוי נדחה אם מיקום האחסון של היעד לא נמצא ברשימה הזו. במקרה כזה, יצירת התמונה תכשל ותוצג הודעה שדומה להודעה הבאה:
No permission to read source disk in us-central1 from target snapshot in us-east1.
שלבים לפתרון בעיות
- מזהים את אזורי המקור והיעד: בודקים את הודעת השגיאה כדי למצוא את מיקום דיסק המקור (לדוגמה,
us-central1) ואת אזור היעד של ה-snapshot (לדוגמה,us-east1) שהגישה אליו נדחתה. עדכון המדיניות DiskSettings: כדי לפתור את הבעיה, צריך לעדכן את
DiskSettingsכך שמיקום האחסון של הדיסקים באשכול יהיה מותר. כדי לעשות את זה, צריך להוסיף את אזור היעד לרשימת ההיתרים של מיקומי הגישה באמצעות Google Cloud CLI.לדיסק אזורי (לדוגמה, הוספת
us-east1כפי שמותר לדיסקים ב-us-central1-a):gcloud beta compute disk-settings update --access-location-policy=specific-regions --add-access-locations=us-east1 --zone=us-central1-aלדוגמה, כדי להוסיף דיסק אזורי (למשל, הוספת
us-east1כערך מותר לדיסקים ב-us-central1):gcloud beta compute disk-settings update --access-location-policy=specific-regions --add-access-locations=us-east1 --region=us-central1
בדיקה מחדש של פעולת הגיבוי: אחרי עדכון
DiskSettingsכדי לאפשר את אזור הגיבוי של היעד, מנסים שוב את פעולת הגיבוי.
שגיאה 100020101: הגיבוי של PersistentVolumeClaim נכשל – PersistentVolumeClaim קשור לסוג PersistentVolume שלא נתמך
השגיאה 100020101 מתרחשת כשניסיון לגבות PersistentVolumeClaim נכשל כי PersistentVolumeClaim מקושר לסוג PersistentVolume שלא נתמך. השגיאה מובילה להודעת השגיאה הבאה:
PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.
השגיאה הזו מתרחשת כשפעולת הגיבוי ל-GKE נתקלת ב-PersistentVolumeClaim שקשור ל-PersistentVolume שמשתמש בסוג נפח אחסון שלא נתמך לגיבוי נתונים על ידי הגיבוי ל-GKE. השירות "גיבוי ל-GKE" תומך בעיקר בגיבוי נתונים מנפחים של Persistent Disk. אם PersistentVolumeClaim מקושר ל-PersistentVolume שהוא לא Persistent Disk, פעולת הגיבוי של הנתונים של PersistentVolumeClaim נכשלת.
כדי לפתור את השגיאה, פועלים לפי הוראות פתרון הבעיות הבאות:
מריצים את הפקודה
kubectl get pvcכדי לראות את כלPersistentVolumeClaimsואת כלPersistentVolumesשמקושרים אליהם. כדאי לעיין ברשימה הזו כדי לזהות אתPersistentVolumesשמגובים על ידי סוגי נפח אחסון שלא נתמכים.kubectl get pvc --all-namespaces -o wideכדי לקבוע את סוג הנפח של
PersistentVolumeשמגובה על ידי סוג נפח שלא נתמך בגיבוי ל-GKE, מריצים את הפקודהkubectl describe pv:kubectl describe pv PERSISTENT_VOLUME_NAMEמחליפים את מה שכתוב בשדות הבאים:
PERSISTENT_VOLUME_NAME: השם שלPersistentVolumeשסוג הנפח שלו לא נתמך, שמופיע בעמודהVOLUMEבפלט מהשלב הקודם.בפלט, משתמשים בשדות
Sourceו-Driverכדי לקבל פרטים על הקצאת נפח האחסון:בדיסקים Persistent Disk נתמכים: הפלט נראה כמו
Source.Driver: pd.csi.storage.gke.ioאוSource.Type:GCEPersistentDisk.לסוגים לא נתמכים שגורמים לשגיאה: הפלט יהיה מנהל התקנים של דיסק אחסון מתמיד (persistent disk) לא קבוע, לדוגמה,
Source.Driver:filestore.csi.storage.gke.io.
כדי לפתור את השגיאה, אפשר להשתמש באחת מהשיטות הבאות:
מעבר לנפח Persistent Disk: אנחנו ממליצים על השיטה הזו לגיבוי מלא של הנתונים. אם אתם צריכים לגבות את הנתונים בפועל של אמצעי האחסון, אתם צריכים להשתמש ב-Persistent Disk. לשם כך, תצטרכו להעביר את הנתונים מסוג אמצעי האחסון שלא נתמך לאמצעי אחסון חדש של CSI ב-Persistent Disk. לקבלת עזרה בהעברת נפח של Persistent Disk, פנו אל Cloud Customer Care.
הפעלת מצב הרשאה בגיבוי ל-GKE: אנחנו ממליצים על השיטה הזו אם לא נדרש גיבוי נתונים לנפחי אחסון לא נתמכים. אם העברת הנתונים לא אפשרית או לא נחוצה – למשל, אם עוצמת הקול מגובה על ידי שירות חיצוני ואתם מתכננים לצרף אותה מחדש במהלך פעולת השחזור – אתם יכולים להגדיר את תוכנית הגיבוי שלכם ב-Backup for GKE כך שהגיבוי ימשיך במצב מתירני. מידע נוסף על הפעלת מצב מתירני זמין במאמר הפעלת מצב מתירני בתוכנית גיבוי.
מנסים שוב לבצע את הפעולה של הגיבוי ל-GKE. בהתאם לשיטה שבחרתם כדי לפתור את השגיאה, הפעולה של "גיבוי ל-GKE" מתנהגת בדרכים הבאות:
אם ביצעתם מיגרציה לנפח של Persistent Disk, הגיבוי של הנפח, כולל הנתונים שלו, אמור להצליח.
אם הפעלתם את המצב המתירני, פעולת הגיבוי אמורה להצליח, אבל הנתונים של אמצעי האחסון שלא נתמכים לא יגובו.
אם הפעולה ממשיכה להיכשל, אפשר לפנות אל Cloud Customer Care לקבלת עזרה נוספת.
שגיאה 100020104: הגיבוי של PersistentVolumeClaim נכשל – PersistentVolumeClaim לא קשור ל-PersistentVolume
השגיאה 100020104 מתרחשת כשניסיון לגבות PersistentVolumeClaim נכשל כי PersistentVolumeClaim לא מקושר ל-PersistentVolume. השגיאה מובילה להודעת השגיאה הבאה: Failed to backup PVC - PVC Not Bound to a Persistent Volume.
השגיאה הזו מתרחשת כשפעולת הגיבוי של Backup for GKE מנסה לגבות PersistentVolumeClaim שלא נקשר בהצלחה ל-PersistentVolume.
לפני שעומס עבודה (workload) צורך, כמו Pod, יכול להשתמש ב-PersistentVolumeClaim, צריך לקשר אותו ל-PersistentVolume. לאחר מכן, אפשר לגבות אותו באמצעות Backup for GKE. אם PersistentVolumeClaim נשאר במצב Pending, סימן שאין PersistentVolume מתאים זמין או שאי אפשר להקצות או לקשר אותו, ולכן פעולת הגיבוי נכשלת. סיבה נפוצה לכך ש-PersistentVolumeClaim נשאר לא מאוגד היא כש-StorageClass המשויך משתמש במצב איגוד WaitForFirstConsumer, אבל אף Pod או עומס עבודה אחר עדיין לא מנסה לצרוך את PersistentVolumeClaim.
כדי לפתור את השגיאה, צריך לפעול לפי ההוראות הבאות:
כדי לבדוק את הסטטוס של כל
PersistentVolumeClaimsבאשכול ולזהות אתPersistentVolumeClaimשלא קשור, מריצים את הפקודהkubectl get pvc:kubectl get pvc --all-namespaces | grep `Pending`אחרי שמזהים את
PersistentVolumeClaimשלא משויך ל-PersistentVolume, מריצים את הפקודהkubectl describe pvcכדי לאחזר מידע עלPersistentVolumeClaimשלא משויך:kubectl describe pvc PVC_NAME -n NAMESPACE_NAMEמחליפים את מה שכתוב בשדות הבאים:
PVC_NAME: השם שלPersistentVolumeClaimשנכשל בגיבוי.
NAMESPACE_NAME: השם של מרחב השמות שבו נמצאPersistentVolumeClaim.
אחרי שהתיאור מופיע, משתמשים בשדות
Statusו-Eventsכדי לקבוע אםPersistentVolumeClaimקשור ל-PersistentVolume. אם אתם עדיין לא מצליחים להבין למה ה-PersistentVolumeClaimלא מקושר ל-PersistentVolume, או אם אתם לא מצליחים לפתור את הבעיה שזוהתה, אתם יכולים להפעיל מצב מתירני בתוכנית הגיבוי. מידע נוסף על הפעלת מצב הרשאה זמנית זמין במאמר בנושא הפעלת מצב הרשאה זמנית בתוכנית גיבוי.