Cloud Run מספק נפח דיסק זמני שנשמר רק למשך הפעלת המופע. התכונה הזו מאפשרת לציין את נפח הדיסק שדרוש לכם ואת המיקום להרכבה שלו. לאחר מכן, שירות Cloud Run יקצה את נפח הדיסק הזה למשאב.
הדיסקים מוקצים באופן אוטומטי, מעוצבים מראש ל-ext4 ומוצפנים באמצעות מפתחות ספציפיים למופע בזמן ההפעלה. כשיוצרים נפח דיסק זמני, כל משתמש יכול לקרוא או לכתוב בו. מכיוון שהאחסון הוא זמני, כל הנתונים נמחקים באופן סופי כשהמופע מושבת. ההשבתות האלה נגרמות בגלל:
- קריסות של מכונה
- העברת תנועה לגרסה חדשה
הדיסקים מוקדשים למופע ספציפי ולא משותפים בין מופעים או גרסאות אחרים. יש לכם שליטה על מבנה מערכת הקבצים באמצעות נקודת הרכבה שניתנת להגדרה לכל אמצעי אחסון.
לפני השבתת מופע, Cloud Run שולח אות SIGTERM לכל הקונטיינרים במופע, שמציין את תחילת תקופה של 10 שניות לפני ההשבתה בפועל. בשלב הזה, Cloud Run שולח אות SIGKILL. אפשר להשתמש בחלון הזמנים של 10 שניות כדי לבצע פעולות ניקוי, כמו העתקה סופית של תוכן הדיסק לאחסון קבוע.
תרחישים לדוגמה
אפשר להשתמש בדיסק אחסון ארעי (ephemera disk) למטרות הבאות:
- עומסי עבודה של עיבוד נתונים: כשמעבדים קובצי נתונים גדולים ב-Cloud Run, בדרך כלל מאחסנים את הקובץ כולו בזיכרון או מתזמנים את פיצול הקובץ לחלקים קטנים יותר. באמצעות אחסון זמני, לא תצטרכו לשלם על כמויות גדולות של זיכרון כדי ליצור עותק מקומי זמני של הנתונים. תוכלו גם לעבד מערכי נתונים גדולים יותר.
- שמירת נתונים במטמון: בתרחישי שימוש בהגשת תוכן באינטרנט, שמירת נתונים במטמון בדיסק במקום אחזור ממאגר אחסון מרוחק יכולה לשפר את זמן האחזור של האפליקציה.
מגבלות אחסון ומגבלות על מופעים
המגבלות הבאות חלות:
- מגבלת גודל הנפח: כל נפח צריך להיות בין
1Giל-100Gi. - מגבלת אחסון של מכונה: כברירת מחדל, כל מכונה מוגבלת ל-10GiB של נפח אחסון כולל. כדי להגדיר יותר מ-10GB לכל מופע, צריך לבקש הגדלה של המכסה.
- מגבלת נפח אחסון של מכונה: כל מכונה מוגבלת ל-10 נפחי אחסון זמניים לכל היותר.
- Project limit: כל פרויקט מתחיל עם מגבלת הקצאה אזורית כוללת של 0GiB כברירת מחדל. בפעם הראשונה שפורסים משאב עם דיסק אחסון ארעי (ephemera disk) באזור מסוים, הפרויקטים מקבלים באופן אוטומטי 100GiB לכל אזור. בזמן הריצה, המכסה האזורית הזו משותפת לכל המופעים שפועלים באופן פעיל באזור. כשפורסים משאב, הגודל המשולב של דיסק אחסון ארעי (ephemera disk) לכל מכונה, כפול מספר המכונות המקסימלי, לא יכול לחרוג ממגבלת ההקצאה האזורית. לדוגמה, אם המגבלה האזורית היא 100GiB, אפשר להגדיר עד 10 מופעים של משאב עם דיסק של 10GiB. אם צריך, מבקשים להגדיל את המכסה.
שליחת בקשה להגדלת המכסה
אם אתם צריכים קיבולת נוספת, אתם צריכים לבקש הגדלה של המכסה של מאגר העובדים של Cloud Run. כדי לבקש את המכסה שדרושה לכם, אתם יכולים להשתמש בקישורים שמופיעים בלחצנים הבאים.
| המיכסה הנוכחית | קישור למכסה |
|---|---|
| 10GiB לכל מופע | שליחת בקשה להגדלת המכסה לכל מופע |
| 100GiB לכל פרויקט | איך מבקשים להגדיל את המכסה לכל פרויקט |
מידע נוסף על בקשות להגדלת מכסות זמין במאמר איך מגדילים את המכסה.
מגבלות
דיסק אחסון ארעי (ephemeral disk) זמין רק בסביבת ההפעלה מהדור השני. כברירת מחדל, מאגרי עובדים ב-Cloud Run משתמשים בסביבת ההפעלה מהדור השני.נתיבים אסורים
ב-Cloud Run אי אפשר לטעון נפח אחסון בנתיבים /dev, /proc או /sys, או בספריות המשנה שלהם.
אזורים נתמכים
דיסק אחסון ארעי (ephemera disk) זמין בכל המיקומים של Cloud Run.
לפני שמתחילים
- נכנסים לחשבון 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, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.
יצירה והרכבה של דיסק ארעי
אפשר ליצור ולצרף דיסק אחסון ארעי (ephemera disk) באמצעות המסוף Google Cloud , Google Cloud CLI, YAML או Terraform:
המסוף
במסוף Google Cloud , נכנסים לדף Cloud Run:
בתפריט הניווט של Cloud Run, בוחרים באפשרות Worker pools (מאגרי עובדים):
אם אתם מגדירים מאגר עובדים קיים, לוחצים על מאגר העובדים ואז על עריכה ופריסה של עדכון חדש.
אם אתם מגדירים מאגר עובדים חדש, לוחצים על Deploy container וממלאים את הדף הראשוני של מאגר העובדים. אחר כך לוחצים על Containers, Networking, Security כדי להרחיב את דף ההגדרות של מאגרי העובדים.
לוחצים על הכרטיסייה Containers (מאגרי תגים).
מסמנים את התיבה דיסק אחסון ארעי (ephemera disk).
מציינים את הגודל של דיסק אחסון ארעי (ephemeral disk) מהתפריט.
מזינים את נתיב ההרכבה.
לוחצים על יצירה או על עדכון.
gcloud
כדי להוסיף אמצעי אחסון ולהפעיל אותו:
gcloud beta run worker-pools update WORKERPOOL \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
מחליפים את מה שכתוב בשדות הבאים:
- WORKERPOOL: השם של מאגר העובדים.
- VOLUME_NAME: השם שרוצים לתת לנפח האחסון.
- SIZE: גודל הדיסק. לדוגמה:
10Gi. הגודל צריך להיות בין1Giל-100Giעבור נפחי אחסון מסוגephemeral-disk. - MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון, לדוגמה,
/mnt/my-volume.
YAML
אם אתם יוצרים מאגר עובדים חדש, דלגו על השלב הזה. אם אתם מעדכנים מאגר עובדים קיים, מורידים את הגדרת ה-YAML שלו:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
מגדירים את קובץ ה-YAML:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL 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מחליפים את מה שכתוב בשדות הבאים:
- WORKER_POOL: השם של מאגר העובדים.
- REGION: Google Cloud האזור.
- CONTAINER_NAME: השם שרוצים לתת לקונטיינר.
-
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, כמוus-docker.pkg.dev/cloudrun/container/worker-pool:latest. - VOLUME_NAME: השם שרוצים לתת לנפח האחסון.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון, לדוגמה,
/mnt/my-volume. - SIZE: גודל הדיסק. לדוגמה:
10Gi. הגודל צריך להיות בין1Giל-100Giעבור נפחי אחסון מסוגephemeral-disk.
יוצרים או מעדכנים את מאגר העובדים באמצעות הפקודה הבאה:
gcloud run worker-pools replace worker-pool.yaml
אם קיים קובץ
worker-pool.yaml, הפקודהgcloud run worker-pools replaceמשתמשת בו כברירת מחדל.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
deletion_protection = "true"
launch_stage = "BETA"
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,
]
}
}
מחליפים את מה שכתוב בשדות הבאים:
- WORKER_POOL: השם של מאגר העובדים.
- REGION: Google Cloud האזור.
-
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר העובדים, כמוus-docker.pkg.dev/cloudrun/container/worker-pool:latest. - VOLUME_NAME: השם שרוצים לתת לנפח האחסון.
- MOUNT_PATH: הנתיב היחסי שבו אתם מטמיעים את אמצעי האחסון, לדוגמה,
/mnt/my-volume. - SIZE: גודל הדיסק. לדוגמה:
10Gi. הגודל צריך להיות בין1Giל-100Giעבור נפחי אחסון מסוג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 worker-pools update WORKER_POOL \ --clear-volumes \ --clear-volume-mounts
gcloud run worker-pools update WORKER_POOL \ --container=container1 \ --clear-volumes \ --clear-volume-mounts \ --container=container2 \ --clear-volumes \ --clear-volume-mounts
הסרה של אמצעי אחסון בודדים והצמדות של אמצעי אחסון
כדי להסיר נפח אחסון, צריך גם להסיר את כל הנפחים המחוברים שמשתמשים בנפח הזה.
כדי להסיר אמצעי אחסון בודדים או נקודות לחיבור אמצעי אחסון, משתמשים בדגלים remove-volume ו-remove-volume-mount:
gcloud run worker-pools update WORKER_POOL \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH
שיטות מומלצות
כדי לנהל ביעילות נתונים זמניים ולשפר את ביצועי האחסון, מומלץ לפעול לפי השיטות המומלצות הבאות.
העתקה לאחסון מתמיד
אם אתם מתכוונים להעתיק את התוכן של דיסק אחסון ארעי (ephemera disk) לאחסון מתמיד, כמו קטגוריה של Cloud Storage, מומלץ להעתיק את התוכן בהדרגה ולא להסתמך על תקופת החסד של 10 שניות SIGTERM עד SIGKILL.
מידע נוסף על השבתת מופעים זמין בחוזה של זמן ריצה של קונטיינר.
Cloud Run יכול לקרוא ולכתוב מ-Cloud Storage בלי להגדיר רשת נוספת. כדי להשיג ביצועים אופטימליים, מומלץ לנתב תנועה אל Cloud Storage וממנו דרך רשת VPC באמצעות Direct VPC.
השיטה הזו מתאימה אם למשאב Cloud Run לא נדרשת גישה לאינטרנט. אם אתם צריכים גישה לאינטרנט, אתם יכולים להגדיר Cloud NAT או לעיין במאמר בנושא תנועה פנימית אל Google API.
כדי להגדיר Direct VPC egress עם מאגר עובדים, מבצעים את השלבים הבאים:
במסוף Google Cloud , נכנסים לדף Cloud Run:
בתפריט, בוחרים באפשרות Worker pools (מאגרי עובדים) ולוחצים על Deploy container (פריסת קונטיינר) כדי להגדיר מאגר עובדים חדש. אם אתם מגדירים מאגר עובדים קיים, לוחצים על מאגר העובדים ואז על עריכה ופריסה של עדכון חדש.
אם אתם מגדירים מאגר עובדים חדש, ממלאים את הדף הראשוני של מאגר העובדים ולוחצים על Containers, Networking, Security (מאגרי קונטיינרים, רשתות, אבטחה) כדי להרחיב את דף ההגדרות של מאגר העובדים.
נכנסים לכרטיסייה Networking.
בוחרים באפשרות Connect to a VPC (קישור ל-VPC).
בקטע ניתוב תעבורה, בוחרים באפשרות ניתוב כל התעבורה אל ה-VPC כדי לשלוח את כל התעבורה היוצאת דרך רשת ה-VPC.
לוחצים על יצירה או על פריסה.
עכשיו אפשר לשלוח בקשות ממאגר העובדים של Cloud Run לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.
מפעילים את הגישה הפרטית ל-Google בתת-הרשת שאליה התחברתם.