בדף הזה מפורט מידע על אירועי החלטה שמופקים על ידי הכלי להתאמה אוטומטית של גודל ה-Pod ב-Google Kubernetes Engine (GKE). ניתוח האירועים האלה מאפשר לכם לקבל תובנות לגבי האופן שבו בקר ההתאמה האנכית של קבוצות Pod לעומס מנהל את שינוי גודל עומס העבודה, ולהבין את תהליך קבלת ההחלטות שמוביל לפעולות שלו.
הכלי 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 היא סביבת 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 ואוספים יומני החלטות של שינוי גודל אוטומטי של Pod אנכי.
הפעלת יומני החלטות של 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 באשכול קיים:
בודקים את ההגדרה הקיימת של האשכול. אם באשכול כבר מוגדרים רכיבי רישום ספציפיים, צריך להחליט אם רוצים להוסיף להגדרת הרישום הקיימת או להחליף אותה.
כדי להפעיל את יומני ההחלטות של הכלי האוטומטי לשינוי גודל של Pods אנכיים, מריצים את הפקודה הבאה. אם מוסיפים להגדרה קיימת, צריך להוסיף את הגדרת הרישום הקיימת לפקודה.
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.בכלי לבדיקת יומנים מוצגים כל היומנים של Vertical Pod Autoscaler, כולל יומנים מכל האשכולות שבהם הופעלו יומנים של Vertical Pod Autoscaler בפרויקט.
אפשר לסנן את היומנים לפי שם האשכול או שם עומס העבודה. לדוגמה, כדי להציג רשימה של אירועים מתוך עומס עבודה ספציפי באשכול, מציינים את שם האשכול ואת שם עומס העבודה באמצעות השאילתה הבאה:
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
סוגים של יומנים
אירועי ההחלטה של הכלי לשינוי גודל ה-Pods באופן אנכי מאוחסנים ב-Cloud Logging, בlogName="projects/PROJECT_ID/logs/container.googleapis.com%2Fvpa-controller"
מיקום שמופיע ב_Default bucket באותו פרויקט כמו אשכול GKE. כל האירועים שמתועדים הם בפורמט JSON ואפשר למצוא אותם בשדה jsonPayload של רשומה ביומן.
הסוג והתדירות של היומנים שנוצרים תלויים במצב ההתאמה האוטומטית של Pods אנכיים שהוגדר לעומס העבודה. יש ארבעה סוגים של יומני VPA, שמסווגים לפי הפעולה שהם מבצעים:
- המלצת עדכון: כל Pod של קנה מידה אנכי יוצר יומן חדש של המלצות עדכון כל דקה.
- Evict Pod: כל Vertical Pod Autoscaler יוצר יומן אחד של Evict Pod לכל Pod, כשהוא מחליט לשנות את הגודל במצב
Recreate. - החלת המלצה על הוצאה: כל כלי לשינוי גודל של Pod באופן אנכי יוצר יומן אחד של המלצות להחלה לכל Pod, כשהכלי מחליט לשנות את הגודל במצב
Recreate. - החלת המלצה במקום: כל כלי להתאמה אנכית של קבוצות Pod לעומס יוצר יומן אחד של החלת המלצה במקום לכל Pod, כשהכלי מחליט לשנות את הגודל במצב
InPlaceOrRecreate.
סוגי היומנים שהבקר יכול להפיק תלויים במצב של הכלי האוטומטי לשינוי גודל של Pods אנכיים. בטבלה הבאה מפורטים היומנים שאפשר להפיק לכל מצב.
| מצב של Vertical Pod Autoscaler | סוגי היומנים שאפשר להפיק |
|---|---|
Auto (הוצא משימוש) או Recreate |
|
InPlaceOrRecreate |
|
ב-Vertical Pod Autoscaler עם מצב InPlaceOrRecreate, אם In-place resize נכשל, ההתנהגות של ה-Autoscaler זהה להתנהגות במצב Recreate.
עדכון ההמלצה
אפשר ליצור יומן המלצות לעדכון באמצעות המצבים הבאים של vertical Pod autoscaler: Auto (הוצא משימוש), Recreate ו-InPlaceOrRecreate.
השדה jsonPayload ביומן ההחלטות הזה כולל את השדות הבאים:
| שדה | תיאור |
|---|---|
vpaName |
שם כתובת ה-VPA. |
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"
}
Evict Pod
יומן של הוצאת Pod זמין במצב VPA Auto (הוצא משימוש) וRecreate.
סוג היומן הזה אפשרי גם במצב VPA InPlaceOrRecreate אם הפעולה In-place resize נכשלת.
השדה jsonPayload ביומן ההחלטות הזה כולל את השדות הבאים:
| שדה | תיאור |
|---|---|
vpaName |
שם כתובת ה-VPA. |
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 |
שם כתובת ה-VPA. |
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 |
שם כתובת ה-VPA. |
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 האנכי