שדרוג מאגרי צמתים

בדף הזה מוסבר איך לשדרג את רמת הבקרה ואת מאגרי הצמתים בנפרד באשכול משתמש שנוצר באמצעות Google Distributed Cloud (תוכנה בלבד) ב-VMware. הדף הזה מיועד לאדמינים ולמפעילים של IT שמנהלים את מחזור החיים של תשתית טכנולוגית בסיסית. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן בתוכן זמין במאמר תפקידים נפוצים של משתמשים ב-GKE ומשימות. Google Cloud לפני שקוראים את המסמך הזה, חשוב לוודא שמכירים את התהליך של תכנון ושדרוג של Google Distributed Cloud, כפי שמתואר במאמרים הבאים:

מגבלות

לשדרוג מאגרי צמתים בנפרד מרמת הבקרה יש את המגבלות הבאות:

  • התכונה הזו נתמכת במאגרי צמתים של Ubuntu ו-COS, אבל לא במאגרי צמתים של Windows.

  • התכונה הזו לא זמינה כשמשדרגים אשכולות לא מתקדמים לאשכולות מתקדמים. אשכולות לא מתקדמים ישודרגו לאשכולות מתקדמים בגרסה 1.33 באופן אוטומטי.

  • גרסה 1.31: התכונה הזו לא זמינה באשכולות מתקדמים.

  • גרסה 1.32 ואילך: התכונה הזו זמינה באשכולות מתקדמים.

למה צריך לשדרג את רמת הבקרה ואת מאגרי הצמתים בנפרד?

  • אם האשכולות שלכם הם מגרסה 1.16 ומעלה, אתם יכולים לדלג על גרסה משנית כשאתם משדרגים את מאגרי הצמתים. ביצוע שדרוג של דילוג על גרסה מקצר בחצי את הזמן שיידרש לשדרוג רציף של מאגרי צמתים בשתי גרסאות. בנוסף, שדרוגים של דילוג על גרסה מאפשרים להגדיל את הזמן בין השדרוגים שנדרשים כדי להישאר בגרסה נתמכת. הפחתה במספר השדרוגים מצמצמת את השיבושים בעומס העבודה ואת זמן האימות. מידע נוסף זמין במאמר דילוג על גרסה בשדרוג מאגרי צמתים.

  • במצבים מסוימים, יכול להיות שתרצו לשדרג חלק ממאגרי הצמתים באשכול משתמשים, אבל לא את כולם. למשל:

    • אפשר קודם לשדרג את מישור הבקרה ואת מאגר הצמתים עם תנועת נתונים דלילה או עם עומסי העבודה הכי פחות קריטיים. אחרי שתהיו בטוחים שעומסי העבודה שלכם פועלים בצורה תקינה בגרסה החדשה, תוכלו לשדרג מאגרי צמתים נוספים, עד שכל מאגרי הצמתים ישודרגו.

    • במקום חלון זמן לתחזוקה גדול אחד לשדרוג האשכול, אפשר לשדרג את האשכול בכמה חלונות זמן לתחזוקה. במאמר הערכת משך הזמן הנדרש ותכנון חלון זמן לתחזוקה מוסבר איך להעריך את משך הזמן של חלון זמן לתחזוקה.

לפני שמתחילים

  1. בגרסה 1.29 ואילך, בדיקות מקדימות בצד השרת מופעלות כברירת מחדל. חשוב לבדוק את הכללים של חומת האש כדי לבצע את השינויים הנדרשים.

  2. כדי לשדרג לגרסה 1.28 ואילך, צריך להפעיל את kubernetesmetadata.googleapis.com ולהקצות את תפקיד ה-IAM‏ kubernetesmetadata.publisher לחשבון השירות של שירות הרישום ביומן והמעקב. פרטים נוספים זמינים במאמר דרישות של Google API ו-IAM.

  3. מוודאים שהגרסה הנוכחית של האשכול היא 1.14 ומעלה.

שדרוג של מישור הבקרה ושל מאגרי הצמתים שנבחרו

אפשר לשדרג את רמת הבקרה של אשכול משתמשים בנפרד ממאגרי צמתים של עובדים באמצעות gkectl,‏ Google Cloud CLI ו-Terraform. אפשר להשתמש ב-Terraform לשדרוג רק אם יצרתם את אשכול המשתמשים באמצעות Terraform.

