במאמר הזה נסביר איך ליצור ולהריץ משימת אצווה שמשתמשת בגמישות של מכונות. גמישות המכונה מאפשרת להריץ עבודה בכמה סוגי מכונות שאתם מציינים, ואפשר גם לדרג אותן.
אם מאפשרים שימוש ביותר סוגי מכונות לעבודה, אפשר להשתמש בגמישות של המכונות כדי לשפר את הזמינות, שהיא ההסתברות שהמשאבים יהיו זמינים להרצת העבודה. מידע נוסף על בחירת התכונות של זמינות משאבים שמתאימות לעומס העבודה שלכם זמין במאמר שיפור הזמינות של משאבים. לדוגמה, שימוש בגמישות של מופעים יכול לעזור לכם:
- הפחתת הסיכוי לשגיאות בזמינות משאבים ולעיכובים קשורים בתזמון.
- כדי שהעבודות יסתיימו מהר יותר, כדאי לבחור משאבים עם סיכוי גבוה יותר להשגה – לדוגמה:
- להגדיל את הסיכוי לקבל יותר מופעים למשימות שתומכות בעיבוד מקבילי.
- קבלת מכונות וירטואליות מסוג Spot עם סיכוי נמוך יותר להפסקת פעולה.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
הגבלות
כשמשימה משתמשת בגמישות של מופע, חלות כל ההגבלות הבאות:
השיפור במידת הזמינות גדל ככל שמספר סוגי המכונות שמאפשרים לעבודה להשתמש בהם גדול יותר.
אי אפשר לציין במשימה את מודל ההקצאה
FLEX_STARTאו את מודל ההקצאהRESERVATION_BOUND.העבודה לא יכולה לצרוך הזמנה שמטרגטת באופן ספציפי. (השדה
reservationצריך להיות לא מוגדר או מוגדר ל-NO_RESERVATION).הזמנה שמיועדת לטירגוט ספציפי כוללת את כל ההזמנות של מודל הקצאת ההרשאות
RESERVATION_BOUNDוחלק מההזמנות של מודל הקצאת ההרשאותSTANDARD. התכונות האלה לא תואמות באופן מובנה, כי אפשר ליצור מופע רק עבור סוג המכונה של ההזמנה.כל משימה יכולה לכלול עד 50 בחירות של מופעים.
לכל בחירת מופע בעבודה צריך להיות שם ייחודי, דירוג ייחודי וסוג מכונה ייחודי אחד או יותר.
אי אפשר לחזור על סוגי מכונות. צריך לכלול כל סוג מכונה רק בבחירה אחת של מופע לכל עבודה.
בכל משימה יכולים להיות עד 200 סוגים ייחודיים של מכונות מתוך הבחירות של המופעים שלה.
אפשר לציין כמה סוגי מכונות באותו בחירת מופע, אבל זה נדרש אם רוצים משאבים עם זמינות גבוהה יותר.
- התכונה 'אצווה' מנסה לבחור סוג מכונה אחד או יותר עם רמת הזמינות הגבוהה ביותר רק כשיש כמה סוגי מכונות לבחירת מכונה לדירוג. לדוגמה, הבחירה הזו חשובה אם רוצים שמשימה תכלול מכונות וירטואליות מסוג Spot עם סיכוי נמוך יותר להפסקת פעולה, או יותר מופעים למשימה שיכולה להריץ משימות במקביל.
- אחרת, כשבבחירת המכונה לדירוג יש רק סוג מכונה אחד, הגמישות של המכונה עוזרת רק למנוע שגיאות שקשורות לזמינות משאבים.
העבודה לא יכולה לכלול את השדה
machineType, וסוג המכונה של כל תבנית של הגדרות מכונה שהעבודה מציינת מתעלם.צריך לוודא שכל נכס שמציינים לעבודה תואם לכל סוג מכונה מותר. אחרת, יכול להיות שהעבודה תיכשל אחרי ההגשה כי לא ניתן ליצור מופעים. לדוגמה, מומלץ לוודא שלפחות המאפיינים הבאים של משימה תואמים לכל סוגי המכונות:
- מיקום (אם צוין, השדה
allowedLocations[]; אחרת,location) - משאבי מחשוב לכל משימה (השדה
computeResource) - דיסקים ותמונות (שדה
volumes[], שדהdisk[]ושדהbootDisk) - רשת (שדה
network) כל שאר מאפייני המופע (
instances[]שדות משנה):- פלטפורמת CPU מינימלית (שדה
minCpuPlatform) - מודל הקצאת הרשאות (שדה
provisioningModel) - יחידות GPU (השדה
accelerators[])
- פלטפורמת CPU מינימלית (שדה
- מיקום (אם צוין, השדה
אי אפשר להחליף דיסקים ופלטפורמות מינימליות של CPU למשימות באצווה. כל סוגי המכונות משתמשים בערכים שציינתם (בשדות המשנה
policyאו בתבנית של הגדרות מכונה), או בערכי ברירת המחדל של סוג מכונה בבחירת המופע עם העדיפות הכי גבוהה (אם לא ציינתם ערכים). לכן, מומלץ לבצע את כל הפעולות הבאות:מוודאים שסוג דיסק האתחול תואם לכל סוג מכונה מותר. לסיכום, סוגי מכונות מדור רביעי ומעלה לא תומכים בדיסקים קשיחים, סוגי מכונות מדור שני ומטה לא תומכים ב-Hyperdisk, וסוגי מכונות מדור שלישי ומטה משתמשים בדיסקים קשיחים של אתחול כברירת מחדל.
אל תציינו פלטפורמת CPU מינימלית או דיסקים אופציונליים, אלא אם בדקתם שהם נתמכים בכל סוגי המכונות המותרים.
יצירת משימה שמותר לה להשתמש בכמה סוגי מכונות
כדי ליצור משימה שיכולה להשתמש בכמה סוגי מכונות, בוחרים אחת מהשיטות הבאות.
gcloud
כדי להגדיר כמה סוגי מכונות כשמשתמשים ב-Google Cloud CLI כדי ליצור עבודה, מבצעים את השלבים הבאים:
כוללים את השדה
instanceFlexibilityPolicyואת שדות המשנה בשדהallocationPolicyבקובץ ה-JSON שמציין את פרטי ההגדרה של המשימה. השדהinstanceFlexibilityPolicyתומך בבחירה של מופע אחד או יותר, שלכל אחד מהם יש שם ייחודי, דירוג ייחודי ורשימה של סוגי מכונות."allocationPolicy":{ "instanceFlexibilityPolicy":{ "instanceSelections":{ "INSTANCE_SELECTION_NAME":{ "rank": RANK, "machineTypes": [MACHINE_TYPES] } } } }מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_SELECTION_NAME: שם לבחירת המופע. אם למשימה יש כמה בחירות של מופעים, צריך לוודא שכל שם במשימה הזו הוא ייחודי.
RANK: אופציונלי: מספר שלם אפס או גדול יותר שמייצג את העדיפות לבחירת המופע הזה, כאשר הערך הנמוך ביותר הוא העדיפות הגבוהה ביותר. אם לא מציינים ערך, ערך ברירת המחדל הוא0(העדיפות הכי גבוהה). אם יש כמה בחירות של מופעים בעבודה, צריך לוודא שכל דרגה בעבודה הזו היא ייחודית.
MACHINE_TYPES: רשימה מופרדת בפסיקים של סוגי מכונות, שמופיעים כמחרוזות, לבחירת המכונה של המופע הזה. אפשר לכלול כל סוג מכונה רק בבחירת מופע אחד לכל משימה. לדוגמה, רשימה של שלושה סוגי מכונות יכולה להיראות כך:"MACHINE_TYPE_1", "MACHINE_TYPE_2", "MACHINE_TYPE_3"מחליפים כל אחד מהערכים
MACHINE_TYPE_1,MACHINE_TYPE_2ו-MACHINE_TYPE_3בסוג מכונה – לדוגמה,e2-micro,e2-smallו-n1-standard-2.
מידע נוסף זמין גם בדוגמה של משימה.
בזמן שהתכונה הזו נמצאת בגרסת Preview, צריך להשתמש בפקודה
gcloud alpha batch jobs submitכדי ליצור את העבודה ולשלוח אותה.gcloud alpha batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
LOCATION: המיקום של המשרה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה.
-
REST
כדי להשתמש ב-Batch API כדי ליצור משימה שמשתמשת בכמה סוגי מכונות, צריך להשתמש בשיטה jobs.create v1alpha בזמן שהתכונה הזו נמצאת בגרסת Preview.
כדי לציין כמה סוגי מכונות לעבודה, כוללים את השדה instanceFlexibilityPolicy ואת שדות המשנה בשדה allocationPolicy בגוף הראשי בקובץ ה-JSON.
השדה instanceFlexibilityPolicy תומך בבחירה של מופע אחד או יותר, שלכל אחד מהם יש שם ייחודי, דירוג ייחודי ורשימה של סוגי מכונות.
"allocationPolicy":{
"instanceFlexibilityPolicy":{
"instanceSelections":{
"INSTANCE_SELECTION_NAME":{
"rank": RANK,
"machineTypes": [MACHINE_TYPES]
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
INSTANCE_SELECTION_NAME: שם לבחירת המכונה. אם למשימה יש כמה בחירות של מופעים, צריך לוודא שכל שם במשימה הזו הוא ייחודי.
RANK: אופציונלי: מספר שלם אפס או גדול יותר שמייצג את העדיפות של בחירת המופע הזה, כאשר הערך הנמוך ביותר הוא העדיפות הגבוהה ביותר. אם לא מציינים ערך, ערך ברירת המחדל הוא0(העדיפות הכי גבוהה). אם למשימה יש כמה בחירות של מופעים, צריך לוודא שכל דרגה במשימה הזו היא ייחודית.
MACHINE_TYPES: רשימה מופרדת בפסיקים של סוגי מכונות, שמוגדרים כמחרוזות, לבחירת המכונה הזו. אפשר לכלול כל סוג מכונה רק בבחירת מופע אחד לכל משימה. לדוגמה, רשימה של שלושה סוגי מכונות יכולה להיראות כך:"MACHINE_TYPE_1", "MACHINE_TYPE_2", "MACHINE_TYPE_3"מחליפים כל אחד מהערכים
MACHINE_TYPE_1,MACHINE_TYPE_2ו-MACHINE_TYPE_3בסוג מכונה – לדוגמה,e2-micro,e2-smallו-n1-standard-2.
מידע נוסף זמין גם בדוגמה של משימה.
דוגמה לקובץ הגדרות של משימה בפורמט JSON
לדוגמה, כשמשתמשים ב-CLI של gcloud או ב-Batch API, אפשר להשתמש בקובץ ההגדרות הבא בפורמט JSON כדי ליצור משימת סקריפט בסיסית עם שני בחירות של מופעים:
- לבחירת המכונה שנקראת
first-choiceיש את העדיפות הכי גבוהה ("rank": 0) ושלושה סוגי מכונות (e2-micro,e2-smallו-n1-standard-2). - לבחירת המופע שנקרא
second-choiceיש עדיפות שנייה ("rank": 1) וסוג מכונה אחד (e2-medium).
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy":{
"instanceFlexibilityPolicy":{
"instanceSelections":{
"first-choice":{
"rank": 0,
"machineTypes": ["e2-micro", "e2-small", "n1-standard-2"]
},
"second-choice":{
"rank": 1,
"machineTypes": ["e2-medium"]
}
}
}
}
}
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהרצה של משימה, תוכלו להיעזר בפתרון בעיות.
- הצגת משרות ומשימות.
- מידע נוסף על אפשרויות ליצירת משרות