במאמר הזה נסביר איך למנוע ממכונות Compute Engine לצרוך הזמנות. מידע נוסף על הזמנות זמין במאמר בנושא איך מבקשים מקום שמור למשאבים של תחום מוגדר ב-Compute Engine.
הזמנות שנעשה בהן שימוש באופן אוטומטי מאפשרות למופעים עם מאפיינים שתואמים להזמנות להשתמש בהן באופן אוטומטי. כדי למנוע ממקרים מסוימים לצרוך הזמנה, אפשר לבצע אחת מהפעולות הבאות:
כדי להגדיר את המכונות כך שלא יצרכו הזמנות, פועלים לפי ההוראות במסמך הזה.
יצירה או עדכון של מקרים עם מאפיינים שלא תואמים להזמנה.
אתם יכולים להימנע משימוש בשריון כשאתם רוצים להשתמש במופעים שלכם למשימות כמו בדיקה, ניפוי באגים או פריסות מבודדות.
מגבלות
אפשר לעדכן מופע קיים כך שלא ינצל שריונים רק אם המופע מוגדר לנצל אוטומטית שריונים תואמים.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
המשך
כדי להשתמש בדוגמאות של Go שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
כדי להשתמש בדוגמאות של Java שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
כדי להשתמש בדוגמאות של Node.js שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות כדי למנוע ממכונת Compute לצרוך הזמנות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין מכונות של Compute (v1) (roles/compute.instanceAdmin.v1) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות כדי למנוע ממכונת Compute לצרוך הזמנות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי למנוע ממכונת חישוב לצרוך מקומות שמורים, צריך את ההרשאות הבאות:
-
כדי ליצור הזמנות:
compute.reservations.createבפרויקט -
כדי ליצור מופעים:
-
compute.instances.createבפרויקט - כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM):
compute.images.useReadOnlyבקובץ אימג' - כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית:
compute.snapshots.useReadOnlyבקובץ ה-snapshot - כדי להשתמש בתבנית של הגדרות מכונה ליצירת המכונה הווירטואלית:
compute.instanceTemplates.useReadOnlyבתבנית של הגדרות המכונה - כדי להקצות רשת מדור קודם למכונה הווירטואלית:
compute.networks.useבפרויקט - כדי לציין כתובת IP סטטית למכונה הווירטואלית:
compute.addresses.useבפרויקט - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם:
compute.networks.useExternalIpבפרויקט - כדי לציין רשת משנה למכונה הווירטואלית:
compute.subnetworks.useבפרויקט או ברשת המשנה שנבחרה - כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC:
compute.subnetworks.useExternalIpבפרויקט או ברשת המשנה שנבחרה - כדי להגדיר מטא-נתונים של המכונה הווירטואלית:
compute.instances.setMetadataבפרויקט - כדי להגדיר תגים למכונה הווירטואלית:
compute.instances.setTagsבמכונה הווירטואלית - כדי להגדיר תוויות למכונה הווירטואלית:
compute.instances.setLabelsבמכונה הווירטואלית - כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית:
compute.instances.setServiceAccountבמכונה הווירטואלית - כדי ליצור דיסק חדש למכונה הווירטואלית:
compute.disks.createבפרויקט - כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה:
compute.disks.useבדיסק - כדי לצרף דיסק קיים במצב קריאה-בלבד:
compute.disks.useReadOnlyבדיסק
-
-
כדי ליצור תבניות של מכונות:
compute.instanceTemplates.createבפרויקט
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מניעת צריכה של הזמנות
כדי למנוע ממכונת מחשוב לצרוך הזמנות, צריך להגדיר את המאפיין reservation affinity (reservationAffinity) שלה כך שלא ייעשה שימוש בהזמנות. המאפיין הזה קובע אם מכונה יכולה לצרוך נתונים ממקום שמור תואם, ממקום שמור ספציפי או לא לצרוך נתונים ממקום שמור בכלל.
כדי למנוע ממקרים מסוימים לצרוך הזמנות, אפשר להשתמש באחת מהשיטות הבאות:
מניעת צריכה במכונה קיימת
אפשר לעדכן מופע פעיל כך שהוא לא ינצל יותר באופן אוטומטי את ההזמנות. כדי שהשינויים ייכנסו לתוקף, צריך להפעיל מחדש את המופע, כמו שמתואר בקטע הזה.
כדי למנוע ממופע קיים לצרוך הזמנות, בוחרים באחת מהאפשרויות הבאות:
gcloud
יוצרים קובץ YAML ריק.
כדי לייצא את המאפיינים של מכונה לקובץ ה-YAML שיצרתם, משתמשים בפקודה
gcloud compute instances export:gcloud compute instances export INSTANCE_NAME \ --destination=YAML_FILE \ --zone=ZONEמחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAME: השם של המכונה.
YAML_FILE: הנתיב לקובץ ה-YAML הריק שיצרתם בשלב הקודם.
ZONE: האזור שבו המכונה קיימת.
בקובץ ההגדרות ב-YAML, מגדירים את
consumeReservationTypeלערךNO_RESERVATION:reservationAffinity: consumeReservationType: NO_RESERVATIONכדי לעדכן את המכונה ולהפעיל אותה מחדש, משתמשים בפקודה
gcloud compute instances update-from-fileעם הדגל--most-disruptive-allowed-actionשמוגדר לערךRESTART:gcloud compute instances update-from-file INSTANCE_NAME \ --most-disruptive-allowed-action=RESTART \ --source=YAML_FILE \ --zone=ZONEמחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAME: השם של המכונה.
YAML_FILE: הנתיב לקובץ ה-YAML עם נתוני ההגדרה ששיניתם בשלב הקודם.
ZONE: האזור שבו המכונה קיימת.
REST
כדי להציג את המאפיינים של מכונה קיימת, שולחים בקשת
GETאל ה-methodinstances.get:GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAMEמחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו יצרתם את המכונה.
ZONE: האזור שבו המכונה קיימת.
INSTANCE_NAME: השם של המכונה.
שומרים את הפלט מהבקשה
GETבקובץ או בכלי לעריכת טקסט. משנים את הפלט שהועתק כדי לשנות את השדהconsumeReservationTypeלערךNO_RESERVATION:{ ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }כדי לעדכן את המכונה ולהפעיל אותה מחדש, שולחים בקשת
PUTאל ה-methodinstances.update. בבקשה, מבצעים את הפעולות הבאות:בכתובת ה-URL של הבקשה, כוללים את פרמטר השאילתה
mostDisruptiveAllowedActionשמוגדר לערךRESTART.בגוף הבקשה, משתמשים בפלט מהבקשה
GETשערכתם בשלב הקודם.
הבקשה תיראה כמו בדוגמה הבאה:
PUT https://compute.s3nsapis.fr/compute/v1/projects/example-project/zones/us-central-1/instances/instance-01?mostDisruptiveAllowedAction=RESTART { ... "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, ... }
מידע נוסף על עדכון מופע זמין במאמר בנושא עדכון מאפייני מופע.
מניעת צריכה בזמן יצירת מכונה
כדי ליצור מכונת חישוב שלא יכולה להשתמש בשמירת מקום, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף Create an instance במסוף Cloud de Confiance .
בשדה Name, מזינים שם למופע.
ברשימות Region ו-Zone, בוחרים את האזור והתחום שבהם רוצים ליצור את המכונה.
מציינים את סוג המכונה שבה רוצים להשתמש עבור המופע.
בתפריט הניווט, לוחצים על מתקדם.
בקטע הזמנות, בוחרים באפשרות לא להשתמש בהזמנה.
לוחצים על יצירה.
gcloud
כדי ליצור מכונה שלא יכולה להשתמש בהזמנות, משתמשים בפקודה gcloud compute instances create עם הדגל --reservation-affinity שמוגדר לערך none:
gcloud compute instances create INSTANCE_NAME \
--machine-type=MACHINE_TYPE \
--reservation-affinity=none \
--zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_NAME: השם של המכונה.
MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופע.
ZONE: האזור שבו רוצים ליצור את המכונה.
המשך
כדי ליצור מכונה שלא יכולה להשתמש בהזמנות, משתמשים בדוגמת הקוד הבאה:
Java
כדי ליצור מכונה שלא יכולה להשתמש בהזמנות, משתמשים בדוגמת הקוד הבאה:
Node.js
כדי ליצור מכונה שלא יכולה להשתמש בהזמנות, משתמשים בדוגמת הקוד הבאה:
Python
כדי ליצור מכונה שלא יכולה להשתמש בהזמנות, משתמשים בדוגמת הקוד הבאה:
REST
כדי ליצור מכונה שלא יכולה לצרוך הזמנות, שולחים בקשת POST אל ה-method instances.insert.
בגוף הבקשה, כוללים את השדה consumeReservationType שמוגדר ל-NO_RESERVATION:
POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "INSTANCE_NAME",
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "NO_RESERVATION"
}
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המכונה.
ZONE: האזור שבו רוצים ליצור את המכונה.
INSTANCE_NAME: השם של המכונה.
MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המופע.
IMAGE_PROJECT: פרויקט התמונה שמכיל את תמונת מערכת ההפעלה, לדוגמהdebian-cloud. מידע נוסף על פרויקטים של תמונות נתמכות זמין במאמר תמונות ציבוריות.
IMAGE: מציינים אחת מהאפשרויות הבאות:גרסה ספציפית של תמונת מערכת ההפעלה, לדוגמה:
debian-12-bookworm-v20240617.משפחת תמונות, שצריכה להיות בפורמט
family/IMAGE_FAMILY. המאפיין הזה מציין את תמונת מערכת ההפעלה העדכנית ביותר שלא הוצאה משימוש. לדוגמה, אם מצייניםfamily/debian-12, נעשה שימוש בגרסה העדכנית ביותר במשפחת תמונות Debian 12. מידע נוסף על שימוש במשפחות של תמונות זמין במאמר בנושא שיטות מומלצות לשימוש במשפחות של תמונות.
למידע נוסף על יצירת מכונה, אפשר לעיין במאמר בנושא יצירת מכונה של Compute Engine והפעלה שלה.
מניעת צריכה בזמן יצירת תבנית של הגדרות מכונה
אחרי שיוצרים תבנית של הגדרות מכונה שמגדירה את המכונות כך שלא ינצלו הזמנות, אפשר להשתמש בתבנית כדי:
כדי למנוע ממכונות וירטואליות בקבוצת מופעי מכונה מנוהלים (MIG) לצרוך הזמנות, צריך לבצע את הפעולות הבאות:
כדי ליצור תבנית של הגדרות מכונה שמגדירה את המכונות כך שלא ינצלו מקום שמור, בוחרים באחת מהאפשרויות הבאות:
המסוף
במסוף Cloud de Confiance , נכנסים לדף יצירת תבנית של הגדרות מכונה.
בשדה Name, מזינים שם לתבנית של הגדרות מכונה.
בקטע Location (מיקום), מציינים אם רוצים ליצור תבנית של הגדרות מכונה אזורית (ברירת מחדל) או גלובלית.
בקטע Machine configuration מציינים את סוג המכונה שרוצים להשתמש בו עבור המופעים שנוצרו באמצעות התבנית.
מרחיבים את הקטע אפשרויות מתקדמות ומבצעים את הפעולות הבאות:
מרחיבים את הקטע ניהול.
בקטע הזמנות, בוחרים באפשרות לא להשתמש בהזמנה.
לוחצים על יצירה.
gcloud
כדי ליצור תבנית של הגדרות מכונה שמגדירה את המכונות כך שלא יצרכו הזמנות, משתמשים בפקודה gcloud compute instances-templates create עם האפשרות --reservation-affinity שמוגדרת לערך none.
כדי ליצור תבנית של הגדרות מכונה אזורית שמגדירה את המכונות כך שלא ינצלו מקומות שמורים, מריצים את הפקודה הבאה. כדי ליצור תבנית של הגדרות מכונה גלובלית, משתמשים באותה פקודה בלי הדגל --instance-template-region.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE \
--reservation-affinity=none
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה.
REGION: האזור שבו רוצים ליצור את תבנית הגדרות המכונה.
MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המכונות שנוצרו באמצעות התבנית של הגדרות המכונה.
המשך
כדי ליצור תבנית של הגדרות מכונה שמגדירה את המכונות כך שלא ינצלו הזמנות, משתמשים בדוגמת הקוד הבאה:
Java
כדי ליצור תבנית של הגדרות מכונה שמגדירה את המכונות כך שלא ינצלו הזמנות, משתמשים בדוגמת הקוד הבאה:
Node.js
כדי ליצור תבנית של הגדרות מכונה שמגדירה את המכונות כך שלא ינצלו הזמנות, משתמשים בדוגמת הקוד הבאה:
Python
כדי ליצור תבנית של הגדרות מכונה שמגדירה את המכונות כך שלא ינצלו הזמנות, משתמשים בדוגמת הקוד הבאה:
REST
כדי ליצור תבנית של הגדרות מכונה שמגדירה מכונות כך שלא ינצלו מקום שמור, שולחים בקשת POST לאחת מהשיטות הבאות:
כדי ליצור תבנית של הגדרות מכונה גלובלית: שימוש ב-method
instanceTemplates.insert.כדי ליצור תבנית של הגדרות מכונה אזורית:
regionInstanceTemplates.insertmethod.
בגוף הבקשה, כוללים את השדה consumeReservationType ומגדירים אותו לערך NO_RESERVATION.
לדוגמה, כדי ליצור תבנית של הגדרות מכונה אזורית ולציין שלא ינוצלו מקומות שמורים, שולחים בקשה באופן הבא:
POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/InstanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"machineType": "MACHINE_TYPE",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "NO_RESERVATION"
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: המזהה של הפרויקט שבו רוצים ליצור את תבנית של הגדרות מכונה.
INSTANCE_TEMPLATE_NAME: השם של תבנית הגדרות המכונה.
MACHINE_TYPE: סוג המכונה שבה רוצים להשתמש עבור המכונות שנוצרו באמצעות התבנית של הגדרות המכונה.
IMAGE_PROJECT: פרויקט התמונה שמכיל את תמונת מערכת ההפעלה, לדוגמהdebian-cloud. מידע נוסף על פרויקטים של תמונות נתמכות זמין במאמר תמונות ציבוריות.
IMAGE: מציינים אחת מהאפשרויות הבאות:גרסה ספציפית של תמונת מערכת ההפעלה, לדוגמה:
debian-12-bookworm-v20240617.משפחת תמונות, שצריכה להיות בפורמט
family/IMAGE_FAMILY. המאפיין הזה מציין את תמונת מערכת ההפעלה העדכנית ביותר שלא הוצאה משימוש. לדוגמה, אם מצייניםfamily/debian-12, נעשה שימוש בגרסה העדכנית ביותר במשפחת תמונות Debian 12. מידע נוסף על שימוש במשפחות של תמונות זמין במאמר בנושא שיטות מומלצות לשימוש במשפחות של תמונות.
מידע נוסף על יצירת תבניות של מכונות זמין במאמר יצירת תבניות של מכונות.