gkectl

  1. מגדירים את גרסת המקור ואת גרסת היעד במשתני placeholder הבאים. כל הגרסאות צריכות להיות מספר הגרסה המלא בפורמט x.y.z-gke.N, למשל 1.16.11-gke.25.

    גרסה תיאור
    SOURCE_VERSION גרסת האשכול הנוכחית.
    TARGET_VERSION בוחרים את גרסת היעד. בוחרים את התיקון המומלץ מגרסת המשנה של היעד.
  2. משדרגים את תחנת העבודה של האדמין לגרסת היעד. ממתינים להודעה שמאשרת שהשדרוג בוצע בהצלחה.

  3. מייבאים את תמונות מערכת ההפעלה המתאימות אל vSphere:

    gkectl prepare \
      --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    מחליפים את ADMIN_CLUSTER_KUBECONFIG בנתיב של קובץ kubeconfig של אשכול האדמין.

  4. מבצעים את השינויים הבאים בקובץ התצורה של אשכול המשתמשים:

    • מגדירים את השדה gkeOnPremVersion לגרסת היעד TARGET_VERSION.

    • לכל מאגר צמתים שרוצים לשדרג, מגדירים את השדה nodePools.nodePool[i].gkeOnPremVersion למחרוזת ריקה.

      • בגרסה 1.28 ואילך, אפשר להאיץ את השדרוג של מאגר הצמתים על ידי הגדרת nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurge השדה לערך של מספר שלם שגדול מ-1. כשמשדרגים צמתים באמצעות maxSurge, כמה צמתים משודרגים באותו הזמן שנדרש לשדרוג צומת יחיד.
    • לכל מאגר צמתים שלא רוצים לשדרג, צריך להגדיר את 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
      ...
    
  5. משדרגים את רמת הבקרה ואת מאגרי הצמתים שנבחרו:

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG_FILE
    

    מחליפים את USER_CLUSTER_CONFIG בנתיב של קובץ התצורה של אשכול המשתמשים.

שדרוג מאגרי צמתים נוספים

בדוגמה הקודמת, נניח שהכול פועל בצורה תקינה עם pool-1, ועכשיו אתם רוצים לשדרג את pool-2.

  1. בקובץ התצורה של אשכול המשתמשים, בקטע pool-2, מגדירים את gkeOnPremVersion למחרוזת ריקה:

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: ""
      ...
    
  2. מריצים את הפקודה 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, אם הוא עדיין לא רשום.

  • מוריד ופורס חבילה של רכיבים לאשכול האדמין. הגרסה של הרכיבים תואמת לגרסה שציינתם לשדרוג. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.

שדרוג מישור הבקרה

כדי לשדרג את מישור הבקרה של אשכול המשתמשים, מבצעים את השלב הבא.

  1. מעדכנים את הרכיבים של Google Cloud CLI:

    gcloud components update
    
  2. משנים את מדיניות השדרוג באשכול:

    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.

  3. שדרוג מישור הבקרה של האשכול:

    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
    

שדרוג מאגרי צמתים

כדי לשדרג את מאגרי הצמתים אחרי שמישור הבקרה של אשכול המשתמשים שודרג:

  1. כדי לקבל רשימה של מאגרי צמתים באשכול המשתמשים:

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. מריצים את הפקודה הבאה לכל מאגר צמתים שרוצים לשדרג:

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

Terraform

  1. מעדכנים את הרכיבים של Google Cloud CLI:

    gcloud components update
    
  2. אם עדיין לא עשיתם זאת, רושמים את אשכול האדמין לממשק ה-API של GKE On-Prem. אחרי שהאשכול נרשם ל-GKE On-Prem API, לא צריך לבצע את השלב הזה שוב.

  3. מורידים את הגרסה החדשה של הרכיבים ומציבים אותם באשכול האדמין:

    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 אל אשכול האדמין, ואז פורסת את הרכיבים. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות משתמשים בגרסה הזו.

  4. בקובץ main.tf שבו השתמשתם כדי ליצור את אשכול המשתמשים, משנים את on_prem_version במשאב האשכול לגרסה החדשה.

  5. מוסיפים את השורות הבאות למשאב האשכול כדי לשדרג רק את מישור הבקרה:

    upgrade_policy {
      control_plane_only = true
    }
    
  6. מאתחלים ויוצרים את תוכנית Terraform:

    terraform init
    

    ‫Terraform מתקין את כל הספריות הנדרשות, כמו ספק Google Cloud.

  7. בודקים את ההגדרות ומבצעים שינויים לפי הצורך:

    terraform plan
    
  8. מחילים את תוכנית Terraform כדי ליצור את אשכול המשתמשים:

    terraform apply
    

שדרוג מאגרי צמתים

כדי לשדרג את מאגרי הצמתים אחרי שמישור הבקרה של אשכול המשתמשים שודרג, מבצעים את השלבים הבאים:

  1. ב-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"
    }
    
  2. מאתחלים ויוצרים את תוכנית Terraform:

    terraform init
    
  3. בודקים את ההגדרות ומבצעים שינויים לפי הצורך:

    terraform plan
    
  4. מחילים את תוכנית Terraform כדי ליצור את אשכול המשתמשים:

    terraform apply
    

פתרון בעיות

אם נתקלתם בבעיה אחרי שדרוג של מאגר צמתים, אתם יכולים לחזור לגרסה הקודמת. מידע נוסף זמין במאמר בנושא חזרה לגרסה קודמת של מאגר צמתים אחרי שדרוג.