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

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

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

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

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

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

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

    המסוף

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

    gcloud

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

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

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

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

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

הגבלות

  • בקשות לעדכון מכונות באמצעות ה-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.
  • אם מעדכנים משאב שמשמש את המכונה, משתמשים בפקודה כדי לעדכן את המשאב הזה במקום לעדכן את מאפייני המכונה, לדוגמה:
    • אפשר לשנות דיסקים באמצעות ה-method‏ disks.update
    • כדי לשנות את הרשת שבה המכונה משתמשת, אתם יכולים להשתמש ב-method‏ instances.updateNetworkInterface, שלא מחייב את עצירת המכונה.

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

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

  • ‫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: כל מאפייני התזמון, חוץ מהמאפיינים הבאים:
    • השדה scheduling.nodeAffinities
    • השדה scheduling.availabilityDomain כשמצרפים או מסירים בו-זמנית מדיניות למיקום מרווח באותה בקשת עדכון
  • serviceAccounts
  • shieldedInstanceConfig
  • threadsPerCore
  • visibleCoreCount

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

  • canIpForward
  • deletionProtection
  • description
  • disks: מאפיינים של דיסק שאינו דיסק אתחול, למעט deviceName
  • labels
  • metadata
  • nodeAffinities
  • ‫resourcePolicies: אם המדיניות מציינת שני דומיינים או יותר של זמינות
  • ‫scheduling.availabilityDomain: עדכונים בשדה הזה כשמצרפים בו-זמנית מדיניות למיקום מרווח למכונה, או ניקוי השדה כשמסירים מדיניות למיקום מרווח ממכונה, באותה בקשת עדכון
  • 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.s3nsapis.fr/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.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

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

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

    הבקשה הזו מחזירה הגדרה של משאב מכונה.

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

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

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

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

    PUT https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=NO_EFFECT
    
    {
      ...
      "machineType": "https://www.s3nsapis.fr/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.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=ALLOWED_ACTION
    
    {
      ...
      "machineType": "https://www.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

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

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

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

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