שדרוגים רגילים של אשכולות

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

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

איך עובדים שדרוגים של אשכולות ושל מאגרי צמתים

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

כדי לשדרג אשכול, GKE מעדכן את הגרסה שמופעלת ברמת הבקרה ובצמתים. השדרוג של האשכולות מתבצע לגרסת משנה חדשה יותר (לדוגמה, מ-1.24 ל-1.25) או לגרסה חדשה יותר עם תיקון (לדוגמה, מ-1.24.2-gke.100 ל-1.24.5-gke.200). מידע נוסף זמין במאמר גרסאות ותמיכה ב-GKE.

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

שדרוגי אשכולות

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

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

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

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

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

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

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

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

  • שדרוגים של Surge
  • שדרוגים כחול-ירוק
  • שדרוגים כחול-ירוק עם התאמה אוטומטית לעומס (טרום השקה)

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

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

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

איך הצמתים משודרגים

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

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

  1. הצומת מבודד כדי שמערכת Kubernetes לא תתזמן בו קבוצות Pod חדשות.
  2. לאחר מכן, הצומת מתרוקן, כלומר ה-Pods מוסרים. במקרה של שדרוגים מהירים, GKE מכבד את ההגדרות של PodDisruptionBudget ושל GracefulTerminationPeriod של ה-Pod למשך שעה אחת לכל היותר. בשדרוגים מסוג כחול-ירוק, אפשר להאריך את הזמן הזה אם מגדירים זמן המתנה ארוך יותר.
  3. מישור הבקרה מתזמן מחדש את ה-Pods שמנוהלים על ידי בקרים בצמתים אחרים. פודים שלא ניתן לתזמן מחדש נשארים בשלב ההמתנה עד שניתן לתזמן אותם מחדש.

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

שיקולים שמשפיעים על משך השדרוג של הצומת

הגדרות שיכולות לגרום לשדרוג של צומת להימשך זמן רב יותר:

אסטרטגיות לשדרוג צמתים

ב-GKE יש שיטות מובנות וניתנות להגדרה שקובעות איך לשדרג את מאגר הצמתים. מידע נוסף על סוגי שינויים שמשתמשים באסטרטגיית שדרוג של צומת זמין במאמרים הבאים:

שדרוגים של Surge

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

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

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

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

שדרוגים אוטומטיים של כחול-ירוק

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

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

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

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

שדרוג אוטומטי

כשיוצרים אשכול רגיל, שדרוג אוטומטי מופעל כברירת מחדל באשכול ובמאגרי הצמתים שלו.

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

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

כדי לשמור על תאימות ל-Cluster API, הגרסה של מאגרי הצמתים באשכול לא יכולה להיות ישנה יותר משתי גרסאות משניות מהגרסה של מישור הבקרה. הגרסה של מאגר הצמתים קובעת גם את הגרסאות של חבילות התוכנה שמותקנות בכל צומת. מומלץ לעדכן את מאגרי הצמתים לגרסת האשכול.

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

איך נבחרות גרסאות לשדרוג אוטומטי

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

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

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

בגרסה משנית (כמו v1.14.x), אפשר לשדרג את האשכולות אוטומטית לגרסת תיקון חדשה.

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

גורמים שמשפיעים על התזמון של השקת הגרסה

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

השיטות האלה כוללות, בין היתר:

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

הגדרת המועד שבו אפשר לבצע שדרוגים אוטומטיים

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

שדרוג ידני

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

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

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

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

אפשר להתחיל שדרוג של הצומת באופן ידני לגרסה שתואמת למישור הבקרה.

איך GKE מגיב לכשל בשדרוג אוטומטי

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

  • ההגדרה maxSurge חורגת מהמיכסה של משאבי Compute Engine.
  • צמתים חדשים של תנועה לא נרשמו ברמת הבקרה של האשכול.
  • היה צורך בזמן רב מדי כדי להוציא את הצמתים משימוש או למחוק אותם.

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

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

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

‫GKE מפרסם ב-Pub/Sub הודעות על אירועים שרלוונטיים לאשכול, כמו שדרוגי גרסה ועדכוני אבטחה. כך אתם מקבלים ערוץ לקבלת מידע מ-GKE על האשכולות שלכם.

מידע נוסף זמין במאמר בנושא קבלת התראות על אשכולות.

בדיקת יומני שדרוג

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

יומני שדרוג של מישור הבקרה

אפשר להריץ שאילתות על אירועי שדרוג של אשכולות באמצעות המסנן הבא:

resource.type="gke_cluster"
protoPayload.metadata.operationType=~"(UPDATE_CLUSTER|UPGRADE_MASTER)"
resource.labels.cluster_name="CLUSTER_NAME"

היומנים האלה מתועדים בפורמטים של יומנים מובנים. אפשר להשתמש בשדות הבאים כדי לראות את הפרטים של אירועי השדרוג:

שדה תיאור
protoPayload.metadata.operationType

יש שני סוגים של אירועי שדרוג של אשכולות:

  • UPGRADE_MASTER: שדרוג לגרסת מישור הבקרה של Kubernetes.
  • UPDATE_CLUSTER: עדכון שלא משנה את גרסת מישור הבקרה של Kubernetes.

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

protoPayload.methodName

בשדה הזה מוצג ה-API שהפעיל את שדרוג האשכול.

protoPayload.metadata.previousMasterVersion השדה הזה משמש רק לסוג הפעולה MASTER_UPGRADE, והוא מכיל את הגרסה הקודמת של מישור הבקרה שנעשה בה שימוש לפני השדרוג.
protoPayload.metadata.currentMasterVersion השדה הזה משמש רק לסוג הפעולה MASTER_UPGRADE, והוא מכיל את מספר הגרסה החדש של מישור הבקרה שמשמש אחרי השדרוג.

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

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

resource.type="gke_nodepool"
protoPayload.metadata.operationType="UPGRADE_NODES"
resource.labels.cluster_name="CLUSTER_NAME"

בשדה הבא אפשר להוסיף פרטים על אירוע השדרוג:

בשדה protoPayload.methodName מוצג אם השדרוג הופעל באופן ידני או באופן אוטומטי, באופן הבא.

שדרוגי רכיבים

מערכת GKE מריצה עומסי עבודה (workloads) בצמתי עובדים כדי לתמוך ביכולות ספציפיות של אשכולות. לדוגמה, עומס העבודה של מערכת gke-metadata-server תומך באיחוד שירותי אימות הזהות של עומסי עבודה ב-GKE. ‫GKE אחראי לתקינות של עומסי העבודה האלה. לקבלת מידע נוסף על הרכיבים האלה, אפשר לעיין במסמכי התיעוד של היכולות המשויכות.

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

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