במאמר הזה מוסבר איך לשדרג אשכולות ב-Google Distributed Cloud (תוכנה בלבד) ל-VMware. במסמך הזה מפורטים השלבים לשדרוג תחנת העבודה של האדמין, אשכולות המשתמשים ואשכולות האדמין. השלבים לשדרוג אשכול משתמשים מראים איך לשדרג את מישור הבקרה ואת כל מאגרי הצמתים. אם רוצים לשדרג את רמת הבקרה של אשכול המשתמשים ואת מאגרי הצמתים בנפרד, אפשר לעיין במאמר בנושא שדרוג מאגרי צמתים.
הדף הזה מיועד לאדמינים ולמפעילים בתחום ה-IT שמנהלים את מחזור החיים של תשתית טכנולוגית בסיסית. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן זמין במאמר תפקידים נפוצים של משתמשי GKE ומשימות. Google Cloud
לפני שממשיכים, מומלץ לעיין במסמכים הבאים:
סקירה כללית על שדרוג
בין היתר, במסמך הזה מתוארים כללי הגרסה וההטיה הנתמכים לשדרוגים, ששונו בגרסה 1.28 ואילך.שיטות מומלצות לשדרוג
במסמך הזה מפורטות רשימות ומפורטות שיטות מומלצות לשדרוג אשכולות.
הבדלים מתקדמים בין אשכולות
כשמפעילים אשכולות מתקדמים, יש כמה הבדלים בשדרוגים, במיוחד בתצוגה המקדימה של אשכולות מתקדמים בגרסה 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, אי אפשר להשתמש ב-gkectl1.29 כי הוא נמוך מגרסת אשכול היעד. אין חשיבות לגרסאות התיקון. לדוגמה, אפשר להשתמש בגרסהgkectl1.29.0-gke.1456 כדי לשדרג לגרסת תיקון גבוהה יותר, כמו 1.29.1000-gke.94.גרסה
gkectlלא יכולה להיות גבוהה ביותר משתי גרסאות משניות מגרסת האשכול הנוכחית. לדוגמה, אם משדרגים אשכול מגרסה 1.28 לגרסה 1.29, גרסתgkectlיכולה להיות 1.29 או 1.30. אבל אי אפשר להשתמש בגרסהgkectl1.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, צריך להסיר זמנית את המפרט שלו מהאשכול, באופן הבא:
בודקים אם יש
NetworkPolicyלא מערכתי שמוחל על האשכול:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get networkpolicy -A -o wide | grep -v kube-systemאם הפלט של השלב הקודם לא היה ריק, שומרים כל
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.
-
מוחקים את
NetworkPolicyבאמצעות הפקודה הבאה:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG delete networkpolicy NETWORK_POLICY_NAME -n NETWORK_POLICY_NAMESPACEממשיכים בשדרוג.
אחרי שהשדרוג יסתיים, אם הסרתם מפרטים שאינם של המערכת
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.
הפעלה של
kubernetesmetadata.googleapis.com:gcloud services enable --project PROJECT_ID \ kubernetesmetadata.googleapis.comמחליפים את
PROJECT_IDבמזהה של פרויקט המארח של ה-Fleet שהמשתמש הוא חבר בו. זה הפרויקט שציינתם כשנוצר האשכול. אם יצרתם את האשכול באמצעותgkectl, זהו מזהה הפרויקט בשדהgkeConnect.projectIDבקובץ התצורה של האשכול.אם הארגון שלכם הגדיר רשימת היתרים שמאפשרת לתנועה מממשקי Google API ומכתובות אחרות לעבור דרך שרת ה-Proxy, צריך להוסיף את
kubernetesmetadata.googleapis.comלרשימת ההיתרים.מקצים את התפקיד
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.
אם קובץ פרטי הפלט חסר, אפשר ליצור אותו מחדש. איך יוצרים מחדש קובץ מידע אם הוא חסר
שדרוג
כדי לשדרג את תחנת העבודה של האדמין:
בודקים את השדה
adminWorkstation.diskGBבקובץ התצורה של תחנת העבודה לאדמין ומוודאים שהגודל שצוין הוא לפחות 100, לדוגמה:adminWorkstation: diskGB: 100כשמשדרגים לגרסה 1.28 ומעלה, נדרש נפח אחסון של 100GB, והשדרוג של האשכול נכשל אם אין מספיק מקום בדיסק בתחנת העבודה של האדמין.
בשרת הקפיצה, מורידים את
gkeadm:gkeadm upgrade gkeadm --target-version TARGET_VERSION
מחליפים את
TARGET_VERSIONבגרסה שאליה רוצים לשדרג. צריך לציין מספר גרסה מלא בפורמטX.Y.Z-gke.N.. רשימת הגרסאות של Google Distributed Cloud זמינה במאמר בנושא ניהול גרסאות.שדרוג תחנת העבודה של האדמין:
gkeadm upgrade admin-workstation --config AW_CONFIG_FILE \ --info-file INFO_FILEמחליפים את מה שכתוב בשדות הבאים:
AW_CONFIG_FILE: הנתיב של קובץ התצורה של תחנת העבודה של האדמין. אפשר להשמיט את הדגל הזה אם הקובץ נמצא בספרייה הנוכחית ויש לו את השםadmin-ws-config.yaml.
INFO_FILE: הנתיב של קובץ המידע. אפשר להשמיט את הדגל הזה אם הקובץ נמצא בספרייה הנוכחית. שם הקובץ שמוגדר כברירת מחדל זהה לשם תחנת העבודה של האדמין.
בניהול המשתמש
בתחנת העבודה של האדמין, עוברים לספרייה שבה רוצים להתקין גרסה חדשה שלgkectl.
הורדה של
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 זמינה במאמר בנושא ניהול גרסאות.מורידים את חבילת 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בקובץ התצורה של אשכול האדמין. מריצים את הפקודהgkectlupdate 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מציגה הודעות סטטוס בתחנת העבודה של האדמין במהלך השדרוג.
שדרוג אסינכרוני
בתחנת העבודה של האדמין, מתחילים שדרוג אסינכרוני:
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE \ --asyncמחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.
ADMIN_CLUSTER_CONFIG_FILE: הנתיב לקובץ התצורה של אשכול האדמין.
הפקודה הקודמת מסתיימת, ואפשר להמשיך להשתמש בתחנת העבודה של האדמין בזמן שהשדרוג מתבצע.
כדי לראות את סטטוס השדרוג:
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.כדי לקבל פרטים נוספים על התקדמות השדרוג ועל אירועים באשכול:
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בסיום השדרוג,
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 התמיכה לקבלת עזרה נוספת.
שדרוג סינכרוני
מריצים את הפקודה הבאה:
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עם הפקודה.אם אתם משדרגים לגרסה 1.14.0 ומעלה, נוצר קובץ kubeconfig חדש עבור אשכול האדמין, שמחליף כל קובץ קיים. כדי להציג את פרטי האשכול בקובץ, מריצים את הפקודה הבאה:
kubectl config view --kubeconfig ADMIN_CLUSTER_KUBECONFIG
gcloud
משדרגים את אשכול האדמין באמצעות ה-CLI של gcloud.
מעדכנים את גרסת הפלטפורמה לגרסת היעד:
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.-
אחרי שמסיימים לעדכן את גרסת הפלטפורמה, מעדכנים את גרסת אשכול האדמין:
gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \ --location=REGION \ --version=VERSION \ --asyncבשלב הזה מסתיים השדרוג של אשכול האדמין לגרסת היעד.
שדרוג אשכול משתמשים
אפשר להשתמש ב-gkectl, במסוף, ב-CLI של gcloud או ב-Terraform כדי לשדרג אשכול משתמשים. מידע על בחירת הכלי המתאים זמין במאמר בחירת כלי לשדרוג קבוצות משתמשים.
gkectl
הכנה לשדרוג של אשכול משתמשים
מבצעים את השלבים הבאים בתחנת העבודה של האדמין:
צריך לבצע את השלב הזה רק אם הגרסה של
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
אם באשכול יש מאגר צמתים של Windows, מריצים את הפקודה
gkectl prepare windowsומעדכנים את השדהosImageשל מאגר הצמתים. הוראות מפורטות זמינות במאמר שדרוג אשכול משתמשים עם מאגרי צמתים של Windows.בקובץ התצורה של אשכול המשתמשים, מגדירים את הערך של
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.16, אתם יכולים לדלג על השלב הזה.
אם אתם משתמשים בפרטי כניסה מוכנים ובמאגר פרטי עבור אשכול המשתמשים, ודאו שפרטי הכניסה למאגר הפרטי מוכנים לפני שמשדרגים את אשכול המשתמשים. במאמר הגדרת פרטי כניסה מוכנים מראש לאשכולות משתמשים מוסבר איך להכין את פרטי הכניסה למאגר הפרטי.
בתחנת העבודה של האדמין, מתחילים שדרוג אסינכרוני:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG \ --async
הפקודה הקודמת מסתיימת, ואפשר להמשיך להשתמש בתחנת העבודה של האדמין בזמן שהשדרוג מתבצע.
כדי לראות את סטטוס השדרוג:
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.כדי לקבל פרטים נוספים על התקדמות השדרוג ועל אירועים באשכול:
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
בסיום השדרוג,
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.16, אתם יכולים לדלג על השלב הזה.
אם אתם משתמשים בפרטי כניסה מוכנים ובמאגר פרטי עבור אשכול המשתמשים, ודאו שפרטי הכניסה למאגר הפרטי מוכנים לפני שמשדרגים את אשכול המשתמשים. במאמר הגדרת פרטי כניסה מוכנים מראש לאשכולות משתמשים מוסבר איך להכין את פרטי הכניסה למאגר הפרטי.
משדרגים את האשכול:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
אם אתם משדרגים לגרסה 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, אם הוא עדיין לא רשום.
מוריד ופורס חבילה של רכיבים לאשכול האדמין. הגרסה של הרכיבים תואמת לגרסה שציינתם לשדרוג. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.
כדי לשדרג אשכול משתמשים:
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את Google Cloud הפרויקט, ואז בוחרים את האשכול שרוצים לשדרג.
בחלונית פרטים, לוחצים על פרטים נוספים.
בקטע Cluster basics, לוחצים על Upgrade.
ברשימה Choose target version, בוחרים את הגרסה שאליה רוצים לשדרג. הרשימה שנאספה בקפידה מכילה רק את הגרסאות האחרונות של תיקוני האבטחה.
לוחצים על שדרוג.
לפני שמשדרגים את האשכול, מריצים בדיקות קדם-הפעלה כדי לאמת את סטטוס האשכול ואת תקינות הצמתים. אם הבדיקות המקדימות עוברות בהצלחה, האשכול של המשתמש משודרג. השדרוג נמשך כ-30 דקות.
כדי לראות את סטטוס השדרוג, לוחצים על הצגת פרטים בכרטיסייה פרטי האשכול.
CLI של gcloud
שדרוג של אשכול משתמשים מחייב שינויים מסוימים באשכול האדמין. הפקודה gcloud container vmware clusters upgrade מבצעת באופן אוטומטי את הפעולות הבאות:
רושם את אשכול האדמין ל-GKE On-Prem API, אם הוא עדיין לא רשום.
מוריד ופורס חבילה של רכיבים לאשכול האדמין. הגרסה של הרכיבים תואמת לגרסה שציינתם לשדרוג. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.
כדי לשדרג אשכול משתמשים:
מעדכנים את הרכיבים של Google Cloud CLI:
gcloud components updateכדי לקבל רשימה של גרסאות שאפשר לשדרג אליהן:
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.משדרגים את האשכול.
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
מעדכנים את הרכיבים של Google Cloud CLI:
gcloud components updateאם עדיין לא עשיתם זאת, רושמים את אשכול האדמין לממשק ה-API של GKE On-Prem. אחרי שהאשכול נרשם ל-GKE On-Prem API, לא צריך לבצע את השלב הזה שוב.
כדי לקבל רשימה של גרסאות שאפשר לשדרג אליהן:
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מורידים את הגרסה החדשה של הרכיבים ומציבים אותם באשכול האדמין:
gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=VERSION
הפקודה הזו מורידה את הגרסה של הרכיבים שצוינו ב-
--required-platform-versionאל אשכול האדמין, ואז פורסת את הרכיבים. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.בקובץ
main.tfשבו השתמשתם כדי ליצור את אשכול המשתמשים, משנים אתon_prem_versionבמשאב האשכול לגרסה החדשה.מאתחלים ויוצרים את תוכנית Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו ספק Google Cloud.
בודקים את ההגדרות ומבצעים שינויים לפי הצורך:
terraform planמחילים את תוכנית Terraform כדי ליצור את אשכול המשתמשים:
terraform apply
הסרת החבילה המלאה
אם הורדתם חבילה מלאה והפעלתם בהצלחה את gkectl prepare ושדרגתם את אשכול האדמין ואת כל אשכולות המשתמשים, כדאי למחוק את החבילה המלאה כדי לחסוך מקום בדיסק בתחנת העבודה של האדמין. מריצים את הפקודה הבאה כדי למחוק את החבילה המלאה:
rm /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION-full.tgz
המשך שדרוג של אשכול אדמין
אם שדרוג של אשכול אדמין מופסק או נכשל, אפשר להמשיך את השדרוג אם נקודת הבדיקה של אשכול האדמין מכילה את המצב שנדרש לשחזור המצב לפני ההפסקה.
אזהרה: אל תתקנו את השרת הראשי של הניהול באמצעות gkectl repair admin-master אחרי ניסיון שדרוג שנכשל. הפעולה הזו תגרום למצב לא תקין באשכול הניהול.
איך לעשות את זה?
לפני שמתחילים את ניסיון השדרוג הראשוני, בודקים אם מישור הבקרה של האדמין תקין. אבחון בעיות באשכול כמו שמוסבר בנושא הזה, מריצים את הפקודה
gkectl diagnose clusterעבור אשכול האדמין.אם מישור הבקרה של האדמין לא תקין לפני ניסיון השדרוג הראשוני, מתקנים את מישור הבקרה של האדמין באמצעות הפקודה
gkectl repair admin-master.כשמריצים מחדש את פקודת השדרוג אחרי שהשדרוג הופסק או נכשל, צריך להשתמש באותו חבילה ובאותה גרסת יעד כמו בניסיון השדרוג הקודם.
כשמריצים מחדש את פקודת השדרוג, השדרוג שחודש יוצר מחדש את מצב אשכול האדמין מנקודת הבדיקה ומריץ מחדש את השדרוג כולו. החל מגרסה 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 בנתיב לקובץ התצורה של תחנת העבודה של האדמין.
פקודת החזרה לגרסה קודמת מבצעת את השלבים הבאים:
- הורדה של הגרסה הקודמת של
gkeadm. - מגבה את ספריית הבית של תחנת העבודה הנוכחית של האדמין.
- יוצרת תחנת עבודה חדשה לאדמין באמצעות גרסת החזרה לגרסה קודמת של
gkeadm. - מוחק את תחנת האדמין המקורית.
התקנת חבילה עם גרסה אחרת לצורך שדרוג
אם משדרגים את תחנת העבודה, חבילה עם גרסה תואמת מותקנת שם כדי לשדרג את האשכולות. אם רוצים גרסה אחרת, פועלים לפי השלבים הבאים כדי להתקין חבילה ל-TARGET_VERSION, שהיא הגרסה שאליה רוצים לשדרג.
כדי לבדוק את הגרסאות הנוכחיות של
gkectlושל האשכול, מריצים את הפקודה הזו. כדי לקבל מידע מפורט יותר, משתמשים בדגל--details/-d.gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG --details
הפלט מספק מידע על גרסאות האשכול.
בהתאם לפלט שמתקבל, מחפשים את הבעיות הבאות ופותרים אותן לפי הצורך.
אם גרסת אשכול האדמין הנוכחית נמוכה ביותר מגרסה משנית אחת מהגרסה TARGET_VERSION, צריך לשדרג את כל האשכולות לגרסה משנית אחת מתחת לגרסה TARGET_VERSION.
אם הגרסה של
gkectlנמוכה מ-1.11, ואתם רוצים לשדרג לגרסה 1.12.x, תצטרכו לבצע כמה שדרוגים. משדרגים גרסה משנית אחת בכל פעם, עד שמגיעים לגרסה 1.11.x, ואז ממשיכים לפי ההוראות בנושא הזה.אם הגרסה של
gkectlנמוכה מהגרסה של TARGET_VERSION, צריך לשדרג את תחנת העבודה של האדמין לגרסה TARGET_VERSION.
אחרי שקובעים שגרסאות
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/
מתקינים את החבילה.
gkectl prepare --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz --kubeconfig ADMIN_CLUSTER_KUBECONFIG
מחליפים את ADMIN_CLUSTER_KUBECONFIG בנתיב של קובץ ה-kubeconfig. אפשר להשמיט את הדגל הזה אם הקובץ נמצא בספרייה הנוכחית ויש לו את השם
kubeconfig.מציגים רשימה של גרסאות האשכולות הזמינות, ומוודאים שגרסת היעד כלולה בגרסאות האשכולות הזמינות למשתמשים.
gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG --details
עכשיו אפשר ליצור אשכול משתמשים בגרסת היעד או לשדרג אשכול משתמשים לגרסת היעד.
פתרון בעיות בתהליך השדרוג
אם נתקלתם בבעיה במהלך תהליך השדרוג המומלץ, אתם יכולים לפעול לפי ההמלצות הבאות כדי לפתור אותה. ההצעות האלה מניחות שהתחלתם בהגדרה של גרסה 1.11.x, ושאתם ממשיכים בתהליך השדרוג המומלץ.
ראו גם: פתרון בעיות ביצירה ובשדרוג של אשכולות
פתרון בעיות בשדרוג אשכול משתמשים
נניח שאתם נתקלים בבעיה בגרסת השדרוג כשאתם משדרגים אשכול משתמשים. צוות התמיכה של Google קבע שהבעיה תיפתר בתיקון באג שיושק בקרוב. אפשר לפעול לפי השלבים הבאים:
- להמשיך להשתמש בגרסה הנוכחית לייצור.
- בודקים את גרסת התיקון באשכול שאינו בסביבת ייצור כשהיא יוצאת.
- שדרגו את כל אשכולות המשתמשים בייצור לגרסת תיקון ההפצה כשתהיו בטוחים.
- משדרגים את אשכול הניהול לגרסת הפצה של התיקון.
פתרון בעיות בשדרוג של אשכול אדמין
אם נתקלתם בבעיה בשדרוג של אשכול האדמין, אתם צריכים לפנות לתמיכה של Google כדי לפתור את הבעיה באשכול האדמין.
בינתיים, בעזרת תהליך השדרוג החדש, אתם עדיין יכולים ליהנות מתכונות חדשות של אשכולות משתמשים בלי שהשדרוג של אשכול האדמינים יחסום אתכם. כך תוכלו להפחית את תדירות השדרוג של אשכול האדמינים אם תרצו. כדי להמשיך בתהליך השדרוג:
- שדרוג אשכולות משתמשים בסביבת הייצור לגרסה 1.12.x.
- להשאיר את אשכול האדמין בגרסה הקודמת ולהמשיך לקבל תיקוני אבטחה.
- בודקים את השדרוג של אשכול הניהול מגרסה 1.11.x לגרסה 1.12.x בסביבת בדיקה, ומדווחים על בעיות אם יש כאלה.
- אם הבעיה נפתרה על ידי תיקון בגרסה 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 עומדת בתנאים הבאים:
האפשרות VMware DRS מופעלת. VMware DRS דורש מהדורת רישיון vSphere Enterprise Plus. במאמר הפעלה של VMware DRS באשכול מוסבר איך להפעיל את ה-DRS.
לשם המשתמש ב-vSphere שצוין בקובץ התצורה של פרטי הכניסה יש הרשאה
Host.Inventory.EditCluster.יש לפחות שלושה מארחים פיזיים זמינים.
אם סביבת 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.
המאמרים הבאים
מאמרי עזרה ל-CLI של gcloud
מסמכי עזר של Terraform