בדף הזה מפורט מידע על אירועי החלטה שמופקים על ידי vertical Pod autoscaler ב-Google Kubernetes Engine (GKE). ניתוח האירועים האלה מאפשר לכם לקבל תובנות לגבי האופן שבו בקר ה-Vertical Pod Autoscaler מנהל את שינוי גודל עומס העבודה, ולהבין את תהליך קבלת ההחלטות שמאחורי הפעולות שלו.
הכלי Vertical Pod Autoscaler פולט אירועים של החלטות, שמאוחסנים כרשומות ביומן ב-Cloud Logging.
לפני שמתחילים
חשוב לוודא שאתם עומדים בדרישות המוקדמות הבאות:
יצירת פרויקט חדש או בחירה בפרויקט קיים
אתם יכולים להשתמש בפרויקט קיים או ליצור פרויקט חדש בשביל המדריך הזה.
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
הפעלת ממשקי ה-API
מפעילים את ממשקי ה-API של GKE ו-Cloud Logging, אם הם עדיין לא מופעלים.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
הגדרת Cloud Shell
במדריך הזה תשתמשו ב-Cloud Shell כדי להריץ פקודות של gcloud ושל kubectl. Cloud Shell היא סביבת מעטפת לניהול משאבים שמתארחים ב- Cloud de Confiance by S3NS. הוא מגיע עם Google Cloud CLI ועם כלי שורת הפקודה kubectl שמותקנים מראש.
במסוף Cloud de Confiance , מפעילים את Cloud Shell.
בחלק התחתון של המסוף ייפתח סשן של Cloud Shell בתוך מסגרת.
לפני שמריצים פקודות במדריך הזה, מוודאים שפרויקט ברירת המחדל מוגדר למזהה הפרויקט שבו רוצים לפרוס את אפליקציית הדוגמה. אם הוא עדיין לא מוגדר, מריצים את הפקודה הבאה ב-Cloud Shell:
gcloud config set project PROJECT_ID
מחליפים את PROJECT_ID במזהה הפרויקט.
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שדרושות בשביל להפעיל את יצירת היומנים, ולגשת ליומנים ולעבד אותם, אתם צריכים לבקש מהאדמין לתת לכם את תפקידי ה-IAM הבאים בפרויקט:
-
כדי להפעיל רישום של אירועים של Vertical Pod Autoscaler באשכול:
אדמין של אשכול Kubernetes Engine (
roles/container.clusterAdmin) -
כדי לגשת ליומנים ולהשתמש ב-Logs Explorer וב-Observability Analytics:
Logs Viewer (
roles/logging.viewer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
דרישות
- באשכול GKE צריך להפעיל גרסה
1.36.0-gke.1601000ואילך. - מפעילים את Cloud Logging באשכול GKE.
- מוודאים שיש לכם Vertical Pod Autoscaler שאתם רוצים לעקוב אחריו. חשוב לוודא שבשדות של הכלי האוטומטי לשינוי גודל של Pods לא מופיעים מידע אישי רגיש.
עלויות
התמחור של Cloud Logging חל כשמפעילים את Cloud Logging ואוספים יומני החלטות של Vertical Pod Autoscaler.
הפעלת יומני החלטות של Vertical Pod Autoscaler
הפקודות שמופיעות בקטעים הבאים מאפשרות לייצא את היומנים שנוצרו על ידי KCP_VPA ולשמור את היומנים ביעד logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" ב-Cloud Logging.
הפעלת יומנים באשכול חדש
כדי ליצור אשכול חדש שבו מופעלים יומני ההחלטות של KCP_VPA, מריצים את הפקודה הבאה:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--project=PROJECT_ID \
--logging=SYSTEM,KCP_VPA
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול ה-Kubernetes שרוצים ליצור או לעדכן. -
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: אזורי המחשוב של האשכול.
הפעלת יומנים באשכול קיים
כדי להפעיל את יומני ההחלטות KCP_VPA באשכול קיים:
בודקים את ההגדרות הקיימות של האשכול. אם באשכול כבר מוגדרים רכיבי רישום ספציפיים, צריך להחליט אם רוצים להוסיף להגדרת הרישום הקיימת או להחליף אותה.
כדי להפעיל את יומני ההחלטות של הכלי לשינוי גודל ה-Pod באופן אוטומטי, מריצים את הפקודה הבאה. אם אתם מוסיפים להגדרה קיימת, הוסיפו לפקודה גם את הגדרת הרישום ביומן הקיימת.
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEM,KCP_VPAמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול שרוצים ליצור או לעדכן. -
PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance . -
LOCATION: אזורי מחשוב לאשכול.
-
מוודאים שהרישום ביומן מופעל
כדי לוודא שיומני ההחלטות של KCP_VPA מופעלים באשכול, מאחזרים את הגדרות הרישום ביומן המעודכנות של האשכול ובודקים את רשימת היומנים. כדי לעשות זאת, מריצים את הפקודה הבאה:
gcloud container clusters describe CLUSTER_NAME \
--location=LOCATION \
--flatten=loggingConfig \
--format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
LOCATION: האזורים או התחומים של המחשוב של האשכול.
כשיומני ההחלטות של KCP_VPA מופעלים באשכול, הפלט נראה כך:
SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER,KCP_VPA
צפייה ביומנים של Vertical Pod Autoscaler ב-Logs Explorer
אפשר לעקוב אחרי ההתנהגות של הכלי האוטומטי לשינוי גודל של Pods אנכיים באמצעות הכלי Logs Explorer. כדי לראות את היומנים של Vertical Pod Autoscaler:
עוברים לדף Logs Explorer:
בוחרים באפשרות כל שמות היומנים ומחפשים את שמות היומנים
vpa-controller.ב-Logs Explorer מוצגים כל יומני ההתאמה האנכית של קבוצות Pod לעומס, כולל יומנים מכל האשכולות שבהם הופעלו יומני ההתאמה האנכית של קבוצות Pod לעומס בפרויקט.
אפשר לסנן את היומנים לפי שם האשכול או שם עומס העבודה. לדוגמה, כדי להציג רשימה של אירועים מתוך עומס עבודה ספציפי באשכול, מציינים את שם האשכול ואת שם עומס העבודה באמצעות השאילתה הבאה:
resource.labels.cluster_name="CLUSTER_NAME" AND jsonPayload.target.name="WORKLOAD_NAME"מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
WORKLOAD_NAME: שם עומס העבודה.
-
השבתת יומני ההחלטות של התאמה אנכית של קבוצות Pod לעומס
כדי להשבית את יומני ההחלטות של
KCP_VPAבאשכול קיים, מריצים את הפקודה הבאה:gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID \ --logging=SYSTEMמוודאים שיומני ההחלטות
KCP_VPAמושבתים. כדי לעשות את זה, מריצים את הפקודה הבאה:gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'כשיומני ההחלטות של
KCP_VPAמושבתים באשכול, הפלט דומה לזה:SYSTEM_COMPONENTS,APISERVER,CONTROLLER_MANAGER,SCHEDULER
סוגים של יומנים
אירועי ההחלטה של הכלי לשינוי גודל ה-Pod באופן אנכי מאוחסנים ב-Cloud Logging, במיקום logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller" שנמצא ב-_Default bucket באותו פרויקט כמו אשכול GKE. כל האירועים שמתועדים הם בפורמט JSON ואפשר למצוא אותם בשדה jsonPayload של רשומה ביומן.
הסוג והתדירות של היומנים שנוצרים תלויים במצב ההתאמה האנכית של קבוצות Pod לעומס שהוגדר לעומס העבודה. יש ארבעה סוגים של יומני VPA, שמסווגים לפי הפעולה שהם מבצעים:
- Update recommendation: כל Vertical Pod Autoscaler יוצר יומן חדש של המלצות לעדכון בכל דקה.
- Evict Pod: כל Vertical Pod Autoscaler יוצר יומן Evict Pod אחד לכל Pod, כשהוא מחליט לשנות את הגודל במצב
Recreate. - המלצה להחלה על פינוי: כל Vertical Pod Autoscaler יוצר יומן המלצות להחלה אחד לכל Pod, כשה-Vertical Pod Autoscaler מחליט לשנות את הגודל במצב
Recreate. - החלת המלצה במקום: כל כלי להתאמה אנכית של קבוצות Pod לעומס יוצר יומן אחד של החלת המלצה במקום לכל Pod, כשהכלי מחליט לשנות את הגודל במצב
InPlaceOrRecreate.
סוגי היומנים שהבקר יכול להפיק תלויים במצב של הכלי האוטומטי לשינוי גודל של ה-Pod האנכי. בטבלה הבאה מפורטים היומנים שאפשר להפיק לכל מצב.
| מצב של Vertical Pod Autoscaler | סוגי היומנים שאפשר להפיק |
|---|---|
Auto (הוצא משימוש) או Recreate |
|
InPlaceOrRecreate |
|
ב-Vertical Pod Autoscaler עם מצב InPlaceOrRecreate, אם In-place resize נכשל, ההתנהגות של ה-Autoscaler זהה להתנהגות במצב Recreate.
עדכון ההמלצה
אפשר ליצור יומן המלצות לעדכון באמצעות המצבים הבאים של Vertical Pod Autoscaler: Auto (הוצא משימוש), Recreate ו-InPlaceOrRecreate.
השדה jsonPayload ביומן ההחלטות הזה כולל את השדות הבאים:
| שדה | תיאור |
|---|---|
vpaName |
שם העוזר האישי הווירטואלי. |
vpaNamespace |
מרחב השמות של ה-VPA. |
target |
עומס העבודה שה-VPA הזה מטרגט.
|
operation |
הפעולה שמתבצעת. הערך הוא אחד מהבאים:
|
state |
המצב של הפעולה. הערך הוא אחד מהערכים הבאים:
|
reason |
הסיבה מסבירה למה הפעולה נכשלה או למה המערכת דילגה עליה. במקרה של הצלחה בפעולות |
recommendedResources |
ההמלצה הגולמית. השדה הזה זהה לחלוטין לשדה Status.Recommendation באובייקט VPA.
|
confidence |
רמת הביטחון בהמלצה. השדה הזה קיים כשהסטטוס הוא succeeded. הערך הוא אחד מהערכים הבאים:
|
דוגמה ליומן של המלצות לעדכון:
{
"insertId": "ehz6w9d304v4zttg",
"jsonPayload": {
"state": "SUCCEEDED",
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-c"
},
"recommendedResources": [
{
"lowerBound": {
"memory": "5Mi",
"cpu": "5m"
},
"containerName": "nginx",
"uncappedTarget": {
"memory": "5Mi",
"cpu": "1m"
},
"upperBound": {
"memory": "5Mi",
"cpu": "5m"
},
"target": {
"memory": "5Mi",
"cpu": "5m"
}
}
],
"operation": "UPDATE_RECOMMENDATION",
"target": {
"name": "my-workload",
"kind": "Deployment",
"apiVersion": "apps/v1"
},
"vpaNamespace": "default",
"vpaName": "my-vpa"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"component_location": "us-central1-c",
"project_id": "my-project",
"cluster_name": "my-cluster",
"location": "us-central1-c",
"component_name": "vpa-controller"
}
},
"timestamp": "2026-01-22T19:28:16.069635605Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:28:17.750678359Z"
}
הוצאת Pod
יומן פינוי Pod זמין במצב VPA Auto (הוצא משימוש) ו-Recreate.
סוג היומן הזה אפשרי גם במצב VPA InPlaceOrRecreate אם הפעולה In-place resize נכשלת.
השדה jsonPayload ביומן ההחלטות הזה כולל את השדות הבאים:
| שדה | תיאור |
|---|---|
vpaName |
שם העוזר האישי הווירטואלי. |
vpaNamespace |
מרחב השמות של ה-VPA. |
target |
עומס העבודה שה-VPA הזה מטרגט.
|
operation |
הפעולה שמתבצעת. הערך הוא אחד מהבאים:
|
state |
המצב של הפעולה. הערך הוא אחד מהבאים:
|
reason |
הסיבה מסבירה למה הפעולה נכשלה או למה המערכת דילגה עליה. במקרה של הצלחה בפעולות |
pod |
השם של ה-Pod. |
דוגמה ליומן של הוצאת Pod:
{
"insertId": "8x278gc4f75oowf4",
"jsonPayload": {
"target": {
"kind": "Deployment",
"apiVersion": "apps/v1",
"name": "my-deployment"
},
"operation": "EVICT_POD",
"vpaName": "my-vpa",
"pod": "my-deployment-856ff7966-gr4rh",
"state": "SUCCEEDED",
"vpaNamespace": "default",
"instance": {
"vm_name": "my-unique-vm-identifier",
"zone": "us-central1-c"
}
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"component_name": "vpa-controller",
"cluster_name": "my-cluster",
"component_location": "us-central1-c",
"location": "us-central1-c",
"project_id": "my-project"
}
},
"timestamp": "2026-01-22T19:26:25.283067078Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:27.766941073Z"
}
יישום המלצה לגבי פינוי
אפשר להחיל המלצה על יומן ההוצאה מהזיכרון במצב VPA
Auto (הוצא משימוש) וRecreate. סוג היומן הזה אפשרי גם במצב VPA
InPlaceOrRecreate אם In-place resize נכשל.
השדה jsonPayload של יומן ההחלטות הזה כולל את השדות הבאים:
| שדה | תיאור |
|---|---|
vpaName |
שם העוזר האישי הווירטואלי. |
vpaNamespace |
מרחב השמות של ה-VPA. |
target |
עומס העבודה שה-VPA הזה מטרגט.
|
operation |
הפעולה שמתבצעת. הערך הוא אחד מהבאים:
|
state |
המצב של הפעולה. הערך הוא אחד מהערכים הבאים:
|
reason |
הסיבה מסבירה למה הפעולה נכשלה או למה המערכת דילגה עליה. במקרה השימוש של פעולה |
pod |
שם ה-Pod. |
appliedResources |
המשאבים שמוגדרים ב-Pod.
|
confidence |
רמת הוודאות של ההמלצה. השדה הזה קיים כשהסטטוס הוא succeeded. הערך הוא אחד מהערכים הבאים:
|
דוגמה להחלת המלצה ביומן הפינוי:
{
"insertId": "366tcmgdkq94eppg",
"jsonPayload": {
"appliedResources": [
{
"containerName": "my-container",
"requests": {
"memory": "15Mi",
"cpu": "15m"
}
}
],
"vpaName": "my-vpa",
"vpaNamespace": "default",
"instance": {
"zone": "us-central1-c",
"vm_name": "my-unique-vm-identifier"
},
"pod": "my-deployment-856ff7966-%",
"state": "SUCCEEDED",
"target": {
"name": "my-deployment",
"kind": "Deployment",
"apiVersion": "apps/v1"
},
"operation": "APPLY_RECOMMENDATION_ON_EVICTION"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"location": "us-central1-c",
"component_location": "us-central1-c",
"cluster_name": "my-cluster",
"component_name": "vpa-controller",
"project_id": "my-project"
}
},
"timestamp": "2026-01-22T19:26:25.344313199Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:32.744122156Z"
}
יישום ההמלצה במקום
יומן המיקומים של ההמלצות שיושמו זמין במצב VPA
InPlaceOrRecreate.
השדה jsonPayload ביומן ההחלטות הזה כולל את השדות הבאים:
| שדה | תיאור |
|---|---|
vpaName |
שם העוזר האישי הווירטואלי. |
vpaNamespace |
מרחב השמות של ה-VPA. |
target |
עומס העבודה שה-VPA הזה מטרגט.
|
operation |
הפעולה שמתבצעת. הערך הוא אחד מהבאים:
|
state |
המצב של הפעולה. הערך הוא אחד מהבאים:
|
reason |
הסיבה מסבירה למה הפעולה נכשלה או למה המערכת דילגה עליה. במקרה של הצלחה בפעולות |
pod |
השם של ה-Pod. |
appliedResources |
המשאבים שמוגדרים ב-Pod.
|
confidence |
רמת הוודאות של ההמלצה. השדה הזה קיים כשהסטטוס הוא succeeded. הערך הוא אחד מהערכים הבאים:
|
דוגמה ליומן של יישום המלצה במקום:
{
"insertId": "suzfuepgyiwap7hb",
"jsonPayload": {
"pod": "my-deployment-cdc7fd7b4-grxlk",
"vpaNamespace": "default",
"state": "SUCCEEDED",
"target": {
"name": "my-deployment",
"apiVersion": "apps/v1",
"kind": "Deployment"
},
"operation": "APPLY_RECOMMENDATION_IN_PLACE",
"appliedResources": [
{
"containerName": "my-container",
"limits": {
"cpu": "10m",
"memory": "10Mi"
},
"requests": {
"cpu": "5m",
"memory": "5Mi"
}
}
],
"instance": {
"zone": "us-central1-c",
"vm_name": "my-unique-vm-identifier"
},
"vpaName": "my-vpa"
},
"resource": {
"type": "k8s_control_plane_component",
"labels": {
"project_id": "my-project",
"component_location": "us-central1-c",
"cluster_name": "my-cluster",
"location": "us-central1-c",
"component_name": "vpa-controller"
}
},
"timestamp": "2026-01-22T19:26:25.214095375Z",
"severity": "INFO",
"labels": {
"compute.googleapis.com/resource_name": "my-unique-vm-identifier"
},
"logName": "projects/my-project/logs/container.googleapis.com%2Fvpa-controller",
"sourceLocation": {
"file": "vpa_event_logger.go",
"line": "23"
},
"receiveTimestamp": "2026-01-22T19:26:27.766941073Z"
}
פתרון בעיות
בקטע הזה מוסבר איך לפתור בעיות שקשורות לאירועים של Vertical Pod Autoscaler.
אין אירועים
אם לא מופיעים אירועים של החלטות לגבי שינוי גודל אנכי של Pod, צריך לוודא שביצעתם את כל הפעולות הבאות:
- הפעלתם את Cloud Logging באשכול.
- הפעלת את היומנים
KCP_VPAעבור האשכול. - פרסתם לפחות אובייקט
vpaאחד שהוגדר בצורה נכונה באשכול.
כדי להציג את הגדרות האובייקט של vpa, מריצים את הפקודה הבאה:
kubectl describe vpa $VPA_NAME
אם עדיין לא מופיעים יומנים של KCP_VPA, פנו Cloud de Confiance לתמיכה של.
המאמרים הבאים
- מידע על יומני GKE
- הסבר על היומנים של GKE.
- שאילתות לדוגמה שיעזרו לכם למצוא יומני GKE ספציפיים.
- מידע נוסף על שינוי אוטומטי של גודל ה-Pod האנכי