הקצאת משאבים לשדרוג הצמתים

בדף הזה מוסבר איך לוודא שאפשר להשתמש באסטרטגיות לשדרוג צמתים כדי לבצע שינויים בצמתים של האשכול. מומלץ לבדוק אם יש בפרויקט מספיק משאבים כדי לעדכן את מאגרי הצמתים הרגילים של Google Kubernetes Engine (GKE), בהתאם לאסטרטגיה שבחרתם.

משאבים שנדרשים לשדרוג צמתים

יכול להיות ששדרוגי צמתים ידרשו מ-GKE ליצור באופן זמני צמתים נוספים, בהתאם לאסטרטגיית הצמתים ולהגדרות שבחרתם. לכן, יכול להיות ש-GKE ידרוש משאבים נוספים כדי לשדרג את מאגר הצמתים.

כל הצמתים שנוצרים על ידי GKE, כולל צמתים שמשמשים לשדרוגים, כפופים למכסת המשאבים של הפרויקט, לזמינות המשאבים ולקיבולת ההזמנות, למאגרי צמתים עם התאמה ספציפית להזמנה.

אם יש לכם דרישות מיוחדות לגבי סוג המכונה ומגבלות קיבולת, מומלץ מאוד לוודא שיש לכם מספיק משאבים. יכול להיות שתצטרכו להגדיר אסטרטגיה שדורשת פחות משאבים כדי לוודא שתוכלו לשדרג את הצמתים, או לבצע פעולה אחרת כמו יצירת הזמנה. מידע נוסף זמין במאמר שדרוג בסביבה עם משאבים מוגבלים.

המשאבים שנדרשים לאסטרטגיות שדרוג שונות

בקטעים הבאים מתוארים המשאבים הנוספים שנדרשים כדי להשתמש באסטרטגיות השדרוג הזמינות. אם נתקלתם בבעיות בשדרוג, בדקו את פעולות השדרוג ופעלו לפי ההוראות כדי לפתור את השגיאות בשדרוג.

מקורות מידע על שדרוגי מתח

שדרוגים מהירים הם אסטרטגיית שדרוג הצמתים שמוגדרת כברירת מחדל. בשדרוגים מתפרצים נוצרות מכונות וירטואליות נוספות (אם הערך של maxSurge גדול מאפס) לפני ניקוז ומחיקה של צמתים ישנים, ולכן השדרוגים עלולים להיכשל אם אין מספיק משאבים בפרויקט.

אם המשאבים הזמינים קטנים ממספר הצמתים שצוינו ב-maxSurge, מספר השדרוגים במקביל קטן מ-maxSurge ועוד maxUnavailable. אם אין לכם קיבולת נוספת, תוכלו לקרוא איך לשדרג בסביבה עם משאבים מוגבלים.

בטבלה הבאה מפורטות דוגמאות שממחישות התנהגויות שונות של שדרוג:

עדכון ההגדרות מספר הצמתים הנוספים שמותרים לפי המשאבים הזמינים תוצאה
maxSurge: 5 maxUnavailable: 0 5 משדרג 5 צמתים במקביל.
maxSurge: 5 maxUnavailable: 0 2 משדרג רק 2 צמתים במקביל.
maxSurge: 5 maxUnavailable: 0 0 השדרוג נכשל, כי אי אפשר להעלות צמתים נוספים, והגדרות השדרוג אוסרות על הפעלה מחדש של צמתים קיימים. ‫GKE ממשיך לנסות לשדרג באופן אוטומטי עד שהפעולה מצליחה.
maxSurge: 5 maxUnavailable: 1 5 משדרג 6 צמתים במקביל, ומוודא שמאגר הצמתים מאבד באופן זמני רק צומת אחד בגלל השדרוג.
maxSurge: 5 maxUnavailable: 1 2 השדרוג מתבצע רק ב-3 צמתים במקביל, תוך הקפדה על כך שבמאגר הצמתים לא יחסר יותר מצומת אחד בגלל השדרוג.
maxSurge: 5 maxUnavailable: 1 0 השדרוגים מתבצעים רק בצומת אחד בכל פעם, על ידי יצירה מחדש של כל צומת באמצעות שיטת שדרוג מתגלגל.

מקורות מידע על שדרוגים כחול-ירוק

שדרוגים מסוג blue-green מכפילים באופן זמני את מספר הצמתים במאגר הצמתים, כלומר מאגר הצמתים צריך באופן זמני כמות כפולה של משאבים. אם אין לכם מספיק משאבים זמינים והגדרתם את מאגר הצמתים לשימוש באסטרטגיה הזו, הגדירו שדרוגי מתח במקום זאת אם אתם צריכים לבטל את החסימה של השדרוגים. כשמגדירים את האסטרטגיה הזו, חשוב להגדיר פרמטרים לשדרוג מהיר שיפעלו עם המשאבים הזמינים לצמתים של מאגר הצמתים. מידע נוסף זמין בקטע הקודם, משאבים לשדרוגים מתפרצים.

בדיקת פעולות השדרוג כדי לאתר כשלים שקשורים למשאבים

