במאמר הזה מוסבר איך לשדרג אשכולות ב-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חייבת להיות זהה לגרסה של תוכנת 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גרסאות תיקון לא משנות. לדוגמה, אפשר להשתמש בגרסהgkectlversion 1.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, המסוף או ה-CLI של gcloud, stackdriver מופעל באופן אוטומטי. Google Cloud
הפעלת 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 APIs ומכתובות אחרות לעבור דרך שרת ה-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 כדי לשדרג אשכול משתמשים, ואתם לא בעלי הפרויקט, אתם צריכים לקבל את תפקיד ניהול הזהויות וגישת המשתמשים 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.
אם קובץ פרטי הפלט חסר, אפשר ליצור אותו מחדש. איך יוצרים מחדש קובץ מידע אם הוא חסר
שדרוג
כדי לשדרג את תחנת העבודה של האדמין:
בודקים את השדה
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בקובץ ההגדרה של אשכול האדמין תואם לנתיב של חבילת ה-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מוציאה פלט של הודעות סטטוס לתחנת העבודה של האדמין במהלך השדרוג.
שדרוג אסינכרוני
בתחנת העבודה של האדמין, מתחילים שדרוג אסינכרוני:
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE \ --reuse-bootstrap-cluster \ --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.35.100-gke.72
הערכים האפשריים של
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.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 התמיכה לקבלת עזרה נוספת.
שדרוג סינכרוני
מריצים את הפקודה הבאה:
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עם הפקודה.אם אתם משדרגים לגרסה 1.14.0 ומעלה, נוצר קובץ kubeconfig חדש עבור אשכול האדמין, שמחליף כל קובץ קיים. כדי להציג את פרטי האשכול בקובץ, מריצים את הפקודה הבאה:
kubectl config view --kubeconfig ADMIN_CLUSTER_KUBECONFIG
gcloud
משדרגים את אשכול האדמין באמצעות gcloud CLI.
מעדכנים את גרסת הפלטפורמה לגרסת היעד:
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.35.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.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.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:
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 (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 עומדת בתנאים הבאים:
האפשרות 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