בדיקות תקינות ב-Cloud Run מוודאות שמופעלים מופעי קונטיינרים בצורה תקינה ושניתן להעביר אליהם תעבורה. באמצעות בדיקות תקינות ב-Cloud Run, אתם יכולים להתאים אישית את המועד שבו הקונטיינר מוכן לקבל בקשות, ואת המועד שבו הקונטיינר ייחשב כלא תקין וידרוש הפעלה מחדש.
תרחישים לדוגמה
אפשר להגדיר את הסוגים הבאים של בדיקות תקינות:
- בדיקות מוכנות להפעלה קובעות אם הקונטיינר הופעל ומוכן לקבל תנועה.
- בדיקות פעילות קובעות אם להפעיל מחדש קונטיינר.
- במקרה כזה, הפעלה מחדש של קונטיינר יכולה להגדיל את הזמינות של המכונה במקרה של באגים.
- בדיקות פעילות נועדו להפעיל מחדש מופעים בודדים שלא ניתן לשחזר בדרך אחרת. צריך להשתמש בהן בעיקר במקרים של כשלים במכונות שלא ניתן לשחזר, כמו במקרה של חסימה הדדית שבה מכונה פועלת אבל לא יכולה להתקדם. אתם יכולים לדרוש בדיקת פעילות לכל מאגר באמצעות מדיניות ארגונית בהתאמה אישית.
- כשמופע חווה כשלים חוזרים בבדיקה, Cloud Run מגביל את ההפעלה מחדש של המופע כדי למנוע לולאות קריסה לא מבוקרות.
בדיקות מוכנות (תצוגה מקדימה)
בדיקות מוכנות קובעות מתי מופע במופע Cloud Run צריך לשרת תעבורה. בדיקות המוכנות מתחילות אחרי שבדיקת ההפעלה של מאגר התגים עוברת בהצלחה. אם בדיקת המוכנות של מופע נכשלת מעבר לערך סף הכשל שהגדרתם, Cloud Run מפסיק לשלוח אליו תנועה חדשה. Cloud Run לא מפסיק את המופע ושולח את התנועה בחזרה למופע כשהוא מתחיל לעבור שוב את בדיקת המוכנות.
חובה להטמיע במאגר התגים את בדיקות ההפעלה, הפעילות והמוכנות באופן עקבי. אחרי שהבדיקה של ההפעלה עוברת בהצלחה, Cloud Run מחשיב את הקונטיינר כמוכן להעברת תנועה.
מומלץ להשתמש באנקפסולציה של הלוגיקה כדי שבקשת בדיקת התקינות של האתחול תתחשב במוכנות. מכיוון ש-Cloud Run יכול לנתב תנועה למופע חדש לפני שהבדיקה הראשונה של המוכנות מסתיימת, חשוב לוודא שהמעבר של בדיקת ההפעלה מבטיח גם מוכנות להצגת תנועה בבטחה באופן מיידי. אם בדיקת ההפעלה מצליחה, אנחנו מתייחסים לקונטיינר כאל קונטיינר שמוכן לקבל תנועה.
הגדרת בדיקות מוכנות להפעלה
אפשר להגדיר בדיקות HTTP, TCP ו-gRPC באמצעות Google Cloud CLI או YAML:
gcloud
הפעלה של TCP
מריצים את הפקודה הבאה:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המופע.
- DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול לפני שמבצעים את הבקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- TIMEOUT (אופציונלי): מספר השניות לחכות עד שהבדיקה תסתיים. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1. - THRESHOLD: מספר הפעמים לניסיון חוזר של הבדיקה לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- PERIOD: תקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
הפעלה של HTTP
מוסיפים נקודת קצה של HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד של המכונה כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoints) של בדיקות תקינות של HTTP נגישות מבחוץ, והן פועלות לפי אותם עקרונות כמו נקודות קצה אחרות של מופעי HTTP שחשופות מבחוץ.
מריצים את הפקודה הבאה:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - CONTAINER_PORT (אופציונלי): מגדירים את יציאת מאגר התגים שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
הפעלת gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מריצים את הפקודה הבאה:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - GRPC_INSTANCE (אופציונלי): אם המאפיין הזה מוגדר, הוא משמש בשדה המופע של
grpc.health.v1.HealthCheckRequestכשקוראים ל-grpc.health.v1.Health.Checkrpc. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
YAML
הפעלה של TCP
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מכונה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
מגדירים את המאפיין
startupProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המופע.
- DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול לפני שמבצעים את הבקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- TIMEOUT (אופציונלי): מספר השניות לחכות עד שהבדיקה תסתיים. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1. - THRESHOLD: מספר הפעמים לניסיון חוזר של הבדיקה לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- PERIOD: תקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:
gcloud beta run instances replace instance.yaml
הפעלה של HTTP
מוסיפים נקודת קצה של HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד של המכונה כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoints) של בדיקות תקינות של HTTP נגישות מבחוץ, והן פועלות לפי אותם עקרונות כמו נקודות קצה אחרות של מופעי HTTP שחשופות מבחוץ.
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מכונה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
מגדירים את המאפיין
startupProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - CONTAINER_PORT (אופציונלי): מגדירים את יציאת מאגר התגים שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- אופציונלי: אפשר להשתמש ב-
httpHeadersכדי לספק כמה כותרות מותאמות אישית או כותרות חוזרות באמצעות השדות HEADER_NAME ו-HEADER_VALUE כמו שמוצג. - TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מכונה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
הפעלת gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מכונה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
מגדירים את המאפיין
startupProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: grpc: instance: GRPC_INSTANCE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - GRPC_INSTANCE (אופציונלי): אם המאפיין הזה מוגדר, הוא משמש בשדה המופע של
grpc.health.v1.HealthCheckRequestכשקוראים ל-grpc.health.v1.Health.Checkrpc. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מכונה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
בדיקת התקינות של ה-TCP שמוגדרת כברירת מחדל
אם לא מגדירים במפורש בדיקת מוכנות מסוג TCP עבור מופע חדש של Cloud Run, Cloud Run מגדיר באופן אוטומטי בדיקת מוכנות מסוג TCP עם ערכי ברירת המחדל הבאים:
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
אפשר לשנות את ערכי ברירת המחדל האלה לפי ההוראות שבקטע הגדרת בקשה לבדיקת תקינות (probe) בדף הזה.
דרישות ופעולות של בדיקת מוכנות להפעלה
| סוג הבדיקה | דרישות | התנהגות |
|---|---|---|
| הפעלה של TCP | ללא | כברירת מחדל, Cloud Run יוצר חיבור TCP כדי לפתוח את שקע ה-TCP ביציאה שצוינה. אם Cloud Run לא מצליח ליצור חיבור, זה מצביע על כשל. אם בדיקת ההפעלה לא מצליחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), שלא יכול לעלות על 240 שניות, הקונטיינר מושבת. אפשר לעיין גם במאמר בנושא ברירות מחדל של TCP. |
| הפעלה של HTTP | יצירת נקודת קצה (endpoint) לבדיקת תקינות HTTP שימוש ב-HTTP/1 |
אחרי הגדרת הבדיקה, Cloud Run שולח בקשת HTTP GET לנקודת הקצה של בדיקת תקינות (לדוגמה, /health). כל תגובה מסוג 2XX או 3XX נחשבת להצלחה, וכל תגובה אחרת מציינת כשל.אם בדיקת ההפעלה לא מצליחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), שלא יכול לעלות על 240 שניות, הקונטיינר מושבת. |
| הפעלת gRPC | הטמעה של פרוטוקול בדיקת התקינות של gRPC במופע Cloud Run | אם בדיקת ההפעלה לא מצליחה בתוך הזמן שצוין (failureThreshold * periodSeconds), שלא יכול להיות גדול מ-240 שניות, הקונטיינר מושבת. |
הגדרת בדיקות תקינות (liveness probes)
אפשר להגדיר בדיקות HTTP ו-gRPC באמצעות Google Cloud SDK או YAML:
gcloud
בדיקת פעילות של HTTP
מוסיפים נקודת קצה של HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד של המכונה כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoints) של בדיקות תקינות של HTTP נגישות מבחוץ, והן פועלות לפי אותם עקרונות כמו נקודות קצה אחרות של מופעי HTTP שחשופות מבחוץ.
מריצים את הפקודה הבאה:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - CONTAINER_PORT (אופציונלי): מגדירים את יציאת מאגר התגים שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
מצב פעילות (liveness) של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מריצים את הפקודה הבאה:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - GRPC_INSTANCE (אופציונלי): אם המאפיין הזה מוגדר, הוא משמש בשדה המופע של
grpc.health.v1.HealthCheckRequestכשקוראים ל-grpc.health.v1.Health.Checkrpc. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
YAML
בדיקת פעילות של HTTP
מוסיפים נקודת קצה של HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד של המכונה כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoints) של בדיקות תקינות של HTTP נגישות מבחוץ, והן פועלות לפי אותם עקרונות כמו נקודות קצה אחרות של מופעי HTTP שחשופות מבחוץ.
-
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מופע קיים, צריך להוריד את הגדרות ה-YAML שלו:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
מגדירים את המאפיין
livenessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - CONTAINER_PORT (אופציונלי): מגדירים את יציאת מאגר התגים שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- אופציונלי: אפשר להשתמש ב-
httpHeadersכדי לספק כמה כותרות מותאמות אישית או כותרות חוזרות באמצעות השדות HEADER_NAME ו-HEADER_VALUE כמו שמוצג. - זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:
gcloud beta run instances replace instance.yaml
מצב פעילות (liveness) של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
-
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מופע קיים, צריך להוריד את הגדרות ה-YAML שלו:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
מגדירים את המאפיין
livenessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - GRPC_INSTANCE (אופציונלי): אם המאפיין הזה מוגדר, הוא משמש בשדה המופע של
grpc.health.v1.HealthCheckRequestכשקוראים ל-grpc.health.v1.Health.Checkrpc. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המופע.
- DELAY (אופציונלי): מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבדיקה לפני השבתת ה-container. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:
gcloud beta run instances replace instance.yaml
הדרישות לגבי בדיקת הפעילות וההתנהגות שלה
| סוג הבדיקה | דרישות | התנהגות |
|---|---|---|
| בדיקת פעילות של HTTP | יצירת נקודת קצה (endpoint) לבדיקת תקינות HTTP שימוש ב-HTTP/1 |
בדיקת הפעילות מתחילה רק אחרי שבדיקת ההפעלה מסתיימת בהצלחה. אחרי הגדרת הבקשה לבדיקת תקינות (probe), ואחרי שכל בקשה לבדיקת תקינות (probe) של אתחול מסתיימת בהצלחה, Cloud Run שולח בקשת GET לנקודת הקצה של בדיקת תקינות (לדוגמה, /health). כל תגובה מסוג 2XX או 3XX נחשבת להצלחה, וכל תגובה אחרת מצביעה על כשל.אם בקשה לבדיקת תקינות (probe) של מצב פעילות (liveness) לא מסתיימת בהצלחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), הקונטיינר מושבת באמצעות אות SIGKILL. כל הבקשות שנותרו שעדיין מוגשות על ידי הקונטיינר מסתיימות עם קוד סטטוס של HTTP 503. אחרי שהקונטיינר מושבת, מתחיל קונטיינר חדש ב-Cloud Run באמצעות שינוי גודל אוטומטי. |
| מצב פעילות (liveness) של gRPC | הטמעה של פרוטוקול בדיקת התקינות של gRPC במופע Cloud Run | אם מגדירים בדיקת מוכנות להפעלה של gRPC, בדיקת החיות מתחילה רק אחרי שבדיקת המוכנות להפעלה מסתיימת בהצלחה. אחרי שמגדירים את בדיקת החיות, ואחרי שבדיקת המוכנות להפעלה מסתיימת בהצלחה, Cloud Run שולח בקשה לבדיקת תקינות למופע. אם בדיקת החיות לא מסתיימת בהצלחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), הקונטיינר נסגר באמצעות אות SIGKILL. אחרי שהקונטיינר מושבת, מתחיל קונטיינר חדש ב-Cloud Run באמצעות שינוי גודל אוטומטי. |
הגדרת בדיקות מוכנות
המגבלות הבאות חלות על בדיקות מוכנות:- אם מפעילים את התכונה 'זיקה לסשן (session affinity)', Cloud Run ממשיך לשלוח בקשות לאותה מכונה, גם אם בדיקת המוכנות (readiness) שלה נכשלת.
אפשר להגדיר בדיקת מוכנות באמצעות Google Cloud CLI או YAML:
gcloud
מוכנות ל-HTTP
מוסיפים נקודת קצה של HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד של המכונה כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoints) של בדיקות תקינות של HTTP נגישות מבחוץ, והן פועלות לפי אותם עקרונות כמו נקודות קצה אחרות של מופעי HTTP שחשופות מבחוץ.
מריצים את הפקודה הבאה:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - PATH (אופציונלי): הנתיב היחסי לנקודת הקצה (endpoint) של HTTP, לדוגמה,
/are_you_ready. נתיב ברירת המחדל הוא/. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המכונה. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- SUCCESS_THRESHOLD (אופציונלי): מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- FAILURE_THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני דיווח על כשל, שגורם להפסקת קבלת תעבורת נתונים במכונה. ערך ברירת המחדל הוא 3.
- TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
מוכנות ל-gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מריצים את הפקודה הבאה:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המכונה. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- GRPC_INSTANCE (אופציונלי): אם המאפיין הזה מוגדר, הוא משמש בשדה המופע של
grpc.health.v1.HealthCheckRequestכשקוראים ל-grpc.health.v1.Health.Checkrpc. - SUCCESS_THRESHOLD (אופציונלי): מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- FAILURE_THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני דיווח על כשל, שגורם להפסקת קבלת תעבורת נתונים במכונה. ערך ברירת המחדל הוא 3.
- TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
YAML
מוכנות ל-HTTP
מוסיפים נקודת קצה של HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד של המכונה כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoints) של בדיקות תקינות של HTTP נגישות מבחוץ, והן פועלות לפי אותם עקרונות כמו נקודות קצה אחרות של מופעי HTTP שחשופות מבחוץ.
-
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מופע קיים, צריך להוריד את הגדרות ה-YAML שלו:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
מגדירים את המאפיין
readinessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: httpGet: path: PATH port: CONTAINER_PORT successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - PATH (אופציונלי): הנתיב היחסי לנקודת הקצה (endpoint) של HTTP, לדוגמה,
/are_you_ready. נתיב ברירת המחדל הוא/. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המכונה. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- SUCCESS_THRESHOLD (אופציונלי): מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- FAILURE_THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני דיווח על כשל, שגורם להפסקת קבלת תעבורת נתונים במכונה. ערך ברירת המחדל הוא 3.
- TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:
gcloud beta run instances replace instance.yaml
מוכנות ל-gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
-
אם אתם יוצרים מכונה חדשה, דלגו על השלב הזה. אם אתם מעדכנים מופע קיים, צריך להוריד את הגדרות ה-YAML שלו:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
מגדירים את המאפיין
readinessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT instance: GRPC_INSTANCE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE: השם של מופע Cloud Run.
- 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. - CONTAINER_PORT (אופציונלי): יציאת הקונטיינר שמשמשת את המכונה. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- GRPC_INSTANCE (אופציונלי): אם המאפיין הזה מוגדר, הוא משמש בשדה המופע של
grpc.health.v1.HealthCheckRequestכשקוראים ל-grpc.health.v1.Health.Checkrpc. - SUCCESS_THRESHOLD (אופציונלי): מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- FAILURE_THRESHOLD (אופציונלי): מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני דיווח על כשל, שגורם להפסקת קבלת תעבורת נתונים במכונה. ערך ברירת המחדל הוא 3.
- TIMEOUT (אופציונלי): מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - PERIOD (אופציונלי): התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את המכונה באמצעות הפקודה הבאה:
gcloud beta run instances replace instance.yaml
הקצאת מעבד (CPU)
- המעבד תמיד מוקצה כשמריצים בדיקות.
- כל הבדיקות מחויבות על צריכת ה-CPU ושימוש בזיכרון, אבל אין חיוב לפי בקשה.