אתם יכולים לשלוט בחיבורים של המכונות הווירטואליות שמריצות עבודה על ידי ציון רשת עם הגישה הרצויה. לדוגמה, אפשר לציין רשת שמאפשרת לעבודת ה-Job לגשת למשאבים הנדרשים או להגביל את הגישה כדי לשפר את האבטחה. לחלופין, אם אין לכם דרישות לגבי רשתות ואתם לא רוצים להגדיר רשת לעבודה, אתם יכולים לדלג על הגדרת הרשת כדי להשתמש בהגדרת הרשת שמוגדרת כברירת מחדל.
מידע נוסף על מושגים של רשתות ומתי צריך להגדיר רשתות זמין במאמר סקירה כללית על רשתות Batch.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה שפועלת ברשת ספציפית, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל -
כדי לזהות את הרשת ואת רשת המשנה: צפייה ברשת Compute (
roles/compute.networkViewer) בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
-
מזהים את הרשת שרוצים להשתמש בה לעבודה. הרשת שאתם מציינים למשרה צריכה לעמוד בדרישות הבאות:
- הרשת היא רשת של ענן וירטואלי פרטי (VPC) שנמצאת באותו פרויקט כמו העבודה, או רשת VPC משותפת שמארחת את הפרויקט של העבודה או משותפת איתו.
- הרשת כוללת רשת משנה (subnet) במיקום שבו רוצים להריץ את העבודה.
- הרשת מאפשרת את הגישה שנדרשת לעבודה שלכם. לדוגמה, אם העבודה שלכם דורשת תקשורת בין מכונות וירטואליות – כמו עבודה שמשתמשת בספריות MPI כדי לתקשר בין משימות שקשורות זו לזו באופן הדוק – צריך לוודא שברשת יש כלל חומת אש שמאפשר חיבורים בין המכונות הווירטואליות של העבודה.
-
אם רוצים שהעבודה תפעל בתת-רשת של רשת VPC משותפת שמארח פרויקט אחר, צריך להעניק לסוכן שירות Batch של הפרויקט הרשאה להשתמש בתת-הרשת הזו.
כדי לוודא שלסוכן השירות של Batch בפרויקט יש את ההרשאות הנדרשות ליצירת משימה שפועלת ברשת משנה של רשת VPC משותפת, צריך לבקש מהאדמין להקצות לסוכן השירות של Batch בפרויקט את תפקיד ה-IAM Compute Network User (
roles/compute.networkUser) ברשת המשנה של ה-VPC המשותף.מידע נוסף זמין במאמר בנושא הגדרת VPC משותף לחשבונות שירות.
יצירת עבודה שפועלת ברשת ספציפית
מציינים את הרשת לעבודה כשיוצרים אותה. ספציפית, צריך לציין רשת VPC ותת-רשת שנמצאות במיקום שבו רוצים להריץ את העבודה הזו.
אם רוצים להשתמש בתבנית של הגדרות מכונה בזמן יצירת העבודה הזו, צריך לציין את הרשת בתבנית של הגדרות המכונה. אחרת, אפשר להשתמש בשלבים הבאים כדי לציין את הרשת למשימה באמצעות ה-CLI של gcloud או Batch API.
gcloud
כדי ליצור משימה שפועלת ברשת ספציפית באמצעות ה-CLI של gcloud, בוחרים באחת מהאפשרויות הבאות:
שימוש בדגלים של gcloud כדי לציין את הרשת של משימה
כדי ליצור עבודה ולהשתמש בפלאגים של gcloud כדי לציין את הרשת של העבודה, מבצעים את השלבים הבאים:
יוצרים קובץ JSON שמציין את פרטי ההגדרה של העבודה.
לדוגמה, כדי ליצור עבודת סקריפט בסיסית, יוצרים קובץ 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." } } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }יוצרים את העבודה באמצעות הפקודה
gcloud batch jobs submit. כדי לציין את הרשת של העבודה, צריך לכלול את הדגלים--networkו---subnetwork.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE \ --network projects/HOST_PROJECT_ID/global/networks/NETWORK \ --subnetwork projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: השם של המשימה. -
LOCATION: המיקום של המשרה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה. -
HOST_PROJECT_ID: מזהה הפרויקט של הפרויקט שבו נמצאת הרשת שציינתם:- אם אתם משתמשים ברשת VPC משותפת, צריך לציין את הפרויקט המארח.
- אחרת, מציינים את הפרויקט הנוכחי.
-
NETWORK: השם של רשת VPC בפרויקט הנוכחי או של רשת VPC משותפת שמארחת את הפרויקט הנוכחי או שמשותפת איתו. -
REGION: האזור שבו נמצאים תת-הרשת והמכונות הווירטואליות של העבודה:- אם כוללים את השדה
allowedLocationsכדי לציין את המיקום המותר של המכונות הווירטואליות עבור העבודה, צריך לציין כאן את אותו אזור. - אחרת, האזור צריך להיות זהה למיקום שבוחרים למשרה (
LOCATION).
- אם כוללים את השדה
-
SUBNET: השם של תת-רשת שמהווה חלק מרשת ה-VPC ונמצאת באותו אזור כמו המכונות הווירטואליות של העבודה.
-
שימוש בשדות JSON כדי לציין את הרשת של משימה
כדי ליצור עבודה ולהשתמש בשדות בקובץ התצורה של JSON כדי לציין את הרשת של העבודה, מבצעים את השלבים הבאים:
יוצרים קובץ JSON שמציין את פרטי ההגדרה של העבודה. כדי לציין את הרשת לעבודה, צריך לכלול את השדות
networkו-subnetwork.לדוגמה, כדי ליצור עבודת סקריפט בסיסית שפועלת ברשת ספציפית, יוצרים קובץ 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." } } ] }, "taskCount": 3 } ], "allocationPolicy": { "network": { "networkInterfaces": [ { "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET" } ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
HOST_PROJECT_ID: מזהה הפרויקט של הפרויקט שבו נמצאת הרשת שציינתם:- אם אתם משתמשים ברשת VPC משותפת, צריך לציין את הפרויקט המארח.
- אחרת, מציינים את הפרויקט הנוכחי.
-
NETWORK: השם של רשת VPC בפרויקט הנוכחי או של רשת VPC משותפת שמארחת את הפרויקט הנוכחי או שמשותפת איתו. -
REGION: האזור שבו נמצאים תת-הרשת והמכונות הווירטואליות של העבודה:- אם כוללים את השדה
allowedLocationsכדי לציין את המיקום המותר של המכונות הווירטואליות עבור העבודה, צריך לציין כאן את אותו אזור. - אחרת, האזור צריך להיות זהה למיקום שבוחרים למשרה (
LOCATION).
- אם כוללים את השדה
-
SUBNET: השם של תת-רשת שמהווה חלק מרשת ה-VPC ונמצאת באותו אזור כמו המכונות הווירטואליות של העבודה.
-
יוצרים את העבודה באמצעות הפקודה
gcloud batch jobs submit.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: השם של המשימה. -
LOCATION: המיקום של המשרה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של העבודה.
-
Java
Node.js
Python
API
כדי ליצור משימה באמצעות Batch API, משתמשים בשיטה jobs.create ומציינים את פרטי ההגדרה של המשימה.
כדי לציין את הרשת לעבודה, צריך לכלול את השדות network ו-subnetwork.
לדוגמה, כדי ליצור משימת סקריפט בסיסית שפועלת ברשת ספציפית, שולחים את בקשת POST הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy": {
"network": {
"networkInterfaces": [
{
"network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
"subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET"
}
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שלכם. -
LOCATION: המיקום של המשרה. -
JOB_NAME: השם של המשימה. -
HOST_PROJECT_ID: מזהה הפרויקט של הפרויקט שבו נמצאת הרשת שציינתם:- אם אתם משתמשים ברשת VPC משותפת, צריך לציין את הפרויקט המארח.
- אחרת, מציינים את הפרויקט הנוכחי (
PROJECT_ID).
-
NETWORK: השם של רשת VPC בפרויקט הנוכחי או של רשת VPC משותפת שמארחת את הפרויקט הנוכחי או שמשותפת איתו. -
REGION: האזור שבו נמצאים תת-הרשת והמכונות הווירטואליות של העבודה:- אם כוללים את השדה
allowedLocationsכדי לציין את המיקום המותר של המכונות הווירטואליות עבור העבודה, צריך לציין כאן את אותו אזור. - אחרת, האזור צריך להיות זהה למיקום שבוחרים למשרה (
LOCATION).
- אם כוללים את השדה
-
SUBNET: השם של תת-רשת שמהווה חלק מרשת ה-VPC ונמצאת באותו אזור כמו המכונות הווירטואליות של העבודה.
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- מידע נוסף על רשתות
- מידע נוסף על יצירת משרה
- איך רואים את העבודות והמשימות?