שדרוג אשכול

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

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

לפני שממשיכים, מומלץ לעיין במסמכים הבאים:

הבדלים מתקדמים בין אשכולות

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

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

חשוב לשים לב להבדלים הבאים בין הגרסאות:

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

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

    בטבלה הבאה מפורטות הגרסאות של cert-manager שכלולות בכל גרסה של Google Distributed Cloud (תוכנה בלבד) ל-VMware.

    ‫Google Distributed Cloud (תוכנה בלבד) ל-VMware גרסת cert-manager בחבילה
    ‫1.33 1.18
    1.34 1.19
  • אפשר להשאיר אשכול כלא מתקדם רק בשדרוגים מגרסה 1.32 לגרסה 1.33. כשמשדרגים אשכול לא מתקדם מגרסה 1.33 לגרסה 1.34, האשכול תמיד מומר לאשכול מתקדם.

  • כדי לשדרג אשכולות שלא הוגדרו כמתקדמים לגרסה 1.33, צריך להשתמש בכלי שורת הפקודה gkectl. אין תמיכה בלקוחות GKE On-Prem API, ב-Terraform, בGoogle Cloud מסוף וב-CLI של gcloud.

  • מוודאים שגרסת gkectl: גרסת gkectl חייבת להיות זהה לגרסת היעד. לדוגמה, אם משדרגים קלאסטר לא מתקדם בגרסה 1.32 לקלאסטר מתקדם בגרסה 1.33.0-gke.799, הגרסה של gkectl צריכה להיות 1.33.0-gke.799. דרישת הגרסה המחמירה הזו חלה רק במהלך המעבר לאשכול מתקדם. לכל השדרוגים הבאים באשכול המתקדם, חלים הכללים הרגילים של הטיית הגרסה.

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

דרישות

בקטע הזה מפורטים הדרישות שקשורות לגרסה והדרישות לשימוש בלקוחות GKE On-Prem API (מסוף Google Cloud , Google Cloud CLI ו-Terraform) לשדרוגים.

כללי גרסה

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

  • בגרסאות 1.30 ומטה, הגרסה המשנית של אשכול המשתמשים צריכה להיות גדולה או שווה לגרסה המשנית של אשכול האדמין. גרסת התיקון לא משנה. לדוגמה, אם אשכול משתמשים הוא בגרסה 1.30.1, אפשר לשדרג את אשכול האדמין לגרסת תיקון באגים גבוהה יותר, כמו 1.30.3.

  • בגרסאות 1.31 ואילך, גרסת אשכול האדמין, כולל גרסת התיקון, צריכה להיות גדולה או שווה לגרסת אשכול המשתמש. לדוגמה, אם גרסת אשכול האדמין היא 1.31.1, הגרסה הכי גבוהה שאפשר לשדרג אליה את אשכול המשתמש היא 1.31.1.

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

כללי גרסה עבור gkectl

הגרסה של gkectl שבה אפשר להשתמש לשדרוג תלויה בגרסת אשכול היעד (כלומר, גרסת האשכול שאליו משדרגים). בדרך כלל משתמשים באותה גרסה של gkectl כמו גרסת היעד של האשכול. הכללים הבאים נאכפים במהלך השדרוג:

  • גרסה gkectl לא יכולה להיות גרסה משנית נמוכה יותר מגרסת האשכול המשנית של היעד. לדוגמה, אם משדרגים אשכול 1.29 ל-1.30, אי אפשר להשתמש ב-gkectl 1.29 כי הוא נמוך מגרסת אשכול היעד. אין חשיבות לגרסאות התיקון. לדוגמה, אפשר להשתמש בגרסה gkectl ‎1.29.0-gke.1456 כדי לשדרג לגרסת תיקון גבוהה יותר, כמו ‎1.29.1000-gke.94.

  • גרסה gkectl לא יכולה להיות גבוהה ביותר משתי גרסאות משניות מגרסת האשכול הנוכחית. לדוגמה, אם משדרגים אשכול מגרסה 1.28 לגרסה 1.29, גרסת gkectl יכולה להיות 1.29 או 1.30. אבל אי אפשר להשתמש בגרסה gkectl 1.31 כי היא גבוהה בשלוש גרסאות משניות מגרסת האשכול.

  • אם משדרגים את האשכול לאשכול מתקדם, גרסה gkectl חייבת להיות זהה לגרסת היעד. לדוגמה, אם משדרגים אשכול לא מתקדם בגרסה 1.32 לאשכול מתקדם בגרסה 1.33.0-gke.799, הגרסה של gkectl חייבת להיות 1.33.0-gke.799.

    • כברירת מחדל, האשכול שלכם ישודרג לאשכול מתקדם בגרסה 1.33. כלומר, בשדרוגים מגרסה 1.32 לגרסה 1.33, גרסת gkectl צריכה להיות זהה לגרסה המשודרגת.

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

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

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

בגרסה 1.29 ואילך, בדיקות קדם-הפעלה בצד השרת מופעלות כברירת מחדל. בדיקות קדם-הפעלה בצד השרת דורשות כללי חומת אש נוספים. בקטע Firewall rules for admin clusters (כללי חומת אש לאשכולות אדמין), מחפשים את האפשרות Preflight checks (בדיקות לפני המראה) ומוודאים שכל כללי חומת האש הנדרשים מוגדרים.