אפשר למצוא מידע נוסף על פעולות השדרוג, וגם מידע על שדרוגים שנכשלו והסיבות לכך, על ידי בדיקת אובייקטים של פעולות השדרוג. כדי להציג את האובייקטים של פעולת השדרוג, מריצים את הפקודה הבאה:

gcloud container operations list \
    --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/PROJECT_ID/zones/COMPUTE_ZONE/clusters/CLUSTER_NAME"

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

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • COMPUTE_ZONE: האזור של האשכול ב-Compute Engine.
  • ‫CLUSTER_NAME: השם של האשכול.

אם השדרוג האחרון נכשל בגלל מכסת משאבים לא מספיקה, הפלט יהיה דומה לזה:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Insufficient quota to satisfy the request: waiting on IG: instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt errors: [QUOTA_EXCEEDED] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 50.0 in region us-central1.\
...

אם הסיבה היא שאין מספיק מקום שמור, הפלט דומה לזה:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Reservation does not have enough resources for the request: waiting on IG:\
  \ instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt error: [CONDITION_NOT_MET] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Specified reservation 'foo' does not have available resources\
  \ for the request."

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

פתרון שגיאות בשדרוג

אם השדרוג נכשל בגלל מחסור במשאבים, נסו את השלבים הבאים:

  1. מומלץ לשקול אסטרטגיית שדרוג שדורשת פחות משאבים. אם אתם משתמשים בשדרוגים מסוג blue-green, כדאי לשקול שדרוגים מסוג surge.
  2. בודקים אם יש בפרויקט משאבים של Compute Engine שצורכים משאבים ושכבר לא צריך אותם. אם יש כאלה, צריך להסיר אותם ולנסות שוב לשדרג.
  3. אם שני השלבים הראשונים לא פותרים את הבעיה, בקשו להגדיל את המכסה או הגדילו את ההזמנה הספציפית.
  4. אם אתם פועלים בסביבה עם מגבלות משאבים, למשל דרישות מיוחדות לסוגי מכונות ומגבלות קיבולת, עיינו בקטע הבא כדי לבטל את החסימה של השדרוגים.

שדרוג בסביבה עם משאבים מוגבלים

אם ל- Google Cloud יש קיבולת מוגבלת למשאב ספציפי שמאגר הצמתים שלכם משתמש בו, אנחנו ממליצים להשתמש בהזמנה עבור מעבדי GPU ו-TPU. במאגרי צמתים שמכילים רק מעבדים, מומלץ לשדרג את המעבדים באמצעות קיבולת קבועה.

שתי האסטרטגיות האלה יכולות לעזור לכם לוודא שיש לכם מספיק משאבים כדי לבצע שדרוג גרסה. אם אין לכם מספיק משאבים, יכול להיות שלא תוכלו לשדרג את הצמתים עד שתהיה לכם גישה ליכולת נוספת.

אם אין לכם קיבולת נוספת, אתם לא יכולים להשתמש בשדרוגים כחולים-ירוקים.

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

בהמשך מפורטות הנחיות שונות בהתאם לשאלה אם יש לכם הזמנה של מאגר הצמתים שצריך לשדרג.

שדרוג עם קיבולת קבועה

כדי לשדרג מעבדים בסביבה עם משאבים מוגבלים, צריך להשתמש בקיבולת קבועה. כדי לעשות את זה, משתמשים בשדרוגים זמניים ומגדירים את maxUnavailable לערך שגדול מאפס. פרטים נוספים זמינים במאמר maxUnavailable: GKE makes an existing node unavailable to recreate it.

שדרוג באמצעות קיבולת קבועה מאפשר לבצע שדרוגים כשאי אפשר לקבל קיבולת נוספת, ועוזר למנוע אובדן של קיבולת קיימת במהלך השדרוג.

שדרוג עם קיבולת מוגבלת באמצעות הזמנה

כדי לשדרג GPUs ו-TPUs בסביבה עם מגבלות קיבולת, משתמשים בהזמנה ומתאימים את הגדרות השדרוג המהיר כדי לשפר את המהירות והאמינות.

אם יש לכם קיבולת נוספת בהזמנה, אתם יכולים להשתמש ב-maxSurge כדי ליצור צומתי עלייה חדה. מגדירים את maxSurge בהתאם למספר הצמתים שרוצים לשבש בו-זמנית, ולקיבולת הנוספת שיש לכם. לדוגמה, מגדירים את הערך maxSurge=1;maxUnavailable=0 אם רוצים לשבש רק צומת אחד בכל פעם, או אם יש קיבולת ליצור רק צומת אחד נוסף.

אם אין לכם קיבולת נוספת, אתם יכולים להשתמש ב-maxUnavailable עם הגדרה כמו maxSurge=0;maxUnavailable=1, כי הקיבולת שמורה. ההגדרה הזו משבשת צומת אחד בכל פעם, ויוצרת מחדש את הצומת כדי לעדכן אותו. אנחנו ממליצים על הגישה הזו כדי לבצע תחזוקה של מארחים לצמתים שמריצים עומסי עבודה של אימון והסקת מסקנות.

המאמרים הבאים