התאמה אוטומטית לעומס (automatic scaling) של Pods רב-ממדית מאפשרת לכם לבחור כמה דרכים להתאמת הגודל של האשכולות. בעזרת שינוי גודל אוטומטי של Pod בכמה ממדים, אתם יכולים להשתמש בשינוי גודל אופקי על סמך מעבד (CPU) ובשינוי גודל אנכי על סמך זיכרון בו-זמנית.
אובייקט MultidimPodAutoscaler משנה את בקשות הזיכרון ומוסיף רפליקות כדי שהשימוש הממוצע במעבד של כל רפליקה יתאים לשימוש היעד.
דרישות מוקדמות
- גרסה 1.19.4-gke.1700 ואילך של אשכול GKE.
- באשכולות רגילים, צריך להפעיל את התכונה 'התאמה אנכית של קבוצות Pod לעומס' באשכול. התאמה אנכית של קבוצות Pod לעומס כבר מופעלת באשכולות Autopilot.
שימוש בהתאמה אוטומטית של קבוצות Pod לעומס בכמה ממדים
בדוגמה הזו אנחנו מראים איך ליצור פריסה ואובייקט MultidimPodAutoscalerכדי להגדיר את הפריסה כך שתתבצע בה קנה מידה אוטומטי.
יצירת פריסה
כדי ליצור MultidimPodAutoscaler, צריך קודם ליצור את עומס העבודה שהוא עוקב אחריו. בקובץ php-apache.yaml מצוין ערך לבקשות CPU:
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ports:
- containerPort: 80
resources:
# Since MPA does not specify CPU requests, you must specify a request in
# the Deployment
limits:
cpu: 500m
requests:
cpu: 200m
כדי ליצור את הפריסה, מחילים את המניפסט php-apache.yaml:
kubectl apply -f php-apache.yaml
יצירת MultidimPodAutoscaler
אחרי שיוצרים את הפריסה, אפשר ליצור אובייקט MultidimPodAutoscaler. במניפסט MultidimPodAutoscaler הבא, מספר הרפליקות ובקשות הזיכרון מותאמים אוטומטית על סמך הערכים שאתם מציינים.
מידע נוסף על השדות בדוגמה הזו מופיע בקטע הפניית API.
apiVersion: autoscaling.gke.io/v1beta1
kind: MultidimPodAutoscaler
metadata:
name: php-apache-autoscaler
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
goals:
metrics:
- type: Resource
resource:
# Define the target CPU utilization request here
name: cpu
target:
type: Utilization
averageUtilization: 60
constraints:
global:
minReplicas: 1
maxReplicas: 5
containerControlledResources: [ memory ]
container:
- name: '*'
# Define boundaries for the memory request here
requests:
minAllowed:
memory: 1Gi
maxAllowed:
memory: 2Gi
policy:
updateMode: Auto
כדי ליצור את MultidimPodAutoscaler, מחילים את php-apache-autoscaler.yaml
manifest:
kubectl apply -f php-apache-autoscaler.yaml
צפייה ב-MultidimPodAutoscaler
כדי להציג את כל האובייקטים של MultidimPodAutoscaler, משתמשים בפקודה kubectl get:
kubectl get mpa
מחיקת MultidimPodAutoscaler
כדי למחוק אובייקט MultidimPodAutoscaler, משתמשים בפקודה kubectl delete:
kubectl delete -f php-apache-autoscaler.yaml
הפניית API
בקטעים הבאים מפורטים השדות שאפשר להוסיף לאובייקט MultidimPodAutoscaler.
כל השדות הם בשפה apiVersion v1beta1 autoscaling.gke.io.
MultidimPodAutoscaler
MultidimPodAutoscaler היא ההגדרה של כלי להתאמה אוטומטית של Pods רב-ממדיים, שמנהל באופן אוטומטי את משאבי ה-Pods ואת המספר שלהם על סמך נתוני שימוש היסטוריים ונתוני שימוש בזמן אמת.
| שדה | סוג | תיאור |
|---|---|---|
metadata |
ObjectMeta |
מטא-נתונים סטנדרטיים של אובייקטים. |
spec |
MultidimPodAutoscalerSpec |
ההתנהגות הרצויה של הכלי הרב-ממדי להתאמת גודל ה-Pod באופן אוטומטי. |
status |
MultidimPodAutoscalerStatus |
הסטטוס האחרון שנצפה של קנה המידה האוטומטי של Pod רב-ממדי. |
MultidimPodAutoscalerSpec
MultidimPodAutoscalerSpec הוא המפרט שמגדיר את ההתנהגות של המידרוג האוטומטי.
| שדה | סוג | תיאור |
|---|---|---|
ScaleTargetRef |
autoscaling.CrossVersionObjectReference |
הפניה שמצביעה על משאב יעד להרחבה (עם משאב המשנה Scale). |
Goals |
*MultidimGoals |
מטרות שהכלי האוטומטי לשינוי גודל של Pod רב-ממדי מנסה להשיג ולשמור עליהן. |
Constraints |
*MultidimConstraints |
תיאור האילוצים של התאמה אוטומטית לעומס. המגבלות חשובות יותר מהיעדים. אם המגבלות חוסמות יעד מסוים, לא תהיה אפשרות להשיג את היעד הזה. לדוגמה, אם תגיעו למספר המקסימלי של העתקים, לא תוכלו להגדיל את הקיבולת גם אם יהיה צורך בכך. |
Policy |
*MultidimPolicy |
המדיניות מאפשרת לציין איך ההמלצות ייושמו. |
MultidimGoals
MultidimGoals הן יעדים שהכלי האוטומטי לשינוי גודל של Pod רב-ממדי מנסה להשיג.
| שדה | סוג | תיאור |
|---|---|---|
Metrics |
[]MetricSpec |
מכיל את רשימת המדדים יחד עם הערך הרצוי. הכלי לשינוי גודל ה-Pod באופן אוטומטי בכמה ממדים מנסה לשמור על ערכים קרובים לערכים הרצויים. |
MultidimConstraints
MultidimConstraints תיאור האילוצים של התאמה אוטומטית לעומס. אילוצים מקבלים עדיפות על פני יעדים.
| שדה | סוג | תיאור |
|---|---|---|
Global |
*GlobalConstraints |
אילוצים שחלים על האפליקציה כולה. |
Pod |
*PodConstraints |
אילוצים שחלים על Pods יחידים מהאפליקציה המטורגטת. |
ContainerControlledResources |
[]ResourceName |
משאבי מאגר תגים שצריכים להיות בשליטת הכלי לשינוי גודל אוטומטי. הערך הנתמך היחיד הוא memory. |
Container |
[]ContainerConstraints |
אילוצים שחלים על קונטיינרים של Pod. |
ResourceConstraints
ResourceConstraints מגדירים את הכמות המינימלית והמקסימלית של משאבים שאפשר להקצות לקונטיינר, ל-Pod או לאפליקציה.
| שדה | סוג | תיאור |
|---|---|---|
MinAllowed |
ResourceList |
הכמות המינימלית של משאבים שאפשר להקצות. אם לא מציינים ערך, המערכת משתמשת בערך 0. |
MaxAllowed |
ResourceList |
הכמות המקסימלית של משאבים שאפשר להקצות. אם לא מציינים את הערך הזה, אין מגבלות על הכמות המקסימלית של משאבים. |
GlobalConstraints
GlobalConstraints מגדירות את האילוצים שחלים על האפליקציה כולה. המגבלות האלה כוללות את מספר העותקים או את הכמות הכוללת של המשאבים.
| שדה | סוג | תיאור |
|---|---|---|
MinReplicas |
*Int32 |
המספר המינימלי של רפליקות שיכולות להיות לאפליקציה. אם לא מציינים ערך, המערכת משתמשת בערך 1. |
MaxReplicas |
*Int32 |
המספר המקסימלי של העתקים שהאפליקציה יכולה לכלול. אם לא מציינים את הערך הזה, אין הגבלות על מספר הרפליקות המקסימלי. |
Requests |
*ResourceConstraints |
הכמות המינימלית והמקסימלית של משאבים שאפליקציה יכולה לבקש, בסיכום של כל הפודים. |
PodConstraints
PodConstraints מגדירים את הכמות המינימלית והמקסימלית של משאבים שיחידת Pod יכולה לבקש, בסיכום של כל הקונטיינרים ששייכים ליחידת ה-Pod.
| שדה | סוג | תיאור |
|---|---|---|
Requests |
*ResourceConstraints |
הכמות המינימלית והמקסימלית של משאבים ש-Pod יחיד יכול לבקש, בסיכום של כל הקונטיינרים ששייכים ל-Pod. |
ContainerConstraints
ContainerConstraints הן מגבלות שחלות על קונטיינרים של Pod.
| שדות | סוג | תיאור |
|---|---|---|
Name |
String |
שם הקונטיינר שעבורו מצוינים האילוצים. אפשר גם להשתמש ב-* כדי לציין אילוצים לכל הקונטיינרים ב-Pod. |
Requests |
*ResourceConstraints |
הכמות המינימלית והמקסימלית של משאבים שהכלי המכיל שצוין יכול לבקש. |
UpdateMode
אפשר להשתמש בלחצן UpdateMode כדי לקבוע איך להחיל את ההמלצות המחושבות.
| שדות | סוג | תיאור |
|---|---|---|
AutoUpdates |
UpdateMode = "Auto" |
המשמעות של 'עדכונים אוטומטיים' היא שאפשר להחיל את כל ההמלצות לשינוי גודל באופן אוטומטי בכל שלב. |
MultidimPolicy
| שדות | סוג | תיאור |
|---|---|---|
Update |
UpdateMode |
הגדרת אופן היישום של ההמלצות. ערך ריק גורם לכשל באימות. |
MultidimPodAutoscalerStatus
MultidimPodAutoscalerStatus מתאר את מצב זמן הריצה של הכלי להתאמה אוטומטית.
| שדות | סוג | תיאור |
|---|---|---|
ObservedGeneration |
*Int64 |
הדור האחרון שנצפה על ידי הכלי הזה לשינוי גודל אוטומטי. |
RecommendedPodResources |
*RecommendedPodResources |
הכמות האחרונה של משאבים שהמערכת לשינוי גודל אוטומטי המליצה עליהם עבור ה-Pods המבוקרים. |
CurrentReplicas |
Int32 |
CurrentReplicas הוא המספר הנוכחי של רפליקות של Pods שמנוהלות על ידי הסקיילר האוטומטי הזה, כפי שנראה לאחרונה על ידי הסקיילר האוטומטי. |
DesiredReplicas |
Int32 |
DesiredReplicas הוא מספר הרפליקות הרצוי של ה-Pods שמנוהלים על ידי הסקיילר האוטומטי הזה, כפי שחושב לאחרונה על ידי הסקיילר האוטומטי. |
CurrentMetrics |
[]autoscaling.MetricStatus |
מצב הקריאה האחרון של המדדים שנעשה בהם שימוש במידרוג האוטומטי הזה. |
Conditions |
[]metav1.Condition |
Conditions הוא קבוצת התנאים שנדרשים כדי שהמידרוג האוטומטי הזה יבצע מידרוג של היעד שלו, ומציין אם התנאים האלה מתקיימים או לא. |
המאמרים הבאים
- מידע נוסף על הגדרה של התאמה אופקית של קבוצות Pod לעומס
- מידע נוסף על הגדרה של התאמה אנכית של קבוצות Pod לעומס.