במאמר הזה מוסבר איך להשתמש בתוויות כדי לארגן את המשאבים של Batch.
תוויות הן צמדי מפתח/ערך שמוחלים על משאבים כדי לקבץ ולתאר אותם. ל-Batch יש תוויות מוגדרות מראש שמוחלות על משאבים באופן אוטומטי, ותוויות בהתאמה אישית שאפשר להגדיר ולהחיל כשיוצרים עבודה.
התוויות מאפשרות לכם לסנן את התוצאות של רשימות משאבים ודוחות חיוב ב-Cloud. לדוגמה, אפשר להשתמש בתוויות כדי:
לשפר את רשימת המשרות בפרויקט ולארגן אותה.
כדי להבחין בין רכיבים להרצה של משימה, אפשר להשתמש בתוויות לתיאור הסוג של הקונטיינר או הסקריפט שהם מציינים.
כדי לנתח את העלויות, אפשר לסנן את הדוחות של החיוב ב-Cloud לפי המשאבים שנוצרו על ידי Batch או לפי משימות ספציפיות.
למידע נוסף על תוויות, אפשר לעיין גם במאמרי העזרה של Compute Engine בנושא תוויות.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
הגבלות
בנוסף לדרישות לגבי תוויות שמפורטות במסמכי התיעוד של Compute Engine, יש הגבלות נוספות על החלת תוויות על משימה באצווה ועל המשאבים שלה:
Batch תומך רק בתוויות של משאבים שנוצרו באמצעות Batch ומהסוגים הבאים:
תעסוקה
Runnables
מעבדים גרפיים (GPU) לעבודה (אם יש)
דיסקים לאחסון מתמיד (persistent disks) (דיסקים לאתחול וכל נפחי האחסון) של משימה
מכונות וירטואליות (VM) למשימה
אחרי שמתייחסים לתוויות המוגדרות מראש ש-Batch מחיל באופן אוטומטי על עבודה, אפשר להגדיר את הכמויות הבאות של תוויות בהתאמה אישית:
אפשר להגדיר עד 63 תוויות מותאמות אישית להחלה על העבודה ועל הרכיבים שלה שניתנים להרצה.
אפשר להגדיר עד 61 תוויות מותאמות אישית להחלה על כל GPU, דיסק מתמשך ומכונה וירטואלית שנוצרו עבור העבודה.
ב-Batch אפשר להגדיר רק תוויות מותאמות אישית עם שמות ייחודיים. התוצאות של הפעולה הזו הן:
ניסיון לשנות תווית מוגדרת מראש גורם לשגיאות.
הגדרת תווית מותאמת אישית כפולה מבטלת את התווית המותאמת אישית הקיימת.
ב-Batch אפשר להגדיר תוויות רק כשיוצרים משימה.
אי אפשר להוסיף, לעדכן או להסיר תוויות למשימות ולרכיבים שניתנים להרצה.
אפשר להשתמש ב-Compute Engine כדי להוסיף, לעדכן או להסיר תוויות לדיסקים הקשיחים ולמכונות הווירטואליות שנוצרו עבור משימות, אבל לא מומלץ לעשות זאת. אי אפשר להעריך באופן מהימן את פרק הזמן שבו המשאבים של משימה קיימים, ויכול להיות ששינויים לא יפעלו כמו שצריך עם Batch.
כדי להשתמש בתוויות לסינון רשימת העבודות, צריך להציג את רשימת העבודות באמצעות ה-CLI של gcloud או Batch API.
תוויות שהוגדרו מראש
לכל תווית מוגדרת מראש יש מפתח שמתחיל בקידומת batch-. כברירת מחדל, Batch מחיל באופן אוטומטי את התוויות המוגדרות מראש הבאות:
לכל משרה שיוצרים:
-
batch-job-id: הערך של התווית הזו מוגדר כשם המשרה.
-
לכל כרטיס GPU, דיסק של אחסון מתמיד ומכונה וירטואלית שנוצרו עבור משימה:
batch-job-id: הערך של התווית הזו מוגדר כשם המשרה.
batch-job-uid: הערך של התווית הזו מוגדר כמזהה הייחודי (UID) של המשרה.
batch-node: הערך של התווית הזו הוא null – היא פשוט מקבצת את כל מעבדי ה-GPU, דיסקי האחסון המתמיד ומכונות ה-VM שנוצרו עבור משימות. לדוגמה, אפשר להשתמש בתווית הזו כשמעיינים בדוח החיוב ב-Cloud כדי לזהות את העלויות של כל יחידות ה-GPU, הדיסקים הקבועים והמכונות הווירטואליות שנוצרו על ידי Batch.
הגדרת תוויות מותאמות אישית
אפשר להגדיר תווית מותאמת אישית אחת או יותר כשיוצרים משימה. אפשר להגדיר תוויות בהתאמה אישית עם מפתחות חדשים או עם מפתחות שכבר נמצאים בשימוש בפרויקט. כדי להגדיר תוויות בהתאמה אישית, בוחרים אחת או יותר מהשיטות הבאות במסמך הזה, בהתאם למטרה של התווית:
הגדרה של תוויות מותאמות אישית למשרה ולמשאבים שלה
בקטע הזה מוסבר איך להחיל תווית מותאמת אישית אחת או יותר על העבודה ועל כל GPU, דיסק מתמשך ומכונה וירטואלית שנוצרו עבור העבודה. אחרי שיוצרים את הג'וב, אפשר להשתמש בתוויות האלה כדי לסנן את הדוחות של החיוב ב-Cloud ואת רשימות הג'ובים, הדיסקים הקשיחים והמכונות הווירטואליות של הפרויקט.
הגדרת תוויות מותאמות אישית למשרה.
בסעיף הזה מוסבר איך להחיל על המשרה תוויות מותאמות אישית אחת או יותר. אחרי שיוצרים את המשימה, אפשר להשתמש בתוויות האלה כדי לסנן את רשימות המשימות בפרויקט.
הגדרת תוויות מותאמות אישית לקבצים שניתנים להרצה.
בקטע הזה מוסבר איך להחיל תוויות מותאמות אישית על משימות שניתנות להרצה. אחרי שיוצרים את המשימה, אפשר להשתמש בתוויות האלה כדי לסנן את רשימות המשימות בפרויקט.
הגדרת תוויות מותאמות אישית למשרה ולמשאבים שלה
התוויות שמוגדרות בשדה labels של מדיניות ההקצאה של משימה מוחלות על המשימה, וגם על כל מעבד גרפי (אם יש), על דיסק קשיח (כל דיסקי האתחול וכל נפחי האחסון החדשים) ועל מכונה וירטואלית שנוצרו עבור המשימה.
אפשר להגדיר תוויות למשימה ולמשאבים שלה כשיוצרים משימה באמצעות ה-CLI של gcloud או Batch API.
gcloud
לדוגמה, כדי ליצור משימה בסיסית של מאגר תגים ב-us-central1 שמגדירה שתי תוויות בהתאמה אישית שחלות על המשימה ועל המשאבים שנוצרו עבור המשימה, פועלים לפי השלבים הבאים:
יוצרים קובץ JSON שמציין את פרטי ההגדרה של המשימה ואת השדה
allocationPolicy.labels.{ "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ], "labels": { "VM_LABEL_NAME1": "VM_LABEL_VALUE1", "VM_LABEL_NAME2": "VM_LABEL_VALUE2" } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world!" ] } } ] } } ] }מחליפים את מה שכתוב בשדות הבאים:
VM_LABEL_NAME1: השם של התווית הראשונה שרוצים להחיל על המכונות הווירטואליות שנוצרו בשביל המשימה.
VM_LABEL_VALUE1: הערך של התווית הראשונה שרוצים להחיל על המכונות הווירטואליות שנוצרו בשביל העבודה.
VM_LABEL_NAME2: השם של התווית השנייה שרוצים להחיל על המכונות הווירטואליות שנוצרו בשביל המשימה.
VM_LABEL_VALUE2: הערך של התווית השנייה שרוצים להחיל על המכונות הווירטואליות שנוצרו בשביל העבודה.
יוצרים את העבודה ב-
us-central1באמצעות הפקודהgcloud batch jobs submit.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1מחליפים את
JSON_CONFIGURATION_FILEבנתיב לקובץ ה-JSON עם פרטי ההגדרה של העבודה שיצרתם בשלב הקודם.
API
לדוגמה, כדי ליצור משימת קונטיינר בסיסית ב-us-central1 שמגדירה שתי תוויות בהתאמה אישית שחלות על המשימה ועל המשאבים שנוצרו עבור המשימה, צריך לשלוח בקשת POST לשיטה jobs.create ולציין את השדה allocationPolicy.labels.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
],
"labels": {
"VM_LABEL_NAME1": "VM_LABEL_VALUE1",
"VM_LABEL_NAME2": "VM_LABEL_VALUE2"
}
},
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world!"
]
}
}
]
}
}
]
}
מחליפים את מה שכתוב בשדות הבאים:
VM_LABEL_NAME1: השם של התווית הראשונה שרוצים להחיל על המכונות הווירטואליות שנוצרו בשביל העבודה.VM_LABEL_VALUE1: הערך של התווית הראשונה שרוצים להחיל על המכונות הווירטואליות שנוצרו עבור העבודה.
VM_LABEL_NAME2: השם של התווית השנייה שרוצים להחיל על המכונות הווירטואליות שנוצרו בשביל המשימה.
VM_LABEL_VALUE2: הערך של התווית השנייה שרוצים להחיל על מכונות ה-VM שנוצרו בשביל העבודה.
Java
Node.js
Python
הגדרת תוויות מותאמות אישית למשרה
תוויות שמוגדרות בשדה labels של המשרה
מוחלות רק על המשרה.
אפשר להגדיר תוויות למשימה כשיוצרים אותה באמצעות ה-CLI של gcloud או Batch API.
gcloud
לדוגמה, כדי ליצור עבודת מאגר בסיסית ב-us-central1 שמגדירה שתי תוויות מותאמות אישית שחלות על העבודה עצמה, פועלים לפי השלבים הבאים:
יוצרים קובץ JSON שמציין את פרטי ההגדרה של המשימה ואת השדה
labels.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello World!" ] } } ] } } ], "labels": { "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1", "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2" } }מחליפים את מה שכתוב בשדות הבאים:
JOB_LABEL_NAME1: השם של התווית הראשונה שרוצים להחיל על המשימה.
JOB_LABEL_VALUE1: הערך של התווית הראשונה שרוצים להחיל על המשימה.
JOB_LABEL_NAME2: השם של התווית השנייה שרוצים להחיל על המשימה.
JOB_LABEL_VALUE2: הערך של התווית השנייה שרוצים להחיל על העבודה.
יוצרים את העבודה ב-
us-central1באמצעות הפקודהgcloud batch jobs submitעם הדגלים הבאים:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1מחליפים את
JSON_CONFIGURATION_FILEבנתיב לקובץ ה-JSON עם פרטי ההגדרה של העבודה שיצרתם בשלב הקודם.
API
לדוגמה, כדי ליצור משימת מאגר תגים ב-us-central1 שמגדירה שתי תוויות מותאמות אישית להחלה על המשימה עצמה, שולחים בקשת POST אל ה-method jobs.create ומציינים את השדה labels.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello World!"
]
}
}
]
}
}
],
"labels": {
"JOB_LABEL_NAME1": "JOB_LABEL_VALUE1",
"JOB_LABEL_NAME2": "JOB_LABEL_VALUE2"
}
}
מחליפים את מה שכתוב בשדות הבאים:
JOB_LABEL_NAME1: השם של התווית הראשונה שרוצים להחיל על המשימה.
JOB_LABEL_VALUE1: הערך של התווית הראשונה שרוצים להחיל על המשימה.
JOB_LABEL_NAME2: השם של התווית השנייה שרוצים להחיל על המשימה.
JOB_LABEL_VALUE2: הערך של התווית השנייה שרוצים להחיל על המשימה.
Java
Node.js
Python
הגדרת תוויות מותאמות אישית לקבצים שניתנים להרצה
תוויות שמוגדרות בשדה labels של קובץ הפעלה חלות רק על קובץ ההפעלה הזה.
אתם יכולים להגדיר תוויות לאחד או יותר מהקבצים שניתנים להרצה כשיוצרים משימה באמצעות ה-CLI של gcloud או Batch API.
gcloud
לדוגמה, כדי ליצור משימה ב-us-central1 שמגדירה שתי תוויות מותאמות אישית, תוויות מותאמת אישית אחת לכל אחד משני קבצי ההפעלה של המשימה, פועלים לפי השלבים הבאים:
יוצרים קובץ JSON שמציין את פרטי ההגדרה של העבודה ואת השדות
runnables.labels.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello from task ${BATCH_TASK_INDEX}!" ] }, "labels": { "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1" } }, { "script": { "text": "echo Hello from task ${BATCH_TASK_INDEX}!" }, "labels": { "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1" } } ] } } ] }מחליפים את מה שכתוב בשדות הבאים:
RUNNABLE1_LABEL_NAME1: השם של התווית שרוצים להחיל על הרכיב הראשון שאפשר להפעיל במשימה.
RUNNABLE1_LABEL_VALUE1: הערך של התווית שרוצים להחיל על הרכיב הראשון שאפשר להפעיל בעבודה.
RUNNABLE2_LABEL_NAME1: השם של התווית שרוצים להחיל על הרכיב השני של המשימה שאפשר להפעיל.
RUNNABLE2_LABEL_VALUE1: הערך של התווית שרוצים להחיל על הרכיב השני של המשימה שאפשר להפעיל.
יוצרים את העבודה ב-
us-central1באמצעות הפקודהgcloud batch jobs submit.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1מחליפים את
JSON_CONFIGURATION_FILEבנתיב לקובץ ה-JSON עם פרטי ההגדרה של העבודה שיצרתם בשלב הקודם.
API
לדוגמה, כדי ליצור משימה ב-us-central1 שמגדירה שתי תוויות מותאמות אישית, אחת לכל אחד משני קבצי ההפעלה של המשימה, שולחים בקשת POST אל השיטה jobs.create ומציינים את השדות runnables.labels.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello from ${BATCH_TASK_INDEX}!"
]
},
"labels": {
"RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1"
}
},
{
"script": {
"text": "echo Hello from ${BATCH_TASK_INDEX}!"
},
"labels": {
"RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1"
}
}
]
}
}
]
}
מחליפים את מה שכתוב בשדות הבאים:
RUNNABLE1_LABEL_NAME1: השם של התווית שרוצים להחיל על קובץ ההפעלה של המשימה הראשונה.
RUNNABLE1_LABEL_VALUE1: הערך של התווית שרוצים להחיל על הקובץ הניתן להרצה של המשימה הראשונה.
RUNNABLE2_LABEL_NAME1: השם של התווית שרוצים להחיל על קובץ ההפעלה של המשימה השנייה.
RUNNABLE2_LABEL_VALUE1: הערך של התווית להחלה על קובץ ההפעלה של המשימה השנייה.
Java
Node.js
Python
המאמרים הבאים
כדאי להשתמש בתוויות כמסננים כשמבצעים את הפעולות הבאות: