שדרוג אשכול

במאמר הזה מוסבר איך לשדרג אשכולות ב-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 חייבת להיות זהה לגרסה של תוכנת Google Distributed Cloud רק ל-VMware שאליה רוצים לשדרג. לדוגמה, אם משדרגים אשכול לא מתקדם בגרסה 1.32 לאשכול מתקדם בגרסה 1.33.700-gke.71, הגרסה של gkectl צריכה להיות 1.33.700-gke.71. דרישת הגרסה המחמירה הזו חלה רק במהלך השדרוג לאשכול מתקדם. לכל השדרוגים האחרים באשכול המתקדם, חלים הכללים הרגילים לגבי הטיית גרסה.

  • אסור להשתמש בגרסאות שונות: כשמשדרגים מאשכול לא מתקדם לאשכול מתקדם, אי אפשר לשדרג את רמת הבקרה ואת מאגרי הצמתים בנפרד. אתם צריכים לשדרג את מישור הבקרה ואת כל מאגרי הצמתים לגרסת היעד של תוכנת Google Distributed Cloud רק ל-VMware בו-זמנית. לדוגמה, אם אתם משדרגים מאשכול לא מתקדם לאשכול מתקדם בגרסה 1.33.700-gke.71, אתם צריכים לשדרג את רמת הבקרה ואת הגרסאות של מאגר הצמתים לגרסה 1.33.700-gke.71 בו-זמנית.

דרישות

בקטע הזה מפורטים הדרישות שקשורות לגרסה והדרישות לשימוש בלקוחות 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, אי אפשר להשתמש בגרסה 1.29 כי היא נמוכה מגרסת האשכול של היעד.gkectl גרסאות תיקון לא משנות. לדוגמה, אפשר להשתמש בגרסה gkectl version 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, המסוף או ה-CLI של gcloud,‏ stackdriver מופעל באופן אוטומטי. Google Cloud

הפעלת 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 APIs ומכתובות אחרות לעבור דרך שרת ה-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 כדי לשדרג אשכול משתמשים, ואתם לא בעלי הפרויקט, אתם צריכים לקבל את תפקיד ניהול הזהויות וגישת המשתמשים 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 לשדרוג, הגרסה תהיה זמינה ב-GKE On-Prem API בכל האזורים 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 בקובץ ההגדרה של אשכול האדמין תואם לנתיב של חבילת ה-bundle שאליה רוצים לשדרג.

  • מידע על ההתקנה של 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 \
        --reuse-bootstrap-cluster \
        --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.35.100-gke.72
    

    הערכים האפשריים של 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.35.100-gke.72
    

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

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

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

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

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

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

    gkectl upgrade admin \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG_FILE \
        --reuse-bootstrap-cluster
    

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

    • 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

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

  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.35.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.35.0-gke.1
    

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

    Status:
    Cluster State:  RUNNING
    Last GKE On Prem Version:  1.35.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:

    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 (PDBs).

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

אם הגדרתם 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.

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