עם בדיקות קדם-הפעלה בצד השרת, כשמשדרגים אשכול משתמשים באמצעות gkectl, בדיקות קדם-ההפעלה מורצות באשכול האדמין ולא באופן מקומי בתחנת העבודה של האדמין. בנוסף, כשמשתמשים במסוף Google Cloud , ב-Google Cloud CLI או ב-Terraform כדי לשדרג אשכול, מופעלות בדיקות קדם-הפעלה בצד השרת באשכול האדמין.

כשמשדרגים אשכול אדמין, Google Distributed Cloud פורס אשכול Kubernetes in Docker (kind) כדי לארח באופן זמני את בקרי Kubernetes שנדרשים לשדרוג אשכול האדמין. האוסף הזמני הזה נקרא אוסף bootstrap. במהלך שדרוג של אשכול אדמין, מתבצעות בדיקות מקדימות בצד השרת באשכול האתחול.

הפעל את stackdriver

אם יצרתם את אשכול המשתמשים באמצעות gkectl, לפני השדרוג ודאו שהקטע stackdriver בקובץ התצורה של אשכול המשתמשים מלא, כדי להפעיל את stackdriver (שנדרש לרישום ביומן ולמעקב). אם האפשרות stackdriver לא מופעלת, ממלאים את הקטע stackdriver בקובץ ההגדרות של אשכול המשתמשים ומעדכנים את האשכול לפני השדרוג.

אם יצרתם את האשכול באמצעות Terraform,‏ Google Cloud מסוף Google Cloud או ה-CLI של gcloud,‏ stackdriverמופעל באופן אוטומטי.

הפעלת Dataplane V2

החל מגרסה 1.31, חובה להפעיל את Dataplane V2 בכל אשכולות המשתמשים. לפני שמשדרגים אשכול משתמשים לגרסה 1.31, צריך לבצע את השלבים הבאים. אם יש לכם חששות לגבי הסרה זמנית של מפרט NetworkPolicy, תוכלו לפנות לתמיכה של Google.

מגדירים את enableDataplaneV2 ל-true בקובץ התצורה של אשכול המשתמשים.

אם האשכול שלכם משתמש ב-NetworkPolicy, צריך להסיר זמנית את המפרט שלו מהאשכול, באופן הבא:

  1. בודקים אם יש NetworkPolicy לא מערכתי שמוחל על האשכול:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get networkpolicy -A -o wide | grep -v kube-system
    
  2. אם הפלט של השלב הקודם לא היה ריק, שומרים כל NetworkPolicy מפרט בקובץ כדי שאפשר יהיה להחיל מחדש את המפרט אחרי שדרוג האשכול.

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get networkpolicy NETWORK_POLICY_NAME -n NETWORK_POLICY_NAMESPACE -o yaml > NETWORK_POLICY_NAME.yaml
    

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

    • NETWORK_POLICY_NAME: השם של NetworkPolicy שאתם שומרים.
    • NETWORK_POLICY_NAMESPACE: מרחב השמות של NetworkPolicy.
  3. מוחקים את NetworkPolicy באמצעות הפקודה הבאה:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG delete networkpolicy NETWORK_POLICY_NAME -n NETWORK_POLICY_NAMESPACE
    
  4. ממשיכים בשדרוג.

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

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG apply -f NETWORK_POLICY_NAME.yaml
    

הדרישות של Google API ו-IAM

כדי לשדרג אשכול לגרסה 1.28 ואילך, צריך להפעיל את kubernetesmetadata.googleapis.com ולהקצות את תפקיד ה-IAM‏ kubernetesmetadata.publisher לחשבון השירות של שירות הרישום ביומן והמעקב. השינויים האלה נדרשים כדי להשתמש ב-Cloud Monitoring.

  1. הפעלה של kubernetesmetadata.googleapis.com:

    gcloud services enable --project PROJECT_ID  \
        kubernetesmetadata.googleapis.com
    

    מחליפים את PROJECT_ID במזהה של פרויקט המארח של ה-Fleet שהמשתמש הוא חבר בו. זה הפרויקט שציינתם כשנוצר האשכול. אם יצרתם את האשכול באמצעות gkectl, זהו מזהה הפרויקט בשדה gkeConnect.projectID בקובץ התצורה של האשכול.

  2. אם הארגון שלכם הגדיר רשימת היתרים שמאפשרת לתנועה מממשקי Google API ומכתובות אחרות לעבור דרך שרת ה-Proxy, צריך להוסיף את kubernetesmetadata.googleapis.com לרשימת ההיתרים.

  3. מקצים את התפקיד kubernetesmetadata.publisher לחשבון השירות של שירות הרישום והמעקב:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role "roles/kubernetesmetadata.publisher"
    

    מחליפים את SERVICE_ACCOUNT_EMAIL בכתובת האימייל של חשבון השירות של שירות הרישום והמעקב.

תכונות מדור קודם שנחסמות בשדרוגים

התכונות הבאות מהגרסה הקודמת חסומות במהלך שדרוג האשכול לגרסה 1.32:

  • Dataplane V1 (Calico)
  • הגדרת מאזן עומסים משולב של F5 Big IP
  • אשכול אדמין ללא זמינות גבוהה
  • אשכול משתמש Kubeception
  • מאזן עומסים של Seesaw

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

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

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

אם אתם רוצים להשתמש במסוף, ב-Google Cloud CLI או ב-Terraform כדי לשדרג אשכול משתמשים, ואתם לא בעלי הפרויקט, אתם צריכים לקבל את תפקיד ניהול הזהויות והגישה (IAM) roles/gkeonprem.admin בפרויקט שבו נוצר האשכול Google Cloud . Google Cloud במאמר תפקידים ב-GKE on-prem שבמסמכי ה-IAM מפורטות ההרשאות שכלולות בתפקיד הזה.

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

  • roles/container.viewer. התפקיד הזה מאפשר למשתמשים לצפות בדף GKE Clusters ובמשאבי קונטיינרים אחרים במסוף. במאמר תפקידים ב-Kubernetes Engine במסמכי ה-IAM מפורטות ההרשאות שכלולות בתפקיד הזה, ומוסבר איך להעניק תפקיד עם הרשאות קריאה וכתיבה.

  • roles/gkehub.viewer. התפקיד הזה מאפשר למשתמשים לצפות באשכולות במסוף. פרטים על ההרשאות שכלולות בתפקיד הזה או על הענקת תפקיד עם הרשאות קריאה/כתיבה זמינים במאמר תפקידים ב-GKE Hub במאמרי העזרה בנושא IAM.

מגבלות בשימוש באשכולות מתקדמים

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

  • כשמשדרגים אשכולות מגרסה 1.32 לגרסה 1.33, צריך להשתמש ב-gkectl. אין תמיכה בלקוחות GKE On-Prem API (המסוף, ה-CLI של gcloud ו-Terraform) בנתיב השדרוג הספציפי הזה, אבל יש תמיכה בשדרוגים החל מגרסה 1.33.

  • יש תמיכה רק בשדרוגים סינכרוניים.

ביצוע שינויים בהגדרות לפני או אחרי שדרוג

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

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

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

gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG

מחליפים את ADMIN_CLUSTER_KUBECONFIG בנתיב לקובץ kubeconfig של אשכול האדמין.

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

אם אתם מתכננים להשתמש במסוף, ב-CLI של gcloud או ב-Terraform לשדרוג, הגרסה תהיה זמינה ב-API של GKE On-Prem בכל האזורים של Google Cloud כ-7 עד 14 ימים אחרי ההשקה. במסוף מוצגות רק הגרסאות שזמינות לשדרוג של אשכול המשתמשים. השלבים לשדרוג אשכול משתמשים באמצעות ה-CLI של gcloud או Terraform כוללים שלב להפעלת הפקודה gcloud container vmware clusters query-version-config כדי לקבל את הגרסאות שזמינות לשדרוג.

שדרוג תחנת העבודה של האדמין

אופן השדרוג של תחנת העבודה של האדמין תלוי באופן שבו היא נוצרה: gkeadm או user-managed.

gkeadm

איתור הקבצים הנדרשים

לפני שיצרתם את תחנת העבודה לאדמין, מילאתם קובץ תצורה של תחנת העבודה לאדמין שנוצר על ידי gkeadm create config. שם ברירת המחדל של הקובץ הוא admin-ws-config.yaml.

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

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

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

שדרוג

כדי לשדרג את תחנת העבודה של האדמין:

  1. בודקים את השדה adminWorkstation.diskGB בקובץ התצורה של תחנת העבודה לאדמין ומוודאים שהגודל שצוין הוא לפחות 100, לדוגמה:

    adminWorkstation:
      diskGB: 100
    

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

  2. בשרת הקפיצה, מורידים את gkeadm:

    gkeadm upgrade gkeadm --target-version TARGET_VERSION
    

    מחליפים את TARGET_VERSION בגרסה שאליה רוצים לשדרג. צריך לציין מספר גרסה מלא בפורמט X.Y.Z-gke.N.. רשימת הגרסאות של Google Distributed Cloud זמינה במאמר בנושא ניהול גרסאות.

  3. שדרוג תחנת העבודה של האדמין:

    gkeadm upgrade admin-workstation --config AW_CONFIG_FILE \
        --info-file INFO_FILE
    

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

    • AW_CONFIG_FILE: הנתיב של קובץ התצורה של תחנת העבודה של האדמין. אפשר להשמיט את הדגל הזה אם הקובץ נמצא בספרייה הנוכחית ויש לו את השם admin-ws-config.yaml.

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

בניהול המשתמש

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

  1. הורדה של gkectl:

    gcloud storage cp gs://gke-on-prem-release/gkectl/TARGET_VERSION/gkectl ./
    chmod +x gkectl
    

    מחליפים את TARGET_VERSION בגרסה שאליה רוצים לשדרג. צריך לציין מספר גרסה מלא בפורמט X.Y.Z-gke.N.. רשימת הגרסאות של Google Distributed Cloud זמינה במאמר בנושא ניהול גרסאות.

  2. מורידים את חבילת Google Distributed Cloud. מוודאים שהגרסה זהה לגרסה שבה השתמשתם כדי להוריד את gkectl:

    gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/TARGET_VERSION/gke-onprem-vsphere-TARGET_VERSION.tgz ./
    

שדרוג אשכול הניהול

השלבים לשדרוג אשכול האדמין משתנים מעט בהתאם לגרסה המשנית שמשדרגים אליה (גרסת היעד):

‫1.31 ומעלה

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

מריצים את הפקודה הבאה בתחנת העבודה של האדמין כדי לייבא תמונות של מערכת הפעלה אל vSphere:

gkectl prepare \
    --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

מחליפים את ADMIN_CLUSTER_KUBECONFIG בנתיב לקובץ kubeconfig של אשכול האדמין.

‫1.30 ומטה

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

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

  • אם אתם משדרגים לגרסה 1.13 ומעלה, עליכם קודם לרשום את אשכול האדמין על ידי מילוי הקטע gkeConnect בקובץ התצורה של אשכול האדמין. מריצים את הפקודה gkectl update cluster עם השינויים בקובץ התצורה.

  • מוודאים שגרסת gkectl והאשכולות מתאימה לשדרוג, ושהורדתם את החבילה המתאימה. ההבדל בגרסאות בין אשכולות האדמין והמשתמשים תלוי בגרסה של Google Distributed Cloud. כדי לוודא שתוכלו לשדרג את אשכול האדמין, כדאי לעיין במאמר בנושא הבדלים בגרסאות של אשכולות אדמין ואשכולות משתמשים.

  • מוודאים שהשדה bundlepath בקובץ ההגדרה של אשכול הניהול תואם לנתיב של חבילת השדרוג.

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

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

ביצוע השדרוג

gkectl

מבצעים את השלבים שבקטע הזה בתחנת העבודה של האדמין. יש שני סוגים של פקודות gkectl upgrade admin:

  • אסינכרוני:
    בווריאציה האסינכרונית, הפקודה מתחילה את השדרוג ואז מסתיימת. לא צריך לצפות בפלט של הפקודה במשך כל משך השדרוג. במקום זאת, אפשר להריץ את הפקודות gkectl list admin ו-gkectl describe admin כדי לבדוק מדי פעם את התקדמות השדרוג. כדי להשתמש בגרסה האסינכרונית, צריך לכלול את הדגל --async בפקודה.

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

  • האפשרות נתמכת רק באשכולות אדמין של HA בגרסה 1.29 ואילך.
  • בכל אשכולות המשתמשים צריך להפעיל את Controlplane V2.
  • גרסה 1.31: לא נתמכת באשכולות מתקדמים.
  • גרסה 1.32 ומעלה: זמינה באשכולות מתקדמים.

  • סינכרוני:
    בגרסה הסינכרונית, הפקודה gkectl upgrade admin מציגה הודעות סטטוס בתחנת העבודה של האדמין במהלך השדרוג.

שדרוג אסינכרוני

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

    gkectl upgrade admin \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG_FILE \
        --async
    

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

    • ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.

    • ADMIN_CLUSTER_CONFIG_FILE: הנתיב לקובץ התצורה של אשכול האדמין.

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

  2. כדי לראות את סטטוס השדרוג:

    gkectl list admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

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

    NAME              STATE         AGE    VERSION
    gke-admin-test    UPGRADING     9h     1.34.100-gke.93
    

    הערכים האפשריים של STATE הם RUNNING,‏ UPGRADING,‏ RECONCILING,‏ ERROR ו-UNKNOWN.

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

    gkectl describe admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

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

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

    פלט לדוגמה:

    Events:
    Type    Reason                             Age   From                             Message
    ----       ------                                  ----     ----                                -------
    Normal  ControlPlaneUpgradeStarted         40m   onprem-admin-cluster-controller  Creating or updating admin cluster API Controller
    Normal  ControlPlaneMachineUpgradeStarted  40m   onprem-admin-cluster-controller  Creating or updating control plane machine
    Normal  StatusChanged                      40m   onprem-admin-cluster-controller  OnPremAdminCluster status changed:
    - New ClusterState condition: UPGRADING
    - New Ready condition: False, CreateOrUpdateControlPlaneMachine, Creating or updating control plane machine
    Normal   StatusChanged      2m                onprem-admin-cluster-controller  OnPremAdminCluster status changed:
    - New ClusterState condition: RUNNING
    - New Ready condition: True, ClusterRunning, Cluster is running
    
  4. בסיום השדרוג, gkectl list admin מציג STATUS של RUNNING:

    NAME              STATE         AGE    VERSION
    gke-admin-test    RUNNING       9h     1.34.100-gke.93
    

    בנוסף, כשהשדרוג יסתיים, השדה gkectl describe admin יופיע מתחת לStatus ב-Last GKE On Prem Version. לדוגמה:

    Status:
      Cluster State:  RUNNING
      Last GKE On Prem Version:  1.34.0-gke.1
    

פתרון בעיות בשדרוג אסינכרוני

בשדרוג אסינכרוני, משך הזמן הקצוב לתפוגה מבוסס על מספר הצמתים באשכול. אם השדרוג נמשך יותר מזמן הקצוב לתפוגה, מצב האשכול משתנה מ-UPGRADING ל-ERROR, ומוצג אירוע שבו מצוין שזמן הקצוב לתפוגה של פעולת השדרוג הסתיים. שימו לב שהמצב ERROR כאן מציין שהשדרוג נמשך יותר זמן מהצפוי, אבל הוא לא הופסק. הבקר ממשיך בתהליך ההתאמה ומנסה שוב לבצע את הפעולה. אם השדרוג נחסם או נכשל, אפשר להריץ את הפקודה gkectl diagnose כדי לבדוק אם יש בעיות נפוצות באשכול. על סמך התוצאה, תוכלו להחליט אם לבצע תיקון ידני או לפנות אל Google Cloud התמיכה לקבלת עזרה נוספת.

שדרוג סינכרוני

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

    gkectl upgrade admin \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG_FILE
    

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

    • ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.

    • ADMIN_CLUSTER_CONFIG_FILE: הנתיב לקובץ התצורה של אשכול האדמין.

    הפקודה gkectl upgrade מריצה בדיקות קדם-הפעלה. אם בדיקות קדם-הפעלה נכשלות, הפקודה נחסמת. כדי לבטל את החסימה, צריך לתקן את הכשלים או להשתמש בדגל --skip-preflight-check-blocking עם הפקודה.

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

      kubectl config view --kubeconfig ADMIN_CLUSTER_KUBECONFIG

gcloud

משדרגים את אשכול האדמין באמצעות ה-CLI של gcloud.

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

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
        --location=REGION\
        --required-platform-version=VERSION \
        --async
    

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

    • ADMIN_CLUSTER_NAME: השם של אשכול האדמין.
    • REGION: האזור שבו מתבצע הניהול של אשכול האדמין. Google Cloud
    • VERSION: גרסת היעד שאליה משדרגים.

    הפקודה הזו מחזירה מזהה פעולה. אפשר לעקוב אחרי ההתקדמות באמצעות gcloud container vmware operations describe.

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

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
        --location=REGION \
        --version=VERSION \
        --async
    

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

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

אפשר להשתמש ב-gkectl, במסוף, ב-CLI של gcloud או ב-Terraform כדי לשדרג אשכול משתמשים. מידע על בחירת הכלי המתאים זמין במאמר בחירת כלי לשדרוג קבוצות משתמשים.

gkectl

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

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

  1. צריך לבצע את השלב הזה רק אם הגרסה של TARGET_VERSION היא 1.30 או גרסה מוקדמת יותר, או אם משדרגים את אשכול המשתמשים לגרסה שונה מזו של אשכול האדמין. מריצים את הפקודה gkectl prepare כדי לייבא תמונות של מערכת הפעלה אל vSphere:

    gkectl prepare \
      --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  2. אם באשכול יש מאגר צמתים של Windows, מריצים את הפקודה gkectl prepare windows ומעדכנים את השדה osImage של מאגר הצמתים. הוראות מפורטות זמינות במאמר שדרוג אשכול משתמשים עם מאגרי צמתים של Windows.

  3. בקובץ התצורה של אשכול המשתמשים, מגדירים את הערך של gkeOnPremVersion לגרסת היעד של השדרוג.

הרצת בדיקות לפני ההטמעה

כשמשדרגים לגרסה 1.29 ומעלה, אפשר להריץ את בדיקות הטרום-המראה לפני שמשדרגים אשכול משתמשים:

gkectl upgrade cluster \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG \
    --dry-run

מחליפים את USER_CLUSTER_CONFIG בנתיב לקובץ התצורה של אשכול המשתמשים.

עם הסימון --dry-run, ‏ gkectl upgrade cluster מריץ את הבדיקות המקדימות אבל לא מתחיל את תהליך השדרוג. בגרסאות קודמות של Google Distributed Cloud מופעלות בדיקות מקדימות, אבל אי אפשר להפעיל אותן בנפרד מהשדרוג. אם מוסיפים את הדגל --dry-run, אפשר למצוא ולתקן בעיות שמתגלות בבדיקות המקדימות של אשכול המשתמשים לפני השדרוג.

מריצים את gkectl upgrade cluster

יש שתי גרסאות של הפקודה gkectl upgrade cluster:

  • אסינכרוני: (מומלץ)
    בגרסה האסינכרונית, הפקודה מתחילה את השדרוג ואז מסיימת. לא צריך לצפות בפלט של הפקודה במשך כל משך השדרוג. במקום זאת, אפשר להריץ את הפקודות gkectl list clusters ו-gkectl describe clusters כדי לבדוק מדי פעם את התקדמות השדרוג. כדי להשתמש בגרסת הוריאציה האסינכרונית, כוללים את הדגל --async בפקודה.

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

שדרוג אסינכרוני

  1. אם אתם משדרגים לגרסה מתקדמת יותר מ-1.16, אתם יכולים לדלג על השלב הזה.

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

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

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG \
      --async
    

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

  3. כדי לראות את סטטוס השדרוג:

    gkectl list clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

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

    NAMESPACE             NAME    READY   STATE       AGE   VERSION
    my-uc-gkeonprem-mgmt  my-uc   False   UPGRADING   9h    1.34.0-gke.1
    

    הערכים האפשריים של STATE הם PROVISIONING,‏ UPGRADING,‏ DELETING,‏ UPDATING,‏ RUNNING,‏ RECONCILING,‏ ERROR ו-UNKNOWN.

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

    gkectl describe clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --cluster USER_CLUSTER_NAME -v 5
    

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

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

    • ControlPlaneUpgrade
    • MasterNodeUpgrade
    • AddonsUpgrade
    • NodePoolsUpgrade

    פלט לדוגמה:

    Events:
    Type    Reason                      Age    From                            Message
    ----     ------                     ----   ----                            -------
    Normal  NodePoolsUpgradeStarted     22m    onprem-user-cluster-controller  Creating or updating node pools: pool-2: Creating or updating node pool
    Normal  AddonsUpgradeStarted        22m    onprem-user-cluster-controller  Creating or updating addon workloads
    Normal  ControlPlaneUpgradeStarted  25m    onprem-user-cluster-controller  Creating or updating cluster control plane workloads: deploying user-kube-apiserver-base, ...: 14/15 pods are ready
    Normal  ControlPlaneUpgradeFinished 23m    onprem-user-cluster-controller  Control plane is running
    
  5. בסיום השדרוג, gkectl list clusters מציג STATUS של RUNNING:

    NAMESPACE             NAME    READY   STATE     AGE     VERSION
    my-uc-gkeonprem-mgmt  my-uc   True    RUNNING   9h      1.34.0-gke.1
    

    בנוסף, כשהשדרוג יסתיים, השדה gkectl describe clusters יופיע מתחת לStatus ב-Last GKE On Prem Version. לדוגמה:

    Status:
    Cluster State:  RUNNING
    Last GKE On Prem Version:  1.34.0-gke.1
    

פתרון בעיות בשדרוג אסינכרוני

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

בדרך כלל, פסק זמן הוא תוצאה של חסימה שנגרמת על ידי PodDisruptionBudget ‏ (PDB). במקרה כזה, אי אפשר להוציא את ה-Pods מהצמתים הישנים, ואי אפשר לרוקן את הצמתים הישנים. אם הוצאת ה-Pod נמשכת יותר מ-10 דקות, אנחנו כותבים אירוע לאובייקט OnPremUserCluster. אפשר לתעד את האירוע על ידי הרצת הפקודה gkectl describe clusters. אחר כך אפשר לשנות את ה-PDB כדי לאפשר את ניתוק הצומת. אחרי כן, השדרוג יכול להימשך ולהסתיים.

אירוע לדוגמה:

Warning  PodEvictionTooLong  96s (x2 over 4m7s)  onprem-user-cluster-controller
Waiting too long(>10m0.00000003s) for (kube-system/coredns-856d6dbfdf-dl6nz) eviction.

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

שדרוג סינכרוני

הפקודה gkectl upgrade מריצה בדיקות קדם-הפעלה. אם בדיקות קדם-הפעלה נכשלות, הפקודה נחסמת. צריך לתקן את השגיאות או להשתמש בדגל --skip-preflight-check-blocking. כדאי לדלג על הבדיקות המקדימות רק אם אתם בטוחים שאין כשלים קריטיים.

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

  1. אם אתם משדרגים לגרסה מתקדמת יותר מ-1.16, אתם יכולים לדלג על השלב הזה.

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

  2. משדרגים את האשכול:

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    
  3. אם אתם משדרגים לגרסה 1.14.0 ומעלה, נוצר קובץ kubeconfig חדש עבור אשכול המשתמשים, והוא מחליף את הקובץ הקיים. כדי להציג את פרטי האשכול בקובץ, מריצים את הפקודה הבאה:

    kubectl config view --kubeconfig USER_CLUSTER_KUBECONFIG

המשך שדרוג

אם השדרוג של אשכול משתמשים נקטע, אפשר להמשיך את השדרוג של אשכול המשתמשים על ידי הפעלת אותה פקודת שדרוג עם הדגל --skip-validation-all:

gkectl upgrade cluster \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG \
    --skip-validation-all

המסוף

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

  • רושם את אשכול האדמין ל-GKE On-Prem API, אם הוא עדיין לא רשום.

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

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

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

    מעבר לאשכולות GKE

  2. בוחרים את Google Cloud הפרויקט, ואז בוחרים את האשכול שרוצים לשדרג.

  3. בחלונית פרטים, לוחצים על פרטים נוספים.

  4. בקטע Cluster basics, לוחצים על Upgrade.

  5. ברשימה Choose target version, בוחרים את הגרסה שאליה רוצים לשדרג. הרשימה שנאספה בקפידה מכילה רק את הגרסאות האחרונות של תיקוני האבטחה.

  6. לוחצים על שדרוג.

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

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

‫CLI של gcloud

שדרוג של אשכול משתמשים מחייב שינויים מסוימים באשכול האדמין. הפקודה gcloud container vmware clusters upgrade מבצעת באופן אוטומטי את הפעולות הבאות:

  • רושם את אשכול האדמין ל-GKE On-Prem API, אם הוא עדיין לא רשום.

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

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

  1. מעדכנים את הרכיבים של Google Cloud CLI:

    gcloud components update
    
  2. כדי לקבל רשימה של גרסאות שאפשר לשדרג אליהן:

    gcloud container vmware clusters query-version-config \
      --cluster=USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION
    

    הפלט של הפקודה אמור להיראות כך:

    versions:
    - version: 1.16.3-gke.45
    - version: 1.16.2-gke.28
    - version: 1.16.1-gke.45
    - version: 1.16.0-gke.669
    - version: 1.15.6-gke.25
    - version: 1.15.5-gke.41
    
    An Anthos version must be made available on the admin cluster ahead of the user
    cluster creation or upgrade. Versions annotated with isInstalled=true are
    installed on the admin cluster for the purpose of user cluster creation or
    upgrade whereas other version are released and will be available for upgrade
    once dependencies are resolved.
    
    To install the version in the admin cluster, run:
    $ gcloud container vmware admin-clusters update my-admin-cluster --required-platform-version=VERSION
    

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

  3. משדרגים את האשכול.

    gcloud container vmware clusters upgrade USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --version=VERSION
    

    מחליפים את VERSION בגרסה של Google Distributed Cloud שרוצים לשדרג אליה. מציינים גרסה מהפלט של הפקודה הקודמת. מומלץ לשדרג לגרסה האחרונה עם התיקון.

    הפלט של הפקודה אמור להיראות כך:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    בפלט לדוגמה, המחרוזת operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 היא OPERATION_ID של הפעולה שפועלת לאורך זמן. כדי לברר את סטטוס הפעולה, מריצים את הפקודה הבאה בחלון מסוף אחר:

    gcloud container vmware operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=REGION
    

Terraform

  1. מעדכנים את הרכיבים של Google Cloud CLI:

    gcloud components update
    
  2. אם עדיין לא עשיתם זאת, רושמים את אשכול האדמין לממשק ה-API של GKE On-Prem. אחרי שהאשכול נרשם ל-GKE On-Prem API, לא צריך לבצע את השלב הזה שוב.

  3. כדי לקבל רשימה של גרסאות שאפשר לשדרג אליהן:

    gcloud container vmware clusters query-version-config \
      --cluster=USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION
    

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

    • USER_CLUSTER_NAME: השם של אשכול המשתמשים.

    • PROJECT_ID: המזהה של פרויקט ה-Fleet שבו אשכול המשתמש הוא חבר. זה הפרויקט שציינתם כשנוצר האשכול. אם יצרתם את האשכול באמצעות gkectl, זהו מזהה הפרויקט בשדה gkeConnect.projectID בקובץ התצורה של האשכול.

    • REGION: האזור שבו פועל GKE On-Prem API ושבו מאוחסנים המטא-נתונים שלו. Google Cloud בקובץ main.tf שבו השתמשתם כדי ליצור את אשכול המשתמשים, האזור נמצא בשדה location של משאב האשכול.

    הפלט של הפקודה אמור להיראות כך:

    versions:
    - version: 1.16.3-gke.45
    - version: 1.16.2-gke.28
    - version: 1.16.1-gke.45
    - version: 1.16.0-gke.669
    - version: 1.15.6-gke.25
    - version: 1.15.5-gke.41
    
    An Anthos version must be made available on the admin cluster ahead of the user
    cluster creation or upgrade. Versions annotated with isInstalled=true are
    installed on the admin cluster for the purpose of user cluster creation or
    upgrade whereas other version are released and will be available for upgrade
    once dependencies are resolved.
    
    To install the version in the admin cluster, run:
    $ gcloud container vmware admin-clusters update my-admin-cluster --required-platform-version=VERSION
    
  4. מורידים את הגרסה החדשה של הרכיבים ומציבים אותם באשכול האדמין:

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=VERSION
    

    הפקודה הזו מורידה את הגרסה של הרכיבים שצוינו ב---required-platform-version אל אשכול האדמין, ואז פורסת את הרכיבים. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.

  5. בקובץ main.tf שבו השתמשתם כדי ליצור את אשכול המשתמשים, משנים את on_prem_version במשאב האשכול לגרסה החדשה.

  6. מאתחלים ויוצרים את תוכנית Terraform:

    terraform init
    

    ‫Terraform מתקין את כל הספריות הנדרשות, כמו ספק Google Cloud.

  7. בודקים את ההגדרות ומבצעים שינויים לפי הצורך:

    terraform plan
    
  8. מחילים את תוכנית Terraform כדי ליצור את אשכול המשתמשים:

    terraform apply
    

הסרת החבילה המלאה

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

rm /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION-full.tgz

המשך שדרוג של אשכול אדמין

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

אזהרה: אל תתקנו את השרת הראשי של הניהול באמצעות gkectl repair admin-master אחרי ניסיון שדרוג שנכשל. הפעולה הזו תגרום למצב לא תקין באשכול הניהול.

איך לעשות את זה?

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

  2. אם מישור הבקרה של האדמין לא תקין לפני ניסיון השדרוג הראשוני, מתקנים את מישור הבקרה של האדמין באמצעות הפקודה gkectl repair admin-master.

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

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

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

אם gkectl יוצא באופן לא צפוי במהלך שדרוג של אשכול אדמין, אשכול ה-kind לא מנוקה. לפני שמריצים מחדש את פקודת השדרוג כדי להמשיך את השדרוג, צריך למחוק את אשכול ה-kind:

docker stop gkectl-control-plane && docker rm gkectl-control-plane

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

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

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

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

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

gkeadm rollback admin-workstation --config=AW_CONFIG_FILE

אפשר להשמיט את --config=AW_CONFIG_FILE אם קובץ התצורה של תחנת העבודה של האדמין הוא ברירת המחדל admin-ws-config.yaml. אחרת, מחליפים את AW_CONFIG_FILE בנתיב לקובץ התצורה של תחנת העבודה של האדמין.

פקודת החזרה לגרסה קודמת מבצעת את השלבים הבאים:

  1. הורדה של הגרסה הקודמת של gkeadm.
  2. מגבה את ספריית הבית של תחנת העבודה הנוכחית של האדמין.
  3. יוצרת תחנת עבודה חדשה לאדמין באמצעות גרסת החזרה לגרסה קודמת של gkeadm.
  4. מוחק את תחנת האדמין המקורית.

התקנת חבילה עם גרסה אחרת לצורך שדרוג

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

  1. כדי לבדוק את הגרסאות הנוכחיות של gkectl ושל האשכול, מריצים את הפקודה הזו. כדי לקבל מידע מפורט יותר, משתמשים בדגל --details/-d.

    gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG --details
    

    הפלט מספק מידע על גרסאות האשכול.

  2. בהתאם לפלט שמתקבל, מחפשים את הבעיות הבאות ופותרים אותן לפי הצורך.

    • אם גרסת אשכול האדמין הנוכחית נמוכה ביותר מגרסה משנית אחת מהגרסה TARGET_VERSION, צריך לשדרג את כל האשכולות לגרסה משנית אחת מתחת לגרסה TARGET_VERSION.

    • אם הגרסה של gkectl נמוכה מ-1.11, ואתם רוצים לשדרג לגרסה 1.12.x, תצטרכו לבצע כמה שדרוגים. משדרגים גרסה משנית אחת בכל פעם, עד שמגיעים לגרסה 1.11.x, ואז ממשיכים לפי ההוראות בנושא הזה.

    • אם הגרסה של gkectl נמוכה מהגרסה של TARGET_VERSION, צריך לשדרג את תחנת העבודה של האדמין לגרסה TARGET_VERSION.

  3. אחרי שקובעים שגרסאות gkectl והאשכול מתאימות לשדרוג, מורידים את החבילה.

    בודקים אם חבילת ה-tarball כבר קיימת בתחנת העבודה של האדמין.

    stat /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz

    אם חבילת ה-bundle לא נמצאת בתחנת העבודה של האדמין, צריך להוריד אותה.

    gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/TARGET_VERSION/gke-onprem-vsphere-TARGET_VERSION.tgz /var/lib/gke/bundles/
    

  4. מתקינים את החבילה.

    gkectl prepare --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

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

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

    gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG --details

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

פתרון בעיות בתהליך השדרוג

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

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

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

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

  1. להמשיך להשתמש בגרסה הנוכחית לייצור.
  2. בודקים את גרסת התיקון באשכול שאינו בסביבת ייצור כשהיא יוצאת.
  3. שדרגו את כל אשכולות המשתמשים בייצור לגרסת תיקון ההפצה כשתהיו בטוחים.
  4. משדרגים את אשכול הניהול לגרסת הפצה של התיקון.

פתרון בעיות בשדרוג של אשכול אדמין

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

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

  1. שדרוג אשכולות משתמשים בסביבת הייצור לגרסה 1.12.x.
  2. להשאיר את אשכול האדמין בגרסה הקודמת ולהמשיך לקבל תיקוני אבטחה.
  3. בודקים את השדרוג של אשכול הניהול מגרסה 1.11.x לגרסה 1.12.x בסביבת בדיקה, ומדווחים על בעיות אם יש כאלה.
  4. אם הבעיה נפתרה על ידי תיקון בגרסה 1.12.x, תוכלו לשדרג את אשכול האדמין של הסביבה הפרודקטיבית לגרסת התיקון הזו אם תרצו.

בעיות ידועות בגרסאות האחרונות

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

ראו גם: בעיות מוכרות

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

אם משדרגים את תחנת העבודה של האדמין באמצעות הפקודה gkectl upgrade admin-workstation, יכול להיות שהשדרוג ייכשל אם הדיסק של הנתונים כמעט מלא, כי המערכת מנסה לגבות את תחנת העבודה הנוכחית של האדמין באופן מקומי בזמן השדרוג לתחנת עבודה חדשה של האדמין. אם אי אפשר לפנות מספיק מקום בדיסק הנתונים, משתמשים בפקודה gkectl upgrade admin-workstation עם הדגל הנוסף --backup-to-local=false כדי למנוע יצירת גיבוי מקומי של תחנת העבודה הנוכחית של האדמין.

שיבוש בעומסי עבודה עם PodDisruptionBudgets

שדרוג אשכולות עלול לגרום לשיבוש או להשבתה של עומסי עבודה שמשתמשים בPodDisruptionBudgets (PDB).

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

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

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

kubectl get poddisruptionbudget --all-namespaces -o jsonpath='{range .items[?(@.status.disruptionsAllowed==0)]}{.metadata.name}/{.metadata.namespace}{"\n"}{end}'

נספח

מידע על כללי VMware DRS שהופעלו בגרסה 1.1.0-gke.6

החל מגרסה 1.1.0-gke.6, ‏ Google Distributed Cloud יוצר באופן אוטומטי כללי אנטי-אפיניות של Distributed Resource Scheduler ‏(DRS) של VMware עבור הצמתים של אשכול המשתמשים, וכתוצאה מכך הם מפוזרים על פני לפחות שלושה מארחים פיזיים במרכז הנתונים. החל מגרסה 1.1.0-gke.6, התכונה הזו מופעלת אוטומטית באשכולות חדשים ובאשכולות קיימים.

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

אם סביבת vSphere לא עומדת בתנאים שלמעלה, עדיין אפשר לשדרג, אבל כדי לשדרג אשכול משתמשים מגרסה 1.3.x לגרסה 1.4.x, צריך להשבית את קבוצות האנטי-אפיניות. מידע נוסף זמין בבעיה המוכרת הזו בנתוני הגרסה של Google Distributed Cloud.

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

משאב תיאור
אשכול אדמין

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

מישור הבקרה של אשכול משתמשים

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

צמתים של אשכול משתמשים

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

יצירה מחדש של קובץ מידע אם הוא חסר

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

קובץ המידע של הפלט הוא בפורמט הבא:

Admin workstation version: GKEADM_VERSION
Created using gkeadm version: GKEADM_VERSION
VM name: ADMIN_WS_NAME
IP: ADMIN_WS_IP
SSH key used: FULL_PATH_TO_ADMIN_WS_SSH_KEY
To access your admin workstation:
ssh -i FULL-PATH-TO-ADMIN-WS-SSH-KEY ubuntu@ADMIN-WS-IP

דוגמה לקובץ מידע על פלט:

Admin workstation version: v1.10.3-gke.49
Created using gkeadm version: v1.10.3-gke.49
VM name: admin-ws-janedoe
IP: 172.16.91.21
SSH key used: /usr/local/google/home/janedoe/.ssh/gke-admin-workstation
Upgraded from (rollback version): v1.10.0-gke.194
To access your admin workstation:
ssh -i /usr/local/google/home/janedoe/.ssh/gke-admin-workstation ubuntu@172.16.91.21

יוצרים את הקובץ בעורך, ומחליפים את הפרמטרים המתאימים. שומרים את הקובץ עם שם קובץ שזהה לשם המכונה הווירטואלית בספרייה שממנה מריצים את gkeadm. לדוגמה, אם שם המכונה הווירטואלית הוא admin-ws-janedoe, שומרים את הקובץ בשם admin-ws-janedoe.

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