ב-Cloud Run יש נפח דיסק אחסון ארעי (ephemera disk) שנשמר רק למשך הזמן של המכונה. התכונה הזו מאפשרת לציין את נפח הדיסק שאתם צריכים ואת המיקום לטעינה שלו. לאחר מכן, Cloud Run יקצה את נפח הדיסק הזה למשאב.
הדיסקים מוקצים באופן אוטומטי, מפורמטים מראש ל-ext4 ומוצפנים באמצעות מפתחות ספציפיים למכונה בזמן ההפעלה. דיסק אחסון ארעי יוצר את אמצעי האחסון כך שכל משתמש יכול לקרוא ממנו או לכתוב אליו. מכיוון שהאחסון הוא זמני, כל הנתונים נמחקים באופן סופי כשהמכונה מושבתת. זה כולל השבתות שנגרמו בגלל:
- קריסות של מכונות
- העברת תנועה לגרסה חדשה
הדיסקים מוקצים למכונה ספציפית ולא משותפים עם מכונות או גרסאות אחרות. יש לכם שליטה על המבנה של מערכת הקבצים, עם נקודת טעינה שאפשר להגדיר לכל נפח.
לפני השבתת מכונה, Cloud Run שולח אות SIGTERM לכל הקונטיינרים במכונה, שמציין את תחילתה של תקופה של 10 שניות לפני ההשבתה בפועל, שבה Cloud Run שולח אות SIGKILL. אתם יכולים להשתמש בחלון הזמן הזה של 10 שניות כדי לבצע פעולות ניקוי, כמו סבב אחרון של העתקת תוכן הדיסק לאחסון מתמיד.
תרחישים לדוגמה
אפשר להשתמש בדיסק אחסון ארעי למטרות הבאות:
- עומסי עבודה של עיבוד נתונים: כשמעבדים קובצי נתונים גדולים ב-Cloud Run, בדרך כלל מאחסנים את הקובץ כולו בזיכרון או מתזמרים את הפיצול שלו לחלקים קטנים יותר. באמצעות אחסון זמני, לא תצטרכו לשלם על כמויות גדולות של זיכרון כדי ליצור עותק מקומי זמני של הנתונים. בנוסף, תוכלו לעבד קבוצות נתונים גדולות יותר.
- שמירת נתונים במטמון: בתרחישי שימוש של הצגת תוכן באינטרנט, שמירת נתונים במטמון בדיסק במקום אחזור מאחסון מרוחק יכולה לשפר את זמן האחזור של האפליקציה.
מגבלות על נפח האחסון ועל מספר המכונות
אלה המגבלות:
- מגבלת גודל של אמצעי אחסון: כל אמצעי אחסון חייב להיות בין
1Giל-100Gi. - מגבלת האחסון של המכונה: כברירת מחדל, כל מכונה מוגבלת לנפח כולל של 10GiB. כדי להגדיר יותר מ-10GiB לכל מכונה, צריך לבקש הגדלה של המכסה.
- מגבלת נפח למכונה: כל מכונה מוגבלת ל-10 נפחי דיסק אחסון ארעי (ephemeral disk) לכל היותר.
- מגבלת פרויקט: כל פרויקט מתחיל עם מגבלת הקצאה אזורית כוללת של 0GiB כברירת מחדל. בפעם הראשונה שפורסים משאב עם דיסק אחסון ארעי באזור מסוים, הפרויקטים מקבלים באופן אוטומטי 100GiB לכל אזור. בזמן הריצה, המכסה האזורית הזו משותפת בין כל המכונות שפועלות באזור. כשפורסים משאב, הגודל המשולב של דיסק האחסון הארעי לכל מכונה, כפול המספר המקסימלי של המכונות, לא יכול לחרוג ממגבלת ההקצאה האזורית. לדוגמה, אם המגבלה האזורית היא 100GiB, אפשר להגדיר משאב עם דיסק של 10GiB עם עד 10 מכונות. במקרה הצורך, מבקשים להגדיל את המכסה.
שליחת בקשה להגדלת המכסה
אם אתם צריכים קיבולת נוספת, אתם צריכים לבקש הגדלה של המכסה למאגר ה-workers של Cloud Run. כדי לבקש את המכסה שאתם צריכים, השתמשו בקישורים שמופיעים בלחצנים הבאים.
| המכסה הנוכחית | קישור למכסה |
|---|---|
| 10GiB לכל מכונה | בקשה להגדלת המכסה לכל מכונה |
| 100GiB לכל פרויקט | בקשה להגדלת המכסה לכל פרויקט |
מגבלות
דיסק אחסון ארעי זמין רק בסביבת ההפעלה מהדור השני. כברירת מחדל, מאגרי ה-Workers של Cloud Run משתמשים בסביבת ההפעלה מהדור השני.נתיבים אסורים
ב-Cloud Run אי אפשר לטעון ווליום ב-/dev, ב-/proc או ב-/sys, או בספריות המשנה שלהם.
אזורים נתמכים
דיסק אחסון ארעי זמין בכל המיקומים של Cloud Run.
לפני שמתחילים
-
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 תוכלו לקרוא על המעבד (CPU), הזיכרון ותעבורת הנתונים היוצאת (egress) ברשת. העלות מחושבת לפי הגודל הכולל של הדיסק שהוקצה ומשך החיים של המכונה שמשתמשת בו.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת דיסק אחסון ארעי, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:
- מפתח ב-Cloud Run (
roles/run.developer) במאגר ה-workers של Cloud Run - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
רשימה של תפקידים והרשאות ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם מאגר ה-workers של Cloud Run מתממשק עם ממשקי API שלGoogle Cloud , כמו ספריות הלקוח ב-Cloud, קראו את המדריך להגדרת זהות השירות. מידע נוסף על הקצאת תפקידים זמין במאמרים הרשאות פריסה וניהול הגישה.
יצירה וטעינה של דיסק אחסון ארעי (ephemeral disk)
אפשר ליצור ולטעון דיסק אחסון ארעי באמצעות מסוף Google Cloud , Google Cloud CLI, YAML או Terraform:
המסוף
נכנסים לדף Cloud Run במסוף Google Cloud :
בתפריט הניווט של Cloud Run, לוחצים על Worker pools:
אם אתם מגדירים מאגר קיים של Worker, לוחצים על המאגר ואז על Edit and deploy new revision.
אם אתם מגדירים מאגר וורקרים חדש, לוחצים על Deploy container ואז ממלאים את הדף הראשוני של מאגר הוורקרים. לאחר מכן לוחצים על Containers, Networking, Security כדי להרחיב את דף ההגדרות של מאגרי ה-workers.
לוחצים על הכרטיסייה מאגרי תגים.
מסמנים את התיבה דיסק אחסון ארעי (ephemeral disk).
בתפריט, מציינים את גודל הדיסק הארעי.
מזינים את נתיב ההרכבה.
לוחצים על יצירה או על עדכון.
gcloud
כדי להוסיף אמצעי אחסון ולטעון אותו:
gcloud 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: השם של מאגר ה-Workers.
- 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 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: השם של מאגר ה-Workers.
- REGION: האזור של Google Cloud .
- CONTAINER_NAME: השם שרוצים לתת לקונטיינר.
-
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר ה-Workers, למשלus-docker.pkg.dev/cloudrun/container/worker-pool:latest. - VOLUME_NAME: השם שרוצים לתת לנפח האחסון.
- MOUNT_PATH: הנתיב היחסי שבו אתם טוענים את אמצעי האחסון, לדוגמה,
/mnt/my-volume. - SIZE: גודל הדיסק, לדוגמה:
10Gi. הגודל חייב להיות בין1Giל-100Giלנפחים שלephemeral-disk.
יוצרים או מעדכנים את מאגר ה-workers באמצעות הפקודה הבאה:
gcloud run worker-pools replace worker-pool.yaml
כברירת מחדל, הפקודה
gcloud run worker-pools replaceמשתמשת בקובץworker-pool.yamlאם הוא קיים.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
deletion_protection = "true"
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: השם של מאגר ה-Workers.
- REGION: האזור של Google Cloud .
-
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר שמכיל את מאגר ה-Workers, למשל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");ניקוי והסרה של אמצעי אחסון ונקודות טעינה של אמצעי אחסון
אפשר לנקות את כל אמצעי האחסון ונקודות הטעינה, או להסיר אמצעי אחסון ונקודות טעינה ספציפיים.
ניקוי כל אמצעי האחסון ונקודות הטעינה של אמצעי האחסון
כדי לנקות את כל הנפחים ונקודות העגינה של הנפחים ממאגר ה-Workers עם קונטיינר יחיד, מריצים את הפקודה הבאה:
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
שיטות מומלצות
כדי לנהל ביעילות נתונים זמניים ולשפר את ביצועי האחסון, כדאי לפעול לפי השיטות המומלצות הבאות.
העתקה לאחסון מתמיד
אם אתם מתכוונים להעתיק את התוכן של דיסק האחסון הארעי לאחסון מתמיד, כמו קטגוריה של Cloud Storage, מומלץ להעתיק אותו באופן מצטבר ולא להסתמך על תקופת החסד של 10 שניות בין SIGTERM ל-SIGKILL.
למידע נוסף על השבתת מכונות, ראו חוזה זמן ריצה של קונטיינר.
אפשר לקרוא ולכתוב מ-Cloud Storage ב-Cloud Run בלי הגדרות רשת נוספות. כדי להשיג ביצועים אופטימליים, מומלץ לנתב את התנועה אל Cloud Storage וממנו דרך רשת VPC באמצעות Direct VPC.
השיטה הזו מתאימה אם אתם לא צריכים גישה לאינטרנט ממשאב Cloud Run. אם אתם צריכים גישה לאינטרנט, הגדירו את Cloud NAT או עיינו במאמר תעבורת נתונים פנימית ל-Google API.
כדי להגדיר Direct VPC egress עם מאגר של workers, מבצעים את השלבים הבאים:
נכנסים לדף Cloud Run במסוף Google Cloud :
בתפריט, בוחרים באפשרות Worker pools ולוחצים על Deploy container כדי להגדיר מאגר חדש של קונטיינרים. אם אתם מגדירים מאגר קיים של Worker, לחצו על המאגר ואז על Edit and deploy new revision.
אם אתם מגדירים מאגר חדש של Worker, מלאו את הדף הראשוני של מאגר ה-Worker ואז לחצו על Containers, Networking, Security כדי להרחיב את דף ההגדרות של מאגרי ה-Worker.
נכנסים לכרטיסייה Networking.
לוחצים על Connect to a VPC.
בקטע Traffic routing, בוחרים באפשרות Route all traffic to the VPC כדי לשלוח את כל התנועה היוצאת דרך רשת ה-VPC.
לוחצים על Create או על Deploy.
עכשיו אפשר לשלוח בקשות ממאגר ה-Workers של Cloud Run לכל משאב ברשת ה-VPC, בהתאם לכללי חומת האש.
מפעילים את גישה פרטית ל-Google בתת-הרשת שאליה התחברתם.