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

בדף הזה מוסבר איך להגדיר שדרוגים אוטומטיים של צמתים ב-Google Kubernetes Engine‏ (GKE).

סקירה כללית

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

מידע נוסף על שדרוגים של אשכולות וצמתים

יש כמה יתרונות לשדרוגים אוטומטיים של צמתים:

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

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

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

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
  • מוודאים שיש לכם אשכול קיים מסוג Standard. כשיוצרים אשכול חדש באמצעות מסוף Google Cloud Google Cloud או פקודת Google Cloud CLI, השדרוג האוטומטי של הצמתים מופעל כברירת מחדל. כדי ליצור אשכול רגיל, אפשר לעיין במאמר בנושא יצירת אשכול אזורי.

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

כדי לבדוק אם השדרוג האוטומטי מופעל או מושבת במאגר צמתים, משתמשים במסוף Google Cloud או בפקודה gcloud.

gcloud

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

gcloud container node-pools describe NODE_POOL_NAME \
  --cluster CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION

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

  • NODE_POOL_NAME: השם של מאגר הצמתים.
  • CLUSTER_NAME: שם האשכול שמכיל את מאגר הצמתים.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

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

management:
  autoUpgrade: true

המסוף

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

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לראות.

  3. לוחצים על הכרטיסייה Nodes.

  4. בקטע Node Pools (מאגרי צמתים), לוחצים על השם של מאגר הצמתים שרוצים להציג.

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

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

כשיוצרים אשכול חדש באמצעות המסוף של Google Cloud Google Cloud או הפקודה gcloud, שדרוג אוטומטי של הצמתים מופעל כברירת מחדל.

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

gcloud

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

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

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

  • NODE_POOL_NAME: השם של מאגר הצמתים.
  • CLUSTER_NAME: שם האשכול שמכיל את מאגר הצמתים.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

המסוף

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

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. לוחצים על הכרטיסייה Nodes.

  4. בקטע Node Pools (מאגרי צמתים), לוחצים על השם של מאגר הצמתים שרוצים לשנות.

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

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

  7. לוחצים על Save.

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

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

אפשר לבדוק את סטטוס השדרוג באמצעות gcloud container operations.

אם יש פחות מ-5,000 פעולות, אפשר לראות רשימה של כל הפעולות שפועלות והפעולות שהושלמו באשכול מ-12 הימים האחרונים, או מ-5,000 הפעולות האחרונות:

gcloud container operations list \
    --location=CONTROL_PLANE_LOCATION

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

NAME                              TYPE                ZONE           TARGET              STATUS_MESSAGE  STATUS  START_TIME                      END_TIME
operation-1505407677851-8039e369  CREATE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT16:47:57.851933021Z  20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4  UPGRADE_CLUSTER     us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:40:05.136739989Z  20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989  DELETE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:41:53.918825764Z  20xx-xx-xxT18:43:48.639506814Z

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

gcloud container operations describe OPERATION_ID \
    --location=CONTROL_PLANE_LOCATION

לדוגמה:

gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a

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

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

אפשר לראות פרטים על אסטרטגיית השדרוג של הצומת שמשמשת את מאגרי הצמתים באמצעות הפקודה gcloud container node-pools describe. בשדרוגים מסוג blue-green, הפקודה מחזירה גם את השלב הנוכחי של השדרוג.

מריצים את הפקודה הבאה:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

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

  • NODE_POOL_NAME: השם של מאגר הצמתים שרוצים לתאר.
  • CLUSTER_NAME: השם של האשכול של מאגר הצמתים שרוצים לתאר.
  • CONTROL_PLANE_LOCATION: המיקום (אזור או אזור זמינות) של מישור הבקרה, למשל us-central1 או us-central1-a.

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

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

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

updateInfo:
  blueGreenInfo:
    blueInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
    bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
    greenInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME} 
    greenPoolVersion: {GREEN_POOL_VERSION}
    phase: DRAINING_BLUE_POOL

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

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

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

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

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

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

השבתה של התכונה משמעותה שהאחריות לתאימות של צמתי מישור הבקרה

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

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

השבתה לא מפסיקה פעולות שמתבצעות כרגע

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

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

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

gcloud

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

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --no-enable-autoupgrade

המסוף

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

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. לוחצים על הכרטיסייה Nodes.

  4. בקטע Node Pools (מאגרי צמתים), לוחצים על השם של מאגר הצמתים שרוצים לשנות.

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

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

  7. לוחצים על שמירה כדי לשנות את האשכול.

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

gcloud

כדי ליצור מאגר צמתים עם שדרוג אוטומטי מופעל, מציינים את הדגל --enable-autoupgrade בפקודה gcloud container node-pools create:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

המסוף

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

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

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

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

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

שינוי פרמטרים של שדרוג מתח

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

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

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

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

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

  1. מקבלים את מזהה הפעולה של השדרוג:

    gcloud container operations list \
          --location=CONTROL_PLANE_LOCATION
    
  2. ביטול השדרוג:

    gcloud container operations cancel OPERATION_ID \
          --location=CONTROL_PLANE_LOCATION
    

אפשר לעיין במסמכי התיעוד של gcloud container operations cancel.

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

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

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

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

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

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME \
  --location=CONTROL_PLANE_LOCATION \
  --cluster-version VERSION

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

  • NODE_POOL_NAME: השם של מאגר הצמתים שרוצים להמשיך את השדרוג שלו.
  • CLUSTER_NAME: שם האשכול של מאגר הצמתים שרוצים להפעיל מחדש את השדרוג שלו.
  • CONTROL_PLANE_LOCATION: המיקום (אזור או אזור זמינות) של מישור הבקרה, למשל us-central1 או us-central1-a.
  • VERSION: גרסת היעד של השדרוג שבוטל של מאגר הצמתים.

מידע נוסף מופיע במאמרי העזרה בנושא gcloud container clusters upgrade.

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

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

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

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

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

gcloud container node-pools rollback NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

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

  • NODE_POOL_NAME: שם מאגר הצמתים שרוצים לבטל את השדרוג שלו.
  • CLUSTER_NAME: שם האשכול של מאגר הצמתים שרוצים לבטל את השדרוג שלו.
  • CONTROL_PLANE_LOCATION: המיקום (אזור או אזור זמינות) של מישור הבקרה, למשל us-central1 או us-central1-a.

אפשר לעיין בgcloud container node-pools rollbackמסמכי התיעוד.

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

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

במאמר השלמת שדרוג של מאגר צמתים מוסבר איך משלימים שדרוג של מאגר צמתים.

כדי להשלים שדרוג כשמשתמשים באסטרטגיית השדרוג blue-green, מריצים את הפקודה הבאה:

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

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

  • NODE_POOL_NAME: השם של מאגר הצמתים שרוצים להשלים את השדרוג שלו.
  • CLUSTER_NAME: שם האשכול של מאגר הצמתים שרוצים להשלים את השדרוג שלו.
  • CONTROL_PLANE_LOCATION: המיקום (אזור או אזור זמינות) של מישור הבקרה, למשל us-central1 או us-central1-a.

אפשר לעיין בgcloud container node-pools complete-upgradeמסמכי התיעוד.

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