בדף הזה מוסבר איך לשדרג את רמת הבקרה ואת מאגרי הצמתים בנפרד באשכול משתמש שנוצר באמצעות Google Distributed Cloud (תוכנה בלבד) ב-VMware. הדף הזה מיועד לאדמינים של IT ולמפעילים שמנהלים את מחזור החיים של התשתית הטכנית הבסיסית. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Google Cloud תוכן, זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE. לפני שקוראים את המסמך הזה, חשוב לוודא שאתם מכירים את התהליך של תכנון ושדרוג של 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:
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:
terraform initבודקים את ההגדרות ומבצעים שינויים לפי הצורך:
terraform planמחילים את התוכנית של Terraform כדי ליצור את אשכול המשתמשים:
terraform apply
פתרון בעיות
אם נתקלתם בבעיה אחרי שדרוג של מאגר צמתים, אתם יכולים לחזור לגרסה הקודמת. מידע נוסף זמין במאמר חזרה לגרסה קודמת של מאגר צמתים אחרי שדרוג.