Cloud Run מספק נפח דיסק זמני שנשמר רק למשך הפעלת המכונה. התכונה הזו מאפשרת לכם לציין את נפח הדיסק שאתם צריכים ואת המיקום להרכבה שלו. לאחר מכן, שירות Cloud Run יקצה את נפח הדיסק הזה למשאב.
הדיסקים מוקצים באופן אוטומטי, מעוצבים מראש ל-ext4 ומוצפנים באמצעות מפתחות ספציפיים למופע בזמן ההפעלה. דיסק זמני יוצר את אמצעי האחסון כך שכל משתמש יכול לקרוא או לכתוב בו. מכיוון שהאחסון הוא זמני, כל הנתונים נמחקים באופן סופי כשהמופע מושבת. השבתות שנגרמות בגלל:
- קריסות של מכונה
- הרחבת השירות
- העברת תנועה לגרסה חדשה
הדיסקים מוקדשים למופע ספציפי ולא משותפים בין מופעים או גרסאות אחרים. יש לכם שליטה על מבנה מערכת הקבצים באמצעות נקודת הרכבה שניתנת להגדרה לכל נפח אחסון.
לפני כיבוי מופע, Cloud Run שולח אות SIGTERM לכל הקונטיינרים במופע, שמציין את תחילת תקופה של 10 שניות לפני הכיבוי בפועל. בשלב הזה, Cloud Run שולח אות SIGKILL. אפשר להשתמש בחלון הזמן הזה של 10 שניות כדי לבצע פעולות ניקוי, כמו העתקה סופית של תוכן הדיסק לאחסון קבוע.
תרחישים לדוגמה
אפשר להשתמש בדיסק זמני למטרות הבאות:
- עומסי עבודה של עיבוד נתונים: כשמעבדים קובצי נתונים גדולים ב-Cloud Run, בדרך כלל מאחסנים את הקובץ כולו בזיכרון או מתזמנים את פיצול הקובץ לחלקים קטנים יותר. באמצעות אחסון זמני, לא תצטרכו לשלם על כמויות גדולות של זיכרון כדי ליצור עותק מקומי זמני של הנתונים. תוכלו גם לעבד מערכי נתונים גדולים יותר.
- שמירת נתונים במטמון: בתרחישי שימוש של שרתים לאינטרנט, שמירת נתונים במטמון בדיסק במקום אחזור ממאגר אחסון מרוחק יכולה לשפר את זמן האחזור של האפליקציה.
מגבלות אחסון ומגבלות על מופעים
המגבלות הבאות חלות:
- מגבלת האחסון של המכונה: כברירת מחדל, כל מכונה מוגבלת ל-10GB של נפח אחסון כולל. במקרה הצורך, מבקשים להגדיל את המכסה.
- מגבלת נפח של מופע: כל מופע מוגבל ל-10 נפחים לכל היותר.
- מגבלת פרויקט: כל פרויקט מוגבל ל-100GB לכל אזור כברירת מחדל. במקרה הצורך, מבקשים להגדיל את המכסה.
שליחת בקשה להגדלת המכסה
פרויקטים שמשתמשים בדיסק זמני ב-Cloud Run באזור מסוים בפעם הראשונה מקבלים באופן אוטומטי נפח של 10GB לכל מכונה, לכל אזור, ונפח של 100GB לכל פרויקט, לכל אזור.
אם אתם צריכים קיבולת נוספת, אתם צריכים לבקש הגדלה של המכסה לשירות Cloud Run. כדי לבקש את המכסה שדרושה לכם, לוחצים על הקישורים שמופיעים בלחצנים הבאים.
| המיכסה הנוכחית | קישור למכסה |
|---|---|
| 10GB לכל מופע | איך מבקשים להגדיל את המכסה לכל מופע |
| 100GB לכל פרויקט | איך מבקשים להגדיל את המכסה לכל פרויקט |
מידע נוסף על בקשות להגדלת מכסות זמין במאמר איך מגדילים את המכסה.
מגבלות
דיסק זמני זמין רק בסביבת ההפעלה מהדור השני.נתיבים אסורים
ב-Cloud Run אי אפשר לטעון נפח אחסון בנתיבים /dev, /proc או /sys, או בספריות המשנה שלהם.
אזורים נתמכים
תכונת הדיסק הזמני זמינה באזורים הבאים:
- עבור עומסי עבודה שלא מבוססים על GPU, דיסק זמני זמין ב:
asia-northeast1(טוקיו)europe-west1(בלגיה)רמה נמוכה של CO2
northamerica-northeast1(מונטריאול)רמה נמוכה של CO2
northamerica-northeast2(טורונטו)רמה נמוכה של CO2
us-central1(אייווה)רמה נמוכה של CO2 . האזור הזה זמין רק למוזמנים. אם אתם מעוניינים באזור הזה, אתם יכולים לפנות לצוות התמיכה בחשבונות Google.
us-east1(דרום קרוליינה)-
us-east4(צפון וירג'יניה) -
us-west1(אורגון)רמה נמוכה של CO2
- אם אתם משתמשים ב-GPU, דיסק זמני זמין בכל האזורים שתומכים ב-GPU.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- מתקינים ומפעילים את ה-CLI של gcloud.
-
עדכון רכיבים:
gcloud components update
- בדף התמחור של Cloud Run אפשר לראות את העלויות של מעבד, זיכרון ותעבורת נתונים יוצאת (egress) ברשת. הגודל הכולל של הדיסק שהוקצה ומשך החיים של המופע שמשתמש בו משפיעים על העלות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת דיסק זמני, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- Cloud Run Developer (
roles/run.developer) בשירות Cloud Run - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם שירות Cloud Run שלכם מתקשר עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.
יצירה והרכבה של דיסק ארעי
אפשר ליצור ולצרף דיסק זמני באמצעות מסוף Google Cloud , Google Cloud CLI, YAML או Terraform:
המסוף
נכנסים ל-Cloud Run במסוף Google Cloud :
בתפריט הניווט של Cloud Run, בוחרים באפשרות Services (שירותים) ולוחצים על Deploy container (פריסת קונטיינר) כדי להגדיר שירות חדש. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של עדכון חדש.
אם אתם מגדירים שירות חדש, ממלאים את דף ההגדרות הראשוניות של השירות ואז לוחצים על Containers, Networking, Security (מאגרי נתונים, רשתות, אבטחה) כדי להרחיב את דף הגדרות השירות.
לוחצים על הכרטיסייה מאגר תגים.
- בקטע מקורות מידע:
- בוחרים באפשרות דיסק זמני.
- מציינים את הגודל של הדיסק הזמני בתפריט.
- מזינים את נתיב ההרכבה.
- בקטע מקורות מידע:
לוחצים על יצירה או על פריסה.
gcloud
כדי להוסיף אמצעי אחסון ולהפעיל אותו:
gcloud beta run services update SERVICE \
--execution-environment=gen2 \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- VOLUME_NAME: השם שרוצים לתת לנפח האחסון.
- SIZE: גודל הדיסק. לדוגמה:
100Gi. הגודל צריך להיות לפחות10Giעבור נפחי אחסון מסוגephemeral-disk. - MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון, לדוגמה,
/mnt/my-volume.
YAML
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. כדי לעדכן שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את קובץ ה-YAML:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE labels: cloud.googleapis.com/location: REGION annotations: run.googleapis.com/launch-stage: BETA spec: template: spec: containers: - name: CONTAINER_NAME image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME emptyDir: medium: Disk sizeLimit: SIZEמחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- REGION: האזור Google Cloud .
- CONTAINER_NAME: השם שרוצים לתת לקונטיינר.
- IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - VOLUME_NAME: השם שרוצים לתת לנפח האחסון.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון, לדוגמה,
/mnt/my-volume. - SIZE: גודל הדיסק. לדוגמה:
100Gi. הגודל צריך להיות לפחות10Giעבור נפחי אחסון מסוגephemeral-disk.
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
אם קיים קובץ
service.yaml, הפקודהgcloud run services replaceמשתמשת בו כברירת מחדל.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_service בתצורת Terraform: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
launch_stage = "BETA"
deletion_protection = "true"
ingress = "INGRESS_TRAFFIC_ALL"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
empty_dir {
medium = "DISK"
size_limit = "SIZE"
}
}
}
lifecycle {
ignore_changes = [
launch_stage,
]
}
}
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- REGION: Google Cloud האזור.
- IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - VOLUME_NAME: השם שרוצים לתת לנפח האחסון.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון, לדוגמה,
/mnt/my-volume. - SIZE: גודל הדיסק. לדוגמה:
100Gi. הגודל צריך להיות לפחות10Giעבור נפחי אחסון שלephemeral-disk.
קריאה וכתיבה של נתונים בווליום
אם משתמשים בתכונה של Cloud Run להרכבת נפח אחסון, אפשר לגשת לנפח אחסון מורכב באמצעות אותן ספריות בשפת התכנות שבהן משתמשים כדי לקרוא ולכתוב קבצים במערכת הקבצים המקומית.
האפשרות הזו שימושית במיוחד אם אתם משתמשים במאגר קיים שמצפה שהנתונים יאוחסנו במערכת הקבצים המקומית, ומשתמש בפעולות רגילות של מערכת הקבצים כדי לגשת אליהם.
בקטעי הקוד הבאים מניחים שיש נקודת הרכבה של נפח אחסון עם mountPath שמוגדר ל-/mnt/my-volume.
Nodejs
משתמשים במודול File System כדי ליצור קובץ חדש או לצרף לקובץ קיים בכרך, /mnt/my-volume:
var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });Python
כתיבה לקובץ שנשמר בכרך, /mnt/my-volume:
f = open("/mnt/my-volume/sample-logfile.txt", "a")המשך
משתמשים בחבילה os כדי ליצור קובץ חדש שנשמר בווליום, /mnt/my-volume:
f, err := os.Create("/mnt/my-volume/sample-logfile.txt")Java
משתמשים במחלקה Java.io.File כדי ליצור קובץ יומן בכרך /mnt/my-volume:
import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");ניקוי והסרה של נפחים ונקודות חיבור של נפחים
אפשר לנקות את כל אמצעי האחסון והחיבורים, או להסיר אמצעי אחסון וחיבורים ספציפיים.
ניקוי כל אמצעי האחסון והחיבורים שלהם
כדי לנקות את כל אמצעי האחסון והטעינות של אמצעי האחסון משירות עם קונטיינר יחיד, מריצים את הפקודה הבאה:
gcloud run services update SERVICE \ --clear-volumes --clear-volume-mounts
אם יש לכם כמה מאגרי תגים, אתם יכולים לפעול לפי המוסכמות של CLI של sidecars כדי לנקות את הכרכים והחיבורים של הכרכים:
gcloud run services update SERVICE \ --container=container1 \ --clear-volumes -–clear-volume-mounts \ --container=container2 \ --clear-volumes \ -–clear-volume-mounts
הסרה של אמצעי אחסון בודדים והצמדות של אמצעי אחסון
כדי להסיר נפח אחסון, צריך גם להסיר את כל הנפחים המחוברים שמשתמשים בנפח הזה.
כדי להסיר אמצעי אחסון בודדים או נקודות חיבור של אמצעי אחסון, משתמשים בדגלים remove-volume ו-remove-volume-mount:
gcloud run services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH
שיטות מומלצות
כדי לנהל ביעילות נתונים זמניים ולשפר את ביצועי האחסון, מומלץ לפעול לפי השיטות המומלצות הבאות.
העתקה לאחסון מתמיד
אם אתם מתכוונים להעתיק את התוכן של הדיסק הזמני לאחסון קבוע, כמו קטגוריית Cloud Storage, מומלץ להעתיק את התוכן בהדרגה, ולא להסתמך על תקופת החסד של 10 שניות SIGTERM עד SIGKILL.
מידע נוסף על השבתת מופעים זמין בחוזה של זמן ריצה של קונטיינר.
Cloud Run יכול לקרוא ולכתוב מ-Cloud Storage בלי להגדיר רשת נוספת. כדי להשיג ביצועים אופטימליים, מומלץ לנתב תנועה אל Cloud Storage וממנו דרך רשת VPC באמצעות Direct VPC.
השיטה הזו מתאימה אם למשאב Cloud Run לא נדרשת גישה לאינטרנט. אם אתם צריכים גישה לאינטרנט, אתם יכולים להגדיר Cloud NAT או לעיין במאמר בנושא תנועה פנימית אל Google API.
כדי להגדיר תעבורת נתונים יוצאת (egress) ישירה של VPC בשירות, פועלים לפי השלבים הבאים:
במסוף Google Cloud , נכנסים לדף Cloud Run:
אם אתם מגדירים שירות חדש שאתם פורסים, לוחצים על יצירת שירות. אם אתם מגדירים ומפעילים שירות קיים, לוחצים על השירות ואז על עריכה והפעלת גרסה חדשה.
אם אתם מגדירים שירות חדש, ממלאים את הדף של הגדרות השירות הראשוניות לפי הצורך, ואז לוחצים על Containers, Networking, Security כדי להרחיב את דף הגדרות השירות.
נכנסים לכרטיסייה Networking.
לוחצים על Connect to a VPC for outbound traffic (חיבור ל-VPC לתעבורה יוצאת).
לוחצים על שליחת תנועה ישירות ל-VPC.
בשדה Network (רשת), בוחרים את רשת ה-VPC שאליה רוצים להפנות את התנועה.
בשדה רשת משנה, בוחרים את רשת המשנה שדרכה השירות מקבל כתובות IP. אפשר לפרוס כמה שירותים באותה רשת משנה.
בקטע ניתוב תעבורה, בוחרים באפשרות ניתוב כל התעבורה אל ה-VPC כדי לשלוח את כל התעבורה היוצאת דרך רשת ה-VPC.
לוחצים על יצירה או על פריסה.
כדי לוודא שהשירות נמצא ברשת ה-VPC, לוחצים על השירות ואז על הכרטיסייה Networking (רשת). הרשת ותת-הרשת מופיעות בכרטיס VPC.
עכשיו אפשר לשלוח בקשות מהשירות שלכם ב-Cloud Run לכל משאב ברשת ה-VPC, בהתאם למה שמוגדר בכללי חומת האש.
מפעילים את גישה פרטית ל-Google ברשת המשנה שאליה התחברתם.
פתרון בעיות
אם נתקלתם בבעיות, כדאי לבדוק את הדברים הבאים:- אם נפח הזיכרון של הקונטיינר שלכם עומד להיגמר והשתמשתם במסוף Google Cloud כדי לפרוס גרסה חדשה של שירות עם דיסק זמני מצורף, סביר להניח שהמסוף Google Cloud המיר את נפח הדיסק לנפח בזיכרון. Google Cloud הפעולה הזו גורמת לכך שפעולות הכתיבה לדיסק נכתבות בזיכרון, וכתוצאה מכך נגמר הזיכרון של הקונטיינר.
כדי לפתור את הבעיה, צריך לפרוס מחדש את השירות באמצעות gcloud CLI ולוודא שבקובץ ה-YAML מצוין
medium: Diskבקטעvolumes. - אם אתם רואים מהירויות רשת נמוכות כשאתם מורידים כמות גדולה של נתונים לדיסק זמני, אתם יכולים לפעול לפי השלבים להפעלת Direct VPC. אם לא מפעילים את Direct VPC, מהירויות ההעברה ברשת יהיו נמוכות יותר.