במדריך הזה נסביר איך להשתמש בהרחבת קנה מידה אוטומטית של מדדים חיצוניים ב-Cloud Run (CREMA) כדי להרחיב באופן אוטומטי את קנה המידה של מאגרי העובדים ב-Cloud Run על סמך מדדים של Prometheus.
שירות ה-autoscaler של CREMA מבצע חישוב מבוסס-יחס באמצעות נתונים מ-Prometheus. שירות ההתאמה האוטומטית של קנה המידה משנה באופן דינמי את מספר המופעים כדי לוודא שלמאגר העובדים יש את כמות המשאבים הנכונה לעומס העבודה הנוכחי. CREMA מחשב את ניצול המעבד של מאגר העובדים לאורך תקופת זמן ספציפית ומשווה אותו לסף שהגדרתם כדי להתאים את המופעים.
מטרות
במדריך הזה תלמדו:
פריסת מאגר עובדים ב-Cloud Run כדי להריץ עומס עבודה ברקע שמדווח על מדדי ניצול ל Google Cloud שירות מנוהל ל-Prometheus.
פורסים את שירות CREMA של שינוי גודל אוטומטי כדי לשנות את גודל מאגר העובדים באופן דינמי על סמך מדדי Prometheus.
בודקים את שירות CREMA על ידי התבוננות ביומני השירות ואימות השינויים במספר המופעים במסוף Google Cloud .
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
- נכנסים לחשבון 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.
מפעילים את ממשקי ה-API של Cloud Run, Parameter Manager, Artifact Registry, Cloud Build ו-Cloud Monitoring.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים- מתקינים ומפעילים את ה-CLI של gcloud.
- עדכון רכיבים:
gcloud components update
- מגדירים את משתני ההגדרה הבאים עבור CREMA שמשמשים במדריך הזה:
מחליפים את PROJECT_ID במזהה הפרויקט. Google Cloudexport PROJECT_ID=PROJECT_ID export REGION=us-central1 export CREMA_SA_NAME=crema-service-account export CONSUMER_SA_NAME=consumer-service-account export CONSUMER_WORKER_POOL_NAME=worker-pool-consumer export CREMA_SERVICE_NAME=my-crema-service
- מגדירים את מזהה הפרויקט באמצעות הפקודה הבאה:
gcloud config set project $PROJECT_ID
- החיובים על שירות ההרחבה של Cloud Run מבוססים על התדירות שבה מפעילים את ההרחבה. למידע נוסף, אפשר להשתמש במחשבון התמחור כדי להעריך את העלויות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- מנהל מאגר של Artifact Registry (
roles/artifactregistry.repoAdmin) - עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) - אדמין ב-Cloud Run (
roles/run.admin) - יצירת חשבונות שירות (
roles/iam.serviceAccountCreator) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - צרכן שימוש בשירות (
roles/serviceusage.serviceUsageConsumer) - Parameter Manager Admin (
roles/parametermanager.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת חשבונות שירות בהתאמה אישית
במדריך הזה נדרשים שני חשבונות שירות עם ההרשאות המינימליות הנדרשות לשימוש במשאבים שהוקצו:
חשבון שירות לצרכן: זהות של מאגר העובדים שמריץ עומס עבודה ברקע. מריצים את הפקודה הבאה כדי ליצור את חשבון השירות של הצרכן:
gcloud iam service-accounts create $CONSUMER_SA_NAME \ --display-name="Consumer service account"חשבון שירות CREMA: זהות לצורך שינוי גודל אוטומטי. מריצים את הפקודה הבאה כדי ליצור את חשבון השירות של CREMA:
gcloud iam service-accounts create $CREMA_SA_NAME \ --display-name="CREMA service account"
הענקת הרשאות נוספות לחשבונות השירות המותאמים אישית שלך
כדי לשנות את גודל מאגר העובדים, צריך להעניק את ההרשאות הבאות בחשבונות השירות המותאמים אישית:
נותנים לחשבון השירות של CREMA הרשאה לקרוא מ-Parameter Manager:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/parametermanager.parameterViewer"נותנים לחשבון השירות של CREMA הרשאה לשנות את גודל מאגר העובדים:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/run.developer"נותנים לחשבון השירות של CREMA את התפקיד Service Account User:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"נותנים לחשבון השירות של CREMA הרשאה לצפייה במדדים:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.viewer"נותנים לחשבון השירות של CREMA הרשאה לכתוב מדדים:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$CREMA_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
פריסת מאגר עובדים של Cloud Run
פריסת מאגר עובדים עם 0 מופעים כדי ש-CREMA יוכל להגדיל את הקיבולת:
gcloud run worker-pools deploy $CONSUMER_WORKER_POOL_NAME \
--image us-docker.pkg.dev/cloudrun/container/worker-pool:latest \
--instances 0 \
--region $REGION \
--memory 4G \
--cpu 4 \
--service-account="$CONSUMER_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com"
פריסת שירות CREMA של התאמה אוטומטית לעומס
פורסים את שירות CREMA כדי להגדיר קנה מידה אוטומטי למאגר העובדים על סמך מדדים של Prometheus.
הגדרת התכונה לשינוי אוטומטי של גודל הקבוצה
במדריך הזה משתמשים ב-Parameter Manager כדי לאחסן את קובץ התצורה של CREMA בפורמט YAML.
יוצרים פרמטר ב-Parameter Manager כדי לאחסן גרסאות של פרמטרים עבור CREMA:
PARAMETER_ID=crema-config PARAMETER_REGION=global gcloud parametermanager parameters create $PARAMETER_ID --location=$PARAMETER_REGION --parameter-format=YAMLבספריית השורש, יוצרים קובץ YAML,
my-crema-config.yaml, כדי להגדיר את התצורה של שינוי הגודל האוטומטי. מגדירים את סף ההתאמה האוטומטית לעומס ל-50% ניצול מעבד (CPU):apiVersion: crema/v1 kind: CremaConfig spec: pollingInterval: 30 triggerAuthentications: - metadata: name: google-crema-auth spec: podIdentity: provider: gcp scaledObjects: - spec: scaleTargetRef: name: projects/PROJECT_ID/locations/us-central1/workerPools/worker-pool-consumer minReplicaCount: 1 maxReplicaCount: 20 triggers: - type: prometheus metadata: serverAddress: https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus threshold: "0.5" query: | histogram_quantile( 0.50, sum by (le) ( increase( run_googleapis_com:container_cpu_utilizations_bucket{ monitored_resource="cloud_run_worker_pool", worker_pool_name="worker-pool-consumer", location="us-central1", project_id="PROJECT_ID" }[2m] ) ) ) authenticationRef: name: google-crema-auth advanced: horizontalPodAutoscalerConfig: behavior: scaleDown: stabilizationWindowSeconds: 300מחליפים את PROJECT_ID במזהה הפרויקט. Google Cloud
מעלים את קובץ ה-YAML המקומי כגרסה חדשה של פרמטר:
LOCAL_YAML_CONFIG_FILE=my-crema-config.yaml PARAMETER_VERSION=1 gcloud parametermanager parameters versions create $PARAMETER_VERSION \ --location=$PARAMETER_REGION \ --parameter=$PARAMETER_ID \ --payload-data-from-file=$LOCAL_YAML_CONFIG_FILEמריצים את הפקודה הבאה כדי לוודא שהוספת הפרמטר הצליחה:
gcloud parametermanager parameters versions list \ --parameter=$PARAMETER_ID \ --location=$PARAMETER_REGIONאמור להופיע נתיב הפרמטר, כמו
projects/PROJECT_ID/locations/global/parameters/crema-config/versions/1.
פריסת השירות כדי להרחיב את עומסי העבודה
כדי לפרוס את השירות כדי להרחיב את מאגר העובדים, מריצים את הפקודה הבאה עם קובץ אימג' של קונטיינר שנבנה מראש:
CREMA_CONFIG_PARAM_VERSION=projects/$PROJECT_ID/locations/$PARAMETER_REGION/parameters/$PARAMETER_ID/versions/$PARAMETER_VERSION
IMAGE=us-central1-docker.pkg.dev/cloud-run-oss-images/crema-v1/autoscaler:1.0
gcloud run deploy $CREMA_SERVICE_NAME \
--image=${IMAGE} \
--region=${REGION} \
--service-account="${CREMA_SA_NAME}" \
--no-allow-unauthenticated \
--no-cpu-throttling \
--base-image=us-central1-docker.pkg.dev/serverless-runtimes/google-24/runtimes/java25 \
--labels=created-by=crema \
--set-env-vars="CREMA_CONFIG=${CREMA_CONFIG_PARAM_VERSION},OUTPUT_SCALER_METRICS=True"
בדיקת שירות ההתאמה האוטומטית לעומס
כדי לוודא ששירות ההתאמה האוטומטית לעומס פועל בצורה תקינה, צריך לבדוק את הכרטיסייה Logs של שירות Cloud Run. שירות ההתאמה האוטומטית של CREMA מגדיל את מספר המופעים של העובדים אצל הצרכן מ-0.
בכל פעם שהמדדים מתעדכנים, יומני השירות צריכים לכלול את הרשומות הבאות:
[INFO] [METRIC-PROVIDER] Starting metric collection cycle
[INFO] [METRIC-PROVIDER] Successfully fetched scaled object metrics ...
[INFO] [METRIC-PROVIDER] Sending scale request ...
[INFO] [SCALER] Received ScaleRequest ...
[INFO] [SCALER] Current instances ...
[INFO] [SCALER] Recommended instances ...
ב-Cloud Run, כל הודעת יומן מתויגת עם הרכיב שפלט אותה.
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון Google Cloud , מוחקים את כל המשאבים שהצבתם באמצעות המדריך הזה.
מחיקת הפרויקט
אם יצרתם פרויקט חדש בשביל המדריך הזה, מוחקים את הפרויקט. אם השתמשתם בפרויקט קיים ואתם רוצים לשמור אותו בלי השינויים שהוספתם במדריך הזה, תצטרכו למחוק את המשאבים שיצרתם לצורך המדריך.
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משאבי הדרכה
מוחקים את שירות Cloud Run שפרסתם במדריך הזה. שירותי Cloud Run לא צוברים עלויות עד שהם מקבלים בקשות.
כדי למחוק את שירות Cloud Run, מריצים את הפקודה הבאה:
gcloud run services delete SERVICE-NAME
מחליפים את SERVICE-NAME בשם השירות.
אפשר גם למחוק שירותים של Cloud Run מGoogle Cloud המסוף.
מסירים את הגדרת ברירת המחדל של האזור
gcloudשהוספתם במהלך ההגדרה של המדריך:gcloud config unset run/regionמסירים את הגדרות הפרויקט:
gcloud config unset projectמחיקת משאבים אחרים Google Cloud שנוצרו במדריך הזה: