בדף הזה מוסבר איך לשדרג את רמת הבקרה ואת מאגרי הצמתים בנפרד באשכול משתמש שנוצר באמצעות Google Distributed Cloud (תוכנה בלבד) ב-VMware. הדף הזה מיועד לאדמינים ולמפעילים של IT שמנהלים את מחזור החיים של תשתית טכנולוגית בסיסית. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן בתוכן זמין במאמר תפקידים נפוצים של משתמשים ב-GKE ומשימות. Google Cloud לפני שקוראים את המסמך הזה, חשוב לוודא שמכירים את התהליך של תכנון ושדרוג של Google Distributed Cloud, כפי שמתואר במאמרים הבאים:
מגבלות
לשדרוג מאגרי צמתים בנפרד מרמת הבקרה יש את המגבלות הבאות:
התכונה הזו נתמכת במאגרי צמתים של Ubuntu ו-COS, אבל לא במאגרי צמתים של Windows.
התכונה הזו לא זמינה כשמשדרגים אשכולות לא מתקדמים לאשכולות מתקדמים. אשכולות לא מתקדמים ישודרגו לאשכולות מתקדמים בגרסה 1.33 באופן אוטומטי.
גרסה 1.31: התכונה הזו לא זמינה באשכולות מתקדמים.
גרסה 1.32 ואילך: התכונה הזו זמינה באשכולות מתקדמים.
למה צריך לשדרג את רמת הבקרה ואת מאגרי הצמתים בנפרד?
אם האשכולות שלכם הם מגרסה 1.16 ומעלה, אתם יכולים לדלג על גרסה משנית כשאתם משדרגים את מאגרי הצמתים. ביצוע שדרוג של דילוג על גרסה מקצר בחצי את הזמן שיידרש לשדרוג רציף של מאגרי צמתים בשתי גרסאות. בנוסף, שדרוגים של דילוג על גרסה מאפשרים להגדיל את הזמן בין השדרוגים שנדרשים כדי להישאר בגרסה נתמכת. הפחתה במספר השדרוגים מצמצמת את השיבושים בעומס העבודה ואת זמן האימות. מידע נוסף זמין במאמר דילוג על גרסה בשדרוג מאגרי צמתים.
במצבים מסוימים, יכול להיות שתרצו לשדרג חלק ממאגרי הצמתים באשכול משתמשים, אבל לא את כולם. למשל:
אפשר קודם לשדרג את מישור הבקרה ואת מאגר הצמתים עם תנועת נתונים דלילה או עם עומסי העבודה הכי פחות קריטיים. אחרי שתהיו בטוחים שעומסי העבודה שלכם פועלים בצורה תקינה בגרסה החדשה, תוכלו לשדרג מאגרי צמתים נוספים, עד שכל מאגרי הצמתים ישודרגו.
במקום חלון זמן לתחזוקה גדול אחד לשדרוג האשכול, אפשר לשדרג את האשכול בכמה חלונות זמן לתחזוקה. במאמר הערכת משך הזמן הנדרש ותכנון חלון זמן לתחזוקה מוסבר איך להעריך את משך הזמן של חלון זמן לתחזוקה.
לפני שמתחילים
בגרסה 1.29 ואילך, בדיקות מקדימות בצד השרת מופעלות כברירת מחדל. חשוב לבדוק את הכללים של חומת האש כדי לבצע את השינויים הנדרשים.
כדי לשדרג לגרסה 1.28 ואילך, צריך להפעיל את
kubernetesmetadata.googleapis.comולהקצות את תפקיד ה-IAMkubernetesmetadata.publisherלחשבון השירות של שירות הרישום ביומן והמעקב. פרטים נוספים זמינים במאמר דרישות של Google API ו-IAM.מוודאים שהגרסה הנוכחית של האשכול היא 1.14 ומעלה.
שדרוג של מישור הבקרה ושל מאגרי הצמתים שנבחרו
אפשר לשדרג את רמת הבקרה של אשכול משתמשים בנפרד ממאגרי צמתים של עובדים באמצעות gkectl, Google Cloud CLI ו-Terraform.
אפשר להשתמש ב-Terraform לשדרוג רק אם יצרתם את אשכול המשתמשים באמצעות Terraform.
gkectl
מגדירים את גרסת המקור ואת גרסת היעד במשתני placeholder הבאים. כל הגרסאות צריכות להיות מספר הגרסה המלא בפורמט
x.y.z-gke.N, למשל1.16.11-gke.25.גרסה תיאור SOURCE_VERSIONגרסת האשכול הנוכחית. TARGET_VERSIONבוחרים את גרסת היעד. בוחרים את התיקון המומלץ מגרסת המשנה של היעד. משדרגים את תחנת העבודה של האדמין לגרסת היעד. ממתינים להודעה שמאשרת שהשדרוג בוצע בהצלחה.
מייבאים את תמונות מערכת ההפעלה המתאימות אל vSphere:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
מחליפים את
ADMIN_CLUSTER_KUBECONFIGבנתיב של קובץkubeconfigשל אשכול האדמין.מבצעים את השינויים הבאים בקובץ התצורה של אשכול המשתמשים:
מגדירים את השדה
gkeOnPremVersionלגרסת היעדTARGET_VERSION.לכל מאגר צמתים שרוצים לשדרג, מגדירים את השדה
nodePools.nodePool[i].gkeOnPremVersionלמחרוזת ריקה.- בגרסה 1.28 ואילך, אפשר להאיץ את השדרוג של מאגר הצמתים על ידי הגדרת
nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurgeהשדה לערך של מספר שלם שגדול מ-1. כשמשדרגים צמתים באמצעותmaxSurge, כמה צמתים משודרגים באותו הזמן שנדרש לשדרוג צומת יחיד.
- בגרסה 1.28 ואילך, אפשר להאיץ את השדרוג של מאגר הצמתים על ידי הגדרת
לכל מאגר צמתים שלא רוצים לשדרג, צריך להגדיר את
nodePools.nodePool[i].gkeOnPremVersionלגרסת המקור,SOURCE_VERSION.
בדוגמה הבאה מוצג חלק מקובץ ההגדרות של אשכול המשתמשים. הוא מציין שרמת הבקרה ו-
pool-1ישודרגו לגרסהTARGET_VERSION, אבלpool-2יישארו בגרסהSOURCE_VERSION.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...משדרגים את רמת הבקרה ואת מאגרי הצמתים שנבחרו:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
מחליפים את
USER_CLUSTER_CONFIGבנתיב של קובץ התצורה של אשכול המשתמשים.
שדרוג מאגרי צמתים נוספים
בדוגמה הקודמת, נניח שהכול פועל בצורה תקינה עם pool-1, ועכשיו אתם רוצים לשדרג את pool-2.
בקובץ התצורה של אשכול המשתמשים, בקטע
pool-2, מגדירים אתgkeOnPremVersionלמחרוזת ריקה:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...מריצים את הפקודה
gkectl update clusterכדי להחיל את השינוי:gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
CLI של gcloud
שדרוג של אשכול משתמשים מחייב שינויים מסוימים באשכול האדמין. הפקודה gcloud container vmware clusters upgrade מבצעת באופן אוטומטי את הפעולות הבאות:
רושם את אשכול האדמין ל-GKE On-Prem API, אם הוא עדיין לא רשום.
מוריד ופורס חבילה של רכיבים לאשכול האדמין. הגרסה של הרכיבים תואמת לגרסה שציינתם לשדרוג. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.
שדרוג מישור הבקרה
כדי לשדרג את מישור הבקרה של אשכול המשתמשים, מבצעים את השלב הבא.
מעדכנים את הרכיבים של Google Cloud CLI:
gcloud components updateמשנים את מדיניות השדרוג באשכול:
gcloud container vmware clusters update USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --upgrade-policy control-plane-only=True
מחליפים את מה שכתוב בשדות הבאים:
USER_CLUSTER_NAME: השם של אשכול המשתמשים שרוצים לשדרג.
PROJECT_ID: המזהה של פרויקט המארח של ה-Fleet שאליו משויך אשכול המשתמשים. זה הפרויקט שציינתם כשנוצר האשכול. אם יצרתם את האשכול באמצעותgkectl, זהו מזהה הפרויקט בשדהgkeConnect.projectIDבקובץ התצורה של האשכול.
REGION: האזור שבו פועל GKE On-Prem API ושבו מאוחסנים המטא-נתונים שלו. Google Cloud אם יצרתם את האשכול באמצעות לקוח GKE On-Prem API, זהו האזור שבחרתם כשיצרתם את האשכול. אם יצרתם את האשכול באמצעותgkectl, זהו האזור שציינתם כשירשתם את האשכול ב-GKE On-Prem API.
שדרוג מישור הבקרה של האשכול:
gcloud container vmware clusters upgrade USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
מחליפים את
TARGET_VERSIONבגרסה שאליה רוצים לשדרג. בוחרים את התיקון המומלץ מגרסת המשנה של היעד.הפלט של הפקודה אמור להיראות כך:
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
שדרוג מאגרי צמתים
כדי לשדרג את מאגרי הצמתים אחרי שמישור הבקרה של אשכול המשתמשים שודרג:
כדי לקבל רשימה של מאגרי צמתים באשכול המשתמשים:
gcloud container vmware node-pools list --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION
מריצים את הפקודה הבאה לכל מאגר צמתים שרוצים לשדרג:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
Terraform
מעדכנים את הרכיבים של Google Cloud CLI:
gcloud components updateאם עדיין לא עשיתם זאת, רושמים את אשכול האדמין לממשק ה-API של GKE On-Prem. אחרי שהאשכול נרשם ל-GKE On-Prem API, לא צריך לבצע את השלב הזה שוב.
מורידים את הגרסה החדשה של הרכיבים ומציבים אותם באשכול האדמין:
gcloud vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=TARGET_VERSION
מחליפים את מה שכתוב בשדות הבאים:
USER_CLUSTER_NAME: השם של אשכול המשתמשים שרוצים לשדרג.
PROJECT_ID: המזהה של פרויקט המארח של ה-Fleet שאליו משויך אשכול המשתמשים. זה הפרויקט שציינתם כשנוצר האשכול. אם יצרתם את האשכול באמצעותgkectl, זהו מזהה הפרויקט בשדהgkeConnect.projectIDבקובץ התצורה של האשכול.
REGION: האזור שבו פועל GKE On-Prem API ושבו מאוחסנים המטא-נתונים שלו. Google Cloud אם יצרתם את האשכול באמצעות לקוח GKE On-Prem API, זהו האזור שבחרתם כשיצרתם את האשכול. אם יצרתם את האשכול באמצעותgkectl, זהו האזור שציינתם כשירשתם את האשכול ב-GKE On-Prem API.
TARGET_VERSION: הגרסה שאליה רוצים לשדרג. בוחרים את התיקון המומלץ מגרסת המשנה של היעד.
הפקודה הזו מורידה את הגרסה של הרכיבים שצוינו ב-
--required-platform-versionאל אשכול האדמין, ואז פורסת את הרכיבים. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.בקובץ
main.tfשבו השתמשתם כדי ליצור את אשכול המשתמשים, משנים אתon_prem_versionבמשאב האשכול לגרסה החדשה.מוסיפים את השורות הבאות למשאב האשכול כדי לשדרג רק את מישור הבקרה:
upgrade_policy { control_plane_only = true }מאתחלים ויוצרים את תוכנית Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו ספק Google Cloud.
בודקים את ההגדרות ומבצעים שינויים לפי הצורך:
terraform planמחילים את תוכנית Terraform כדי ליצור את אשכול המשתמשים:
terraform apply
שדרוג מאגרי צמתים
כדי לשדרג את מאגרי הצמתים אחרי שמישור הבקרה של אשכול המשתמשים שודרג, מבצעים את השלבים הבאים:
ב-
main.tfבמשאב של כל מאגר צמתים שרוצים לשדרג, מוסיפים את הפרטים הבאים:on_prem_version = "TARGET_VERSION"
לדוגמה:
resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" { name = "my-nodepool" location = "us-west1" vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name config { replicas = 3 image_type = "ubuntu_containerd" enable_load_balancer = true } on_prem_version = "1.16.0-gke.0" }מאתחלים ויוצרים את תוכנית Terraform:
terraform initבודקים את ההגדרות ומבצעים שינויים לפי הצורך:
terraform planמחילים את תוכנית Terraform כדי ליצור את אשכול המשתמשים:
terraform apply
פתרון בעיות
אם נתקלתם בבעיה אחרי שדרוג של מאגר צמתים, אתם יכולים לחזור לגרסה הקודמת. מידע נוסף זמין במאמר בנושא חזרה לגרסה קודמת של מאגר צמתים אחרי שדרוג.