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

כשמשדרגים בנפרד את מישור הבקרה ואת מאגרי הצמתים של העובדים באשכול משתמשים של תוכנת Google Distributed Cloud ל-VMware בלבד, אפשר לאמת את התאימות של עומסי העבודה במאגרי צמתים נפרדים ולפרוס את השדרוגים על פני חלונות זמן קצרים יותר לתחזוקה.

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

מגבלות

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

  • התכונה הזו נתמכת במאגרי צמתים של Ubuntu ושל מערכת הפעלה שמותאמת לקונטיינרים, אבל לא במאגרי צמתים של Windows.

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

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

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

  • גרסת מאגר הצמתים של מאזן העומסים חייבת להיות זהה לגרסת האשכול. אי אפשר לשדרג מאגר צמתים של מאזן עומסים (מאגר צמתים עם enableLoadBalancer: true) בנפרד ממישור הבקרה, ואי אפשר להשתמש בגרסאות שונות.

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

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

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

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

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

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

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

  2. כדי לשדרג לגרסה 1.28 ואילך, צריך להפעיל את kubernetesmetadata.googleapis.com ולהקצות את התפקיד kubernetesmetadata.publisher ב-IAM לחשבון השירות של רישום ביומן ומעקב. לפרטים נוספים, קראו את המאמר הדרישות של 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[i].gkeOnPremVersion כמחרוזת ריקה.

      • בגרסה 1.28 ואילך, אפשר להאיץ את השדרוג של מאגר הצמתים על ידי הגדרת nodePools[i].updateStrategy.rollingUpdate.maxSurge field לערך שלם שגדול מ-1. כשמשדרגים צמתים באמצעות maxSurge, כמה צמתים משודרגים באותו משך זמן שנדרש לשדרוג צומת אחד.
    • לכל מאגר צמתים שאתם לא רוצים לשדרג, מגדירים את nodePools[i].gkeOnPremVersion לגרסת המקור, SOURCE_VERSION. שימו לב שאי אפשר לעכב מאגרי צמתים של מאזני עומסים (מאגרי צמתים עם enableLoadBalancer: true). הגרסה שלהם צריכה להתאים לגרסת האשכול.

    בדוגמה הבאה מוצג חלק מקובץ התצורה של אשכול המשתמש. הוא מציין שמישור הבקרה ו-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. מעדכנים את הרכיבים של ה-CLI של gcloud:

    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: האזור Google Cloud שבו פועל GKE On-Prem API ושבו מאוחסנים המטא-נתונים שלו. אם יצרתם את האשכול באמצעות לקוח API של GKE On-Prem, זה האזור שבחרתם כשיצרתם את האשכול. אם יצרתם את האשכול באמצעות 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. מעדכנים את הרכיבים של ה-CLI של gcloud:

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

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

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=TARGET_VERSION
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫ADMIN_CLUSTER_NAME: השם של אשכול האדמין.

    • ‫PROJECT_ID: המזהה של פרויקט המארח של ה-Fleet שאשכול המשתמש שייך אליו. זה הפרויקט שציינתם כשהאשכול נוצר. אם יצרתם את האשכול באמצעות gkectl, זהו מזהה הפרויקט בשדה gkeConnect.projectID בקובץ התצורה של האשכול.

    • ‫REGION: האזור Google Cloud שבו פועל GKE On-Prem API ושבו מאוחסנים המטא-נתונים שלו. אם יצרתם את האשכול באמצעות לקוח API של GKE On-Prem, זה האזור שבחרתם כשיצרתם את האשכול. אם יצרתם את האשכול באמצעות 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 = false
    }
    on_prem_version = "1.16.0-gke.0"
    }
    
  2. מאתחלים ויוצרים את התוכנית ב-Terraform:

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

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

    terraform apply
    

פתרון בעיות

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