עדכון מאפייני המכונה

אפשר להשתמש בבקשה אחת מ-Google Cloud CLI או מ-Compute Engine API כדי לעדכן כמה מאפיינים של מכונה וירטואלית, ובאופן אופציונלי להפעיל מחדש את המכונה אם צריך. השיטה update מטפלת בלוגיקה של אימות מאפייני המכונה המעודכנים ומוודאת שהמשאבים הדרושים זמינים כדי להשלים את העדכון בהצלחה. אם הבקשה כוללת מאפיינים לא חוקיים או אם המשאבים המבוקשים לא זמינים, הבקשה מחזירה שגיאה ולא מתבצעים שינויים במכונה. כך המכונה מוגנת מפני עדכונים חלקיים, וגם מפני עצירה וחוסר יכולת לגשת למשאבים כדי להתחיל מחדש.

כדי לעדכן את ממשקי הרשת (networkInterfaces) של מכונה, אפשר לעיין במאמר עדכון ממשקי הרשת של מכונה.

כדי להוסיף או להסיר ממשקי רשת דינמיים ממופע, צריך להשתמש בהליכים הבאים במקום לעדכן את מאפייני המופע:

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

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

הגבלות

  • בקשות לעדכון מופעים דרך ה-CLI של gcloud או Compute Engine API לא תומכות בסמנטיקה של PATCH. משאב המופע בבקשת העדכון חייב לכלול את כל המאפיינים של המופע. נכסים שחסרים בהגדרת המופע בבקשת העדכון נחשבים כנמחקים מהמופע.
  • אפשר לעדכן רק רשימה ספציפית של נכסים.
  • אם למכונה מצורפים דיסקים מסוג SSD מקומי, אי אפשר לעדכן מאפיינים שדורשים הפעלה מחדש של המכונה בזמן שהיא פועלת. אתם יכולים למחוק את המכונה וליצור אותה מחדש, או לעצור את המכונה, לעדכן את המאפיינים ולהפעיל אותה מחדש.
  • אפשר לעדכן את המאפיין networkInterfaces של מכונה, אבל אי אפשר להוסיף כרטיסי רשת וירטואליים (vNIC) למכונה או להסיר ממנה כרטיסי רשת וירטואליים.
  • אם במכונה נעשה שימוש במשאבים שזמינים רק בגרסת הבטא של Compute Engine API, צריך להשתמש בגרסה הנכונה של השיטה instances.update כדי לעדכן את המאפיינים האלה. לדוגמה, אם יוצרים מכונה באמצעות גרסת הבטא של Compute Engine API ומגדירים את המכונה עם משאב שרק גרסת הבטא של ה-API מזהה, צריך להשתמש גם בגרסת הבטא של השיטה instances.update כדי לעדכן את המשאבים האלה. גרסה 1 של השיטה instances.update לא מזהה את משאבי הבטא שבהם המכונה משתמשת, ולכן היא מוחקת את משאבי הבטא האלה מהגדרת המכונה במהלך תהליך העדכון. ההתנהגות הזו רלוונטית גם למשאבים ב-API בגרסת אלפא.

הרשאות

כדי לעדכן מכונות, צריכה להיות לכם ההרשאה compute.instances.update. ההרשאה הזו כלולה בכמה תפקידים קיימים בניהול זהויות והרשאות גישה (IAM). צריכה להיות לכם גם הרשאה להשתמש במשאבים שאתם רוצים לשנות במכונה. לדוגמה, כדי להוסיף דיסק למכונה, אתם צריכים את ההרשאות הבאות:

  • הרשאת compute.instances.update במכונה שרוצים לעדכן.
  • הרשאת compute.disks.use לדיסק קיים, או הרשאת compute.disks.create בפרויקט שבו רוצים ליצור דיסק חדש.

שיטות מומלצות

כדי לוודא שממשק העדכון של המופע פועל בצורה הכי יעילה בשבילכם, כדאי לפעול לפי השיטות המומלצות הבאות:

  • אם אפשר, כדאי להשתמש באופן עקבי באותה גרסה של Compute Engine API כדי ליצור, להגדיר ולעדכן מכונות. כך תוכלו לעדכן ולשנות משאבים של מופעים אם הם זמינים רק בגרסה אחת של ה-API.
  • אפשר להשתמש ב-instances.update כדי לעדכן מופעים בקבוצת מופעי מכונה מנוהלים (MIG), אבל ברוב המקרים עדיף לשנות את התבנית של הגדרות המכונה של הקבוצה ולהשיק את העדכון הזה ל-MIG.
  • אם מעדכנים משאב שנמצא בשימוש על ידי המכונה, צריך להשתמש בפקודה כדי לעדכן את המשאב הזה במקום לעדכן את מאפייני המכונה. לדוגמה:
    • אפשר לשנות דיסקים באמצעות השיטה disks.update
    • כדי לשנות את הרשת שבה המכונה משתמשת, אפשר להשתמש בשיטה instances.updateNetworkInterface, שלא דורשת עצירה של המכונה.

מאפיינים שאפשר לעדכן

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

  • ‫NO_EFFECT: בקשת העדכון בודקת אם הבקשה תקינה ואם המשאבים זמינים, אבל לא מבצעת את העדכון. אפשר להשתמש בפעולה הזו כדי לבדוק פקודות בלי להפעיל עדכונים בפועל.
  • ‫REFRESH: בקשת העדכון מופעלת רק אם מאפייני המופע ששונו לא מחייבים הפעלה מחדש של המופע. אם הבקשה תקינה אבל נדרשת הפעלה מחדש, הבקשה תחזיר שגיאת INFEASIBLE.
  • ‫RESTART: אם העדכון דורש הפעלה מחדש של המכונה, המערכת תפעיל אותה מחדש.

כדי לעדכן את המאפיינים הבאים, צריך להפעיל מחדש את המחשב (RESTART):

  • ‫disks: דיסקי אתחול, כולל כל הדיסקים (disks.deviceName)
  • displayDevice
  • enableNestedVirtualization
  • guestAccelerators
  • machineType
  • minCpuPlatform
  • networkInterfaces
  • networkPerformanceConfig
  • performanceMonitoringUnit
  • ‫reservationAffinity: אפשר לעדכן את האופן שבו המכונה צורכת את המקומות השמורים (reservationAffinity.consumeReservationType) רק באופן הבא:
    • מצריכת הזמנות תואמות (ANY_RESERVATION) לאי צריכת הזמנות (NO_RESERVATION)
    • מאי צריכת הזמנות (NO_RESERVATION) לצריכת הזמנות תואמות (ANY_RESERVATION)
  • resourcePolicies
  • scheduling
  • serviceAccounts
  • shieldedInstanceConfig
  • threadsPerCore
  • visibleCoreCount

כדי לעדכן את המאפיינים הבאים, צריך רק לרענן את הדף (REFRESH):

  • canIpForward
  • deletionProtection
  • description
  • ‫disks: מאפיינים של דיסק שאינו דיסק אתחול, לא כולל deviceName
  • labels
  • metadata
  • nodeAffinities
  • tags

עדכון מאפייני המכונה

כדי לעדכן את המכונות:

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

המערכת מתחילה את תהליך העדכון רק אם הבקשה שלכם עומדת בדרישות הבאות:

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

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

אפשר להתחיל עדכונים באמצעות ה-CLI של gcloud או Compute Engine API.

gcloud

  1. משתמשים בפקודה instances export כדי לייצא את מאפייני המופע הקיים:

    gcloud compute instances export INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --destination=FILE_PATH
    

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

    • ‫INSTANCE_NAME: שם המכונה שרוצים לייצא.
    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫FILE_PATH: נתיב הפלט שבו רוצים לשמור את קובץ התצורה של המכונה בתחנת העבודה המקומית.
  2. משתמשים בכלי לעריכת טקסט כדי לשנות מאפיין אחד או יותר בקובץ התצורה של המופע המיוצא. כדי לדעת אילו נכסים אפשר לעדכן, אפשר לעיין ברשימת הנכסים שאפשר לעדכן במסמך הזה. לדוגמה, כדי לשנות את סוג המכונה של המכונה, משנים את המאפיין machineType:

    ...
    machineType: https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE
    ...
    

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

    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫MACHINE_TYPE: סוג המכונה של המופע, לדוגמה, n1-standard-2.
  3. משתמשים בפקודה instances update-from-file כדי להריץ עדכון ניסיון של מכונת היעד. מציינים את הדגל --most-disruptive-allowed-action=NO_EFFECT. בתשובה מפורטים נכסים שההגדרה שלהם שגויה, ומצוין אם נדרשת פעולה מסוג RESTART או REFRESH כדי להחיל את העדכון.

    gcloud compute instances update-from-file INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action NO_EFFECT
    

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

    • ‫INSTANCE_NAME: השם של המופע שרוצים לייצא.
    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫FILE_PATH: הנתיב לקובץ התצורה של המופע ששונה בתחנת העבודה המקומית.
  4. משתמשים בפקודה instances update-from-file כדי לעדכן את מכונת היעד. אם מעדכנים נכס שנדרשת הפעלה מחדש של המופע, צריך לכלול את הדגל --most-disruptive-allowed-action=RESTART. אם לא צריך להפעיל מחדש את המחשב כדי שהמאפיינים ייכנסו לתוקף, מציינים את הדגל --most-disruptive-allowed-action=REFRESH. כדי לדעת אילו מאפיינים דורשים הפעלה מחדש, עיינו ברשימת המאפיינים שניתנים לעדכון במאמר הזה.

    gcloud compute instances update-from-file INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action ALLOWED_ACTION
    

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

    • ‫INSTANCE_NAME: השם של המופע שרוצים לייצא.
    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫FILE_PATH: הנתיב לקובץ התצורה של המופע ששונה בתחנת העבודה המקומית.
    • ‫ALLOWED_ACTION: מגדיר את מידת השיבוש שהעדכון עלול לגרום. מציינים את הערך RESTART כדי לאפשר הפעלה מחדש מלאה של המכונה. מציינים REFRESH כדי לעדכן את המופע רק אם המאפיינים ששונו לא מחייבים הפעלה מחדש של המופע.

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

REST

  1. כדי לייצא את המאפיינים של המכונה הקיימת, משתמשים ב-method‏ instances.get ב-Compute Engine API:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

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

    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫INSTANCE_NAME: השם של המופע שרוצים לייצא.

    הבקשה הזו מחזירה הגדרה של מקור מידע של מופע.

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

    {
      ...
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
      ...
    }
    

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

    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫MACHINE_TYPE: סוג המכונה של המופע, לדוגמה, n1-standard-2.
  3. משתמשים בשיטה instances.update ב-Compute Engine API ומציינים את פרמטר השאילתה mostDisruptiveAllowedAction=NO_EFFECT כדי להריץ עדכון בדיקה של מכונת היעד. התגובה מזהה מאפיינים שהוגדרו באופן שגוי ומציינת אם נדרשת פעולת RESTART או REFRESH כדי להחיל את העדכון.

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=NO_EFFECT
    
    {
      ...
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

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

    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫INSTANCE_NAME: השם של המופע שרוצים לייצא.
  4. משתמשים ב-method‏ instances.update ב-Compute Engine API כדי לעדכן את מכונת היעד. אם אתם מעדכנים מאפיין שמחייב הפעלה מחדש של המכונה, צריך לכלול את פרמטר השאילתה mostDisruptiveAllowedAction=RESTART כדי לציין שאפשר להפעיל מחדש את המכונה במהלך העדכון. אם לא צריך להפעיל מחדש את המאפיינים, מציינים את פרמטר השאילתה mostDisruptiveAllowedAction=REFRESH. כדי לדעת אילו מאפיינים דורשים הפעלה מחדש, אפשר לעיין ברשימת המאפיינים שניתנים לעדכון במסמך הזה. צריך לכלול את כל הגוף של משאב המכונה ששיניתם. בדוגמה הבאה, גוף הבקשה משנה את סוג המכונה ל-n1-standard-2:

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=ALLOWED_ACTION
    
    {
      ...
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

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

    • ‫PROJECT_ID: מזהה הפרויקט של הבקשה הזו.
    • ‫ZONE: האזור של המכונה הזו.
    • ‫INSTANCE_NAME: השם של המופע שרוצים לייצא.
    • ‫ALLOWED_ACTION: מגדיר את מידת השיבוש שהעדכון עלול לגרום. מציינים את הערך RESTART כדי לאפשר הפעלה מחדש מלאה של המכונה. מציינים את הערך REFRESH כדי לעדכן את המכונה רק אם המאפיינים ששונו לא מחייבים הפעלה מחדש של המכונה.

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

המאמרים הבאים