במאמר הזה מוסבר איך להשתמש בסטרימינג של תמונות כדי למשוך קובצי אימג' של קונטיינרים למשימות קונטיינרים ב-Batch.
סטרימינג של קובצי אימג' מאפשר לאתחל משימות באצווה בלי להמתין לסיום ההורדה של קובץ אימג' של קונטיינר, וכך נהנים מהיתרונות הבאים:
- זמן האחזור קצר יותר כששולפים תמונות גדולות
- זמן מהיר יותר להתחלת ביצוע העבודה
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
אם עדיין לא עשיתם זאת, מפעילים את Container File System API על ידי הרצת הפקודה הבאה:
gcloud services enable containerfilesystem.googleapis.com
- אם קובצי האימג' בקונטיינרים שלכם מוגנים על ידי VPC Service Controls, צריך לעדכן את גבולות גזרה לשירות כדי לכלול את
containerfilesystem.googleapis.com.
מגבלות
יש כמה מגבלות לסטרימינג של תמונות בקבוצות:
- התכונה 'אצווה' תומכת רק בהזרמת תמונות לקובצי אימג' לקונטיינרים שמאוחסנים ב-Artifact Registry. אם אתם משתמשים כרגע ב-Container Registry לניהול קובצי האימג' בקונטיינרים, אתם יכולים לעבור ל-Artifact Registry.
- צריך להריץ את מכונות ה-VM של משימת האצווה באותו מיקום שבו מאוחסן קובץ אימג' של קונטיינר ב-Artifact Registry.
- אין תמיכה בקונטיינרים שמשתמשים בגרסה 2 של מניפסט קובץ האימג' של Docker, סכימה 1.
- כשמשתמשים בסטרימינג של תמונות,
קונטיינרים שניתנים להרצה
תומכים רק בשדות הבאים:
imageUricommandsentrypointvolumesenableImageStreaming
- אין תמיכה בקובצי אימג' בקונטיינר עם שכבות ריקות או שכבות כפולות.
יצירת משימה שמשתמשת בהזרמת תמונות
כדי ליצור משימת קונטיינר ב-Batch שמשתמשת בהזרמת תמונות:
משתמשים ב-Google Cloud CLI או ב-API בארכיטקטורת REST כדי ליצור משימת קונטיינר.
כדי להפעיל סטרימינג של תמונות עבור קונטיינר שאפשר להפעיל, צריך להגדיר את השדה enableImageStreaming לערך true ואת השדה imageUri לתמונה שמאוחסנת במיקום ב-Artifact Registry שמכיל את המיקום של מכונת ה-VM של העבודה.
"container": {
...
"enableImageStreaming": true
}
לדוגמה, עבודה שמשתמשת בהזרמת תמונות תכלול קובץ הגדרות בפורמט JSON שדומה לזה:
{
"taskGroups": [
{
"taskCount": "1",
"taskCountPerNode": "1",
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG",
"enableImageStreaming": true
}
}
]
}
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
]
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את הערכים הבאים:
-
LOCATION: המיקום האזורי או הרב-אזורי של המאגר שבו התמונה מאוחסנת, לדוגמהus-east1אוus. המיקום של הקונטיינר צריך להיות זהה למיקום של מכונות ה-VM של עבודת ה-Batch. -
PROJECT-ID: הפרויקט שמכיל את תמונת הקונטיינר. אם מזהה הפרויקט מכיל נקודתיים (:), כדאי לעיין במאמר בנושא פרויקטים בהיקף הדומיין. -
REPOSITORY: השם של המאגר שבו התמונה מאוחסנת. -
IMAGE: השם של קובץ האימג' בקונטיינר. -
TAG: התג שהוחל על התמונה.
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- הצגת משרות ומשימות.
- מידע נוסף על אפשרויות ליצירת משרות