במאמר הזה מוסבר איך לציין גמישות של מכונות וירטואליות (VM) כשיוצרים אותן בכמות גדולה. כשמציינים את המפרט הזה, מציינים רשימה של סוגי מכונות שמתאימים למכונות הווירטואליות, ו-Compute Engine מקצה מכונות וירטואליות באמצעות כל אחד מסוגי המכונות שצוינו על סמך הקיבולת והזמינות של המכסות באזור.
מידע נוסף על גמישות המכונות הווירטואליות שנוצרו בכמות גדולה זמין במאמר מידע על גמישות המכונות הווירטואליות שנוצרו בכמות גדולה.
לפני שמתחילים
- לפני שיוצרים מכונות וירטואליות ומשאבים קשורים, חשוב לוודא שיש לכם מספיק מכסה.
- אם רוצים ליצור מכונות וירטואליות (VM) זמניות מסוג Spot בכמות גדולה, כדאי לבדוק את זמינות המשאבים לפני שיוצרים את המכונות הווירטואליות. בדיקת הזמינות של משאבים עוזרת לצמצם את הסיכוי להיתקל בשגיאות שקשורות לזמינות של משאבים כשיוצרים מכונות וירטואליות. הוראות מפורטות מופיעות במאמר בנושא צפייה בזמינות של משאבים במכונות VM מסוג Spot.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
gcloud
-
התקינו את ה-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 .
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות ליצירת מכונות וירטואליות בכמות גדולה, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין מכונות של Compute (v1) (roles/compute.instanceAdmin.v1) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות ליצירת מכונות וירטואליות בכמות גדולה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור מכונות וירטואליות בכמות גדולה, צריך את ההרשאות הבאות:
-
compute.instances.createבפרויקט -
כדי להשתמש באימג' בהתאמה אישית ליצירת המכונה הווירטואלית (VM):
compute.images.useReadOnlyבקובץ אימג' -
כדי להשתמש ב-snapshot ליצירת המכונה הווירטואלית:
compute.snapshots.useReadOnlyבקובץ snapshot -
כדי להשתמש בתבנית של הגדרות מכונה ליצירת המכונה הווירטואלית:
compute.instanceTemplates.useReadOnlyבתבנית של הגדרות המכונה -
כדי לציין רשת משנה למכונה הווירטואלית:
compute.subnetworks.useבפרויקט או ברשת המשנה שנבחרה -
כדי לציין כתובת IP סטטית למכונה הווירטואלית:
compute.addresses.useבפרויקט -
כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת VPC:
compute.subnetworks.useExternalIpבפרויקט או ברשת המשנה שנבחרה -
כדי להקצות רשת מדור קודם למכונה הווירטואלית:
compute.networks.useבפרויקט -
כדי להקצות כתובת IP חיצונית למכונה הווירטואלית כשמשתמשים ברשת מדור קודם:
compute.networks.useExternalIpבפרויקט -
כדי להגדיר מטא-נתונים של המכונה הווירטואלית:
compute.instances.setMetadataבפרויקט -
כדי להגדיר תגים למכונה הווירטואלית:
compute.instances.setTagsבמכונה הווירטואלית -
כדי להגדיר תוויות למכונה הווירטואלית:
compute.instances.setLabelsבמכונה הווירטואלית -
כדי להגדיר חשבון שירות לשימוש של המכונה הווירטואלית:
compute.instances.setServiceAccountבמכונה הווירטואלית -
כדי ליצור דיסק חדש למכונה הווירטואלית:
compute.disks.createבפרויקט -
כדי לצרף דיסק קיים במצב קריאה-בלבד או במצב קריאה וכתיבה:
compute.disks.useבדיסק -
כדי לצרף דיסק קיים במצב קריאה-בלבד:
compute.disks.useReadOnlyבדיסק
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
יצירת מכונות וירטואליות עם כמה סוגי מכונות בעדיפות שווה
אם עומס העבודה שלכם יכול לפעול בכמה סוגים שונים של מכונות, אתם יכולים לציין רשימה של כל סוגי המכונות התואמים בבחירת מופע יחידה. בדוגמאות הבאות אפשר לראות איך מציינים כמה סוגי מכונות עם העדפה שווה.
gcloud
כדי ליצור כמות גדולה של מכונות וירטואליות עם בחירה של מכונה אחת, משתמשים בפקודה gcloud compute instances bulk create עם הדגל --instance-selection-machine-types.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection-machine-types=MACHINE_TYPE_1,MACHINE_TYPE_2
מחליפים את מה שכתוב בשדות הבאים:
-
COUNT: מספר המכונות הווירטואליות שרוצים ליצור -
NAME_PATTERN: תבנית השם של המכונות הווירטואליות -
MACHINE_TYPE_1,MACHINE_TYPE_2: סוגי המכונות שבהן יש להשתמש עבור המכונות הווירטואליות -
REGION: האזור שבו ייצרו את המכונות הווירטואליות
דוגמה
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8
REST
ב-Compute Engine API, שולחים בקשת POST אל ה-method regionInstances.bulkInsert.
בגוף הבקשה, כוללים את instanceFlexibilityPolicy עם רשומה אחת של instanceSelections שמפרטת את סוגי המכונות.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
]
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
COUNT: מספר המכונות הווירטואליות שרוצים ליצור -
NAME_PATTERN: תבנית השם של המכונות הווירטואליות -
MACHINE_TYPE_1,MACHINE_TYPE_2: סוגי המכונות שבהן יש להשתמש עבור המכונות הווירטואליות -
IMAGE_PROJECT: הפרויקט שמכיל את התמונה IMAGE: השם של התמונה או של משפחת התמונות לשימוש-
PROJECT_ID: מזהה הפרויקט -
REGION: האזור שבו ייצרו את המכונות הווירטואליות
דוגמה
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
]
}
}
}
}
יצירת מכונות וירטואליות עם כמה סוגי מכונות שדורגו לפי העדפה
אם אתם רוצים ש-Compute Engine יבחר סוגי מכונות בסדר מסוים, אתם יכולים להגדיר כמה בחירות של מכונות. כל בחירה של מופע כוללת רשימה של סוגי מכונות ודירוג, שהוא מספר שלם שמגדיר את ההעדפה לסוגי המכונות. דירוג נמוך יותר מצביע על העדפה גבוהה יותר. מערכת Compute Engine מנסה ליצור מכונות וירטואליות באמצעות סוגי מכונות עם העדפה גבוהה יותר (דירוג נמוך יותר). אם סוגי המכונות האלה לא זמינים, Compute Engine משתמש בסוגי מכונות עם העדפה נמוכה יותר (דירוג גבוה יותר).
בדוגמאות הבאות אפשר לראות איך מציינים כמה בחירות של מופעים עם דירוגים.
gcloud
כדי ליצור כמות גדולה של מכונות וירטואליות עם כמה בחירות של מכונות, משתמשים בפקודה gcloud compute instances bulk create ומציינים את הדגל --instance-selection כמה פעמים.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection "name=INSTANCE_SELECTION_1,rank=0,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2" \
--instance-selection "name=INSTANCE_SELECTION_2,rank=1,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4"
מחליפים את מה שכתוב בשדות הבאים:
-
COUNT: מספר המכונות הווירטואליות שרוצים ליצור -
NAME_PATTERN: תבנית השם של המכונות הווירטואליות -
INSTANCE_SELECTION_1: השם של הבחירה הראשונה של המופע -
INSTANCE_SELECTION_2: השם של הבחירה השנייה של המופע -
MACHINE_TYPE_1,MACHINE_TYPE_2: סוגי המכונות לבחירת המכונה הראשונה -
MACHINE_TYPE_3,MACHINE_TYPE_4: סוגי המכונות לבחירת המופע השני -
REGION: האזור שבו ייצרו את המכונות הווירטואליות
דוגמה
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection "name=most-preferred,rank=0,machine-type=c3-standard-16,machine-type=n2-standard-16, machine-type=c2-standard-16" \
--instance-selection "name=least-preferred,rank=1,machine-type=c3-standard-8,machine-type=n2-standard-8, machine-type=c2-standard-8"
REST
ב-Compute Engine API, שולחים בקשת POST אל ה-method regionInstances.bulkInsert.
בגוף הבקשה, כוללים את instanceFlexibilityPolicy ומציינים כמה רשומות ב-instanceSelections, כל אחת עם רשימה של סוגי מכונות ועם rank.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"rank": 1
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3",
"MACHINE_TYPE_4"
],
"rank": 2
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
COUNT: מספר המכונות הווירטואליות שרוצים ליצור -
NAME_PATTERN: תבנית השמות של המכונות הווירטואליות -
INSTANCE_SELECTION_1: השם של הבחירה הראשונה של המופע -
INSTANCE_SELECTION_2: השם של הבחירה השנייה של המופע -
MACHINE_TYPE_1,MACHINE_TYPE_2: סוגי המכונות לבחירת המכונה הראשונה -
MACHINE_TYPE_3,MACHINE_TYPE_4: סוגי המכונות לבחירת המופע השני -
IMAGE_PROJECT: הפרויקט שמכיל את התמונה IMAGE: השם של התמונה או של משפחת התמונות לשימוש-
PROJECT_ID: מזהה הפרויקט -
REGION: האזור שבו ייצרו את המכונות הווירטואליות
דוגמה
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"most-preferred": {
"machineTypes": [
"c3-standard-16",
"c2-standard-16"
],
"rank": 1
},
"least-preferred": {
"machineTypes": [
"n2-standard-16",
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
],
"rank": 2
}
}
}
}
ציון שינויים מברירת המחדל בדיסקים בבחירות של מכונות
כברירת מחדל, המכונות הווירטואליות שנוצרות על ידי בקשה בכמות גדולה משתמשות בהגדרת הדיסק מ-instanceProperties. עם זאת, אפשר לציין הגדרות של דיסקים בבחירת מופע. אם מציינים דיסקים בבחירת מכונה, הגדרת הדיסק הזו מבטלת את הגדרת הדיסק ב-instanceProperties עבור מכונות וירטואליות שמשתמשות בבחירת המכונה הזו.
בדוגמה הבאה אפשר לראות איך מציינים דיסקים בבחירות של מופעים.
REST
ב-Compute Engine API, שולחים בקשת POST אל ה-method regionInstances.bulkInsert.
בגוף הבקשה, כוללים את instanceFlexibilityPolicy, ולכל רשומה של instanceSelections, כוללים את השדה disks כדי לשנות את instanceProperties.disks.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"disks": [
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "pd-ssd",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_1/global/images/IMAGE_1"
},
"boot": true
},
{
"type": "SCRATCH",
"initializeParams": {
"diskType": "local-ssd"
}
}
]
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3"
],
"disks": [
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_2/global/images/IMAGE_2"
},
"boot": true
},
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 128,
"sourceImage": "projects/IMAGE_PROJECT_3/global/images/IMAGE_1"
}
}
]
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
COUNT: מספר המכונות הווירטואליות שרוצים ליצור -
NAME_PATTERN: תבנית השמות של המכונות הווירטואליות -
INSTANCE_SELECTION_1: השם של הבחירה הראשונה של המופע -
INSTANCE_SELECTION_2: השם של הבחירה השנייה של המופע -
MACHINE_TYPE_1, MACHINE_TYPE_2, MACHINE_TYPE_3: סוגי המכונות לשימוש במכונות הווירטואליות -
IMAGE_PROJECT: הפרויקט שמכיל את התמונה IMAGE: השם של התמונה או של משפחת התמונות לשימוש-
PROJECT_ID: מזהה הפרויקט -
REGION: האזור שבו ייצרו את המכונות הווירטואליות