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

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

    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:

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

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

    terraform apply
    

פתרון בעיות

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