כשמנסים לשנות את אשכול Google Kubernetes Engine (GKE) או את מאגרי הצמתים שלו, יכול להיות שהפעולה תיחסם באופן זמני כי פעולה אחרת פועלת. הבעיה הזו עלולה לגרום לעיכובים בעדכונים קריטיים, בניהול אשכולות ובפריסות של אפליקציות.
בדף הזה מוסבר איך לזהות את הפעולה שמופעלת. הבנת הפעולה הפעילה עוזרת להעריך את העיכוב ולקבוע מתי לנסות שוב לבצע את הפעולה.
המידע הזה חשוב למפתחי אפליקציות, שעשויים להיתקל במגבלות האלה כשהם פורסים או משנים אפליקציות, ולאדמינים ומפעילים של פלטפורמות, שמנהלים את מחזור החיים הכולל של האשכול, שדרוגים ופתרון בעיות של משימות אדמיניסטרטיביות חסומות. מידע נוסף על התפקידים הנפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בGoogle Cloud תוכן, זמין במאמר תפקידי משתמשים נפוצים ומשימות ב-GKE.
הסבר על שגיאות שקשורות לפעולות מקבילות
ב-GKE, פעולת אשכול היא פעולה שמשנה את המצב של מישור הבקרה של האשכול או של מאגרי הצמתים שלו. הפעולות האלה מנוהלות על ידי GKE, ואתם או GKE יכולים ליזום אותן לצורכי תחזוקה. דוגמאות לפעולות נפוצות באשכול:
- יצירה או מחיקה של האשכול.
- שדרוג הגרסה של רמת הבקרה של האשכול.
- יצירה, עדכון, שינוי גודל או מחיקה של מאגרי צמתים.
- שינוי הגדרות ברמת האשכול, כמו הפעלה או השבתה של תכונות.
- תיקונים אוטומטיים במישור הבקרה שמופעלים על ידי GKE.
כשמבצעים פעולות באשכולות, יכול להיות שיוצגו הודעות שגיאה כמו אלה:
Cluster is running incompatible operation OPERATION_NAME
Cluster is currently being created, deleted, updated or repaired and cannot be updated
Operation OPERATION_NAME is currently ACTIONING cluster CLUSTER_NAME. Please wait and try again once it is done
השגיאות האלה יכולות לכלול את הערכים הבאים:
-
OPERATION_NAME: המזהה הייחודי של פעולה שכבר פועלת באשכול. השתמשו בשם הזה כדי לעקוב אחרי הסטטוס של הפעולה הקיימת שמונעת מהפעולה החדשה להתחיל. -
ACTIONING: הפעולה שמבוצעת באשכול. לדוגמה,CreatingאוUpdating. -
CLUSTER_NAME: שם האשכול שהפעולה מכוונת אליו.
השגיאות האלה מתרחשות כי GKE מגביל את מספר הפעולות שיכולות לפעול בו-זמנית כדי למנוע התנגשויות. באופן כללי, ב-GKE מותר להריץ רק פעולה אחת ברמת האשכול או פעולה אחת לכל מאגר צמתים בו-זמנית. ב-GKE מתבצעות גם פעולות אוטומטיות משלו, כמו שדרוגים של מישור הבקרה, שנכללות במגבלה הזו ויכולות למנוע ממכם באופן זמני להתחיל משימה חדשה.
פתרון שגיאות של פעולות בו-זמניות
אם מופיעה הודעת שגיאה שמציינת שמתבצעת פעולה אחרת, צריך לזהות את המשימה שמתבצעת ולהמתין עד שהיא תסתיים:
אם אתם לא יודעים את השם של פעולת החסימה, אתם יכולים להציג רשימה של כל הפעולות שמתבצעות וממתינות באשכול:
gcloud container operations list \ --location=LOCATION \ --filter '(targetLink~/clusters/CLUSTER_NAME$ OR targetLink~/clusters/CLUSTER_NAME/) AND status!=DONE' \ --format jsonמחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: האזור או התחום של Compute Engine (לדוגמה,us-central1אוus-central1-a) של האשכול, בהתאם לסוג האשכול (אזורי או של תחום מוגדר).
CLUSTER_NAME: השם של האשכול עם הפעולה שנכשלה.הפלט אמור להיראות כך:
{ "name": "operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff", "operationType": "UPDATE_CLUSTER", "selfLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff", "startTime": "2001-01-01T00:00:00.000000000Z", "status": "RUNNING", "targetLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME", "zone": "LOCATION" }בודקים את השדה
nameבכל פעולה בפלט. הערך הזה הוא השם של הפעולה שמונעת את התחלת הפעולה החדשה. תצטרכו את הערך הזה בשלב הבא.מידע נוסף על השדות האחרים בפלט מופיע במסמכי העזרה בנושא ממשק ה-API של
projects.locations.operations.
-
ממתינים לסיום הפעולה:
gcloud container operations wait OPERATION_NAME \ --location=LOCATIONמחליפים את
OPERATION_NAMEבשם של פעולה חוסמת מהודעת שגיאה או מהשלב הקודם.הפקודה הזו עוקבת באופן פעיל אחרי הפעולה ויוצאת כשהפעולה מסתיימת.
אחרי שסטטוס פעולת החסימה יהיה
DONE, נסו שוב לבצע את הפעולה שגרמה לשגיאה.
המאמרים הבאים
אם לא מצאתם פתרון לבעיה שלכם במסמכים, תוכלו להיעזר בקבלת תמיכה, כולל עצות בנושאים הבאים:
- פתיחת בקשת תמיכה באמצעות פנייה אל Cloud Customer Care.
- קבלת תמיכה מהקהילה על ידי פרסום שאלות ב-StackOverflow ושימוש בתג
google-kubernetes-engineכדי לחפש בעיות דומות. אפשר גם להצטרף לערוץ Slack#kubernetes-engineכדי לקבל תמיכה נוספת מהקהילה. - פתיחת באגים או בקשות להוספת תכונות באמצעות הכלי הציבורי למעקב אחר בעיות.