במאמר הזה נסביר איך להגדיר את משאבי המכונה הווירטואלית למשימה באצווה באמצעות ציון תבנית של הגדרות מכונה ב-Compute Engine כשיוצרים את המשימה.
סוגי משאבי המכונות הווירטואליות שהעבודה מופעלת עליהם מוגדרים אוטומטית על ידי Batch, אלא אם אתם מגדירים אותם באחת מהשיטות הבאות:
- הגדרת משאבי מכונה וירטואלית של משימה ישירות באמצעות השדה
instances[].policy. השיטה הזו מודגמת ברוב מסמכי התיעוד של Batch. מגדירים את משאבי ה-VM של משימה באמצעות תבנית, על ידי שימוש בשדה
instances[].instanceTemplate. זו השיטה שמוסברת במסמך הזה.חובה להשתמש בתבנית כדי לציין אפשרויות של מכונות וירטואליות שלא מוגדרים להן שדות עבודה ב-Batch. שימוש בתבנית יכול להיות נוח גם כשרוצים לציין את אותם משאבי מכונות וירטואליות לכמה עבודות.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
- יוצרים תבנית של הגדרות מכונה או מזהים תבנית של הגדרות מכונה קיימת.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל -
כדי ליצור משימה מתבנית של הגדרות מכונה ב-Compute Engine:
Compute Viewer (
roles/compute.viewer) בתבנית של הגדרות המכונה
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
יצירת משימה באמצעות תבנית של הגדרות מכונה ב-Compute Engine
בקטע הזה מופיעות דוגמאות ליצירת עבודת סקריפט בסיסית מתבנית קיימת של מכונה וירטואלית. אפשר ליצור עבודה מתבנית של מכונה וירטואלית באמצעות gcloud CLI, Batch API, Go, Java, Node.js, Python או C++.
gcloud
כדי ליצור משימה מתבנית של הגדרות מכונה באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit ומציינים את תבנית הגדרות המכונה בקובץ התצורה של המשימה בפורמט JSON.
לדוגמה, כדי ליצור עבודת סקריפט בסיסית מתבנית של הגדרות מכונה:
יוצרים קובץ JSON בספרייה הנוכחית בשם
hello-world-instance-template.jsonעם התוכן הבא:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
INSTALL_GPU_DRIVERS: אופציונלי. אם מגדירים את האפשרותtrue, Batch מאחזר את מנהלי ההתקנים שנדרשים לסוג ה-GPU שצוין בתבנית של מכונת ה-VM ב-Compute Engine, ומתקין אותם בשמכם. למידע נוסף, קראו איך יוצרים משימה שמשתמשת ב-GPU. -
INSTANCE_TEMPLATE_NAME: השם של תבנית של הגדרות מכונה קיימת ב-Compute Engine. איך יוצרים תבניות של מכונות וירטואליות
-
מריצים את הפקודה הבאה:
gcloud batch jobs submit example-template-job \ --location us-central1 \ --config hello-world-instance-template.json
API
כדי ליצור משימה בסיסית באמצעות Batch API, משתמשים בmethod jobs.create ומציינים תבנית של הגדרות מכונה בשדה allocationPolicy.
לדוגמה, כדי ליצור משימות סקריפט בסיסיות מתבנית של הגדרות מכונה, משתמשים בבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"instanceTemplate": "INSTANCE_TEMPLATE_NAME"
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שלכם. -
INSTALL_GPU_DRIVERS: אופציונלי. אם מגדירים את הערךtrue, Batch מאחזר את הדרייברים שנדרשים לסוג ה-GPU שצוין בתבנית של הגדרות מכונה ב-Compute Engine, ומתקין אותם בשמכם. מידע נוסף זמין במאמר בנושא יצירת משימה שמשתמשת ב-GPU. INSTANCE_TEMPLATE_NAME: השם של תבנית קיימת של הגדרות מכונה ב-Compute Engine. כאן מוסבר איך ליצור תבניות של הגדרות מכונה, וכאן מוסבר איך לראות רשימה של תבניות של הגדרות מכונה.
המשך
Go
מידע נוסף מופיע במאמרי העזרה של Batch Go API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Java
Java
מידע נוסף מופיע במאמרי העזרה של Batch Java API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
Node.js
מידע נוסף מופיע במאמרי העזרה של Batch Node.js API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
Python
מידע נוסף מופיע במאמרי העזרה של Batch Python API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
C++
C++
מידע נוסף מופיע במאמרי העזרה של Batch C++ API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- הצגת משרות ומשימות.
- מידע נוסף על אפשרויות ליצירת משרות