אפשר להגדיר קבוצות של מאפייני צמתים והגדרות של שינוי גודל אוטומטי ש-Google Kubernetes Engine (GKE) משתמש בהן כדי ליצור צמתים להרצת Pods באמצעות ComputeClasses. בדף הזה מוסבר איך פועלים ComputeClasses, מפורטים תרחישי שימוש ויתרונות, ומוצגים הסוגים הזמינים של ComputeClasses.
המידע הזה מיועד לאנשים הבאים:
- מומחי Cloud Architect ומהנדסי פלטפורמות שרוצים לצמצם את התקורה שקשורה לניהול תשתית של אשכולות.
- מפעילים של אפליקציות ומהנדסי SRE שרוצים להתמקד בהפעלת עומסי עבודה בלי לחשוב על התשתית הבסיסית.
מידע על ComputeClasses והתאמה אוטומטית של גודל האשכול
ComputeClass היא קבוצה של מאפייני צמתים והגדרות של התאמה אוטומטית לעומס, שקיימת כאובייקט של Kubernetes API באשכול GKE. אפשר לבחור ComputeClass בכל עומס עבודה של Kubernetes שפורסים. התאמה אוטומטית של גודל האשכול ב-GKE משתמשת במאפיינים ב-ComputeClass כדי ליצור צמתים לעומסי עבודה.
מהנדסי פלטפורמה יכולים להשתמש ב-ComputeClasses כדי להגדיר תשתית לסוגים שונים של עומסי עבודה, כך שכל צומת חדש יעבור אופטימיזציה לדרישות הספציפיות של האפליקציות. התכונה ComputeClasses משפרת את המהירות והגמישות של התאמה אוטומטית לעומס (auto-scaling) ב-GKE, ומספקת שיטה הצהרתית להגדרת אפשרויות תשתית באשכולות. מידע נוסף מופיע בקטע היתרונות של שימוש ב-ComputeClasses.
יכולות ותכונות ספציפיות של GKE זמינות רק עם ComputeClasses, כמו:
- Fallback compute priorities: הגדרה של כמה קבוצות של תצורות תשתית ב-ComputeClass, עם עדיפות לפי ההעדפות שלכם. במהלך שינוי הגודל, אם ההגדרה המועדפת ביותר לא זמינה, GKE חוזר להגדרה הבאה.
- העברה פעילה לצמתים בעדיפות גבוהה יותר: אם ההגדרה הזו מופעלת, GKE מחליף באופן אוטומטי צמתים שנמצאים במקום נמוך יותר ברשימת העדיפויות של הגיבוי בצמתים שנמצאים במקום גבוה יותר ברשימה הזו, לאורך זמן. כתוצאה מכך, בסופו של דבר, ה-Pods יפעלו בצמתים המועדפים ביותר ב-ComputeClass, גם אם החומרה הזו לא הייתה זמינה כשנוצר עומס העבודה.
- מצב אוטומטי ב-GKE Standard: הפעלת עומסי עבודה במצב GKE אוטומטי כדי להשתמש בתכונות של Autopilot, כמו פלטפורמת מחשוב שמותאמת לקונטיינרים וחיוב לפי Pod, גם באשכולות Standard. GKE מנהל את הצמתים ועומסי העבודה האלה, ומספק לכם את היתרונות של מצב Autopilot בכל אשכול.
היתרונות של ComputeClasses
השימוש ב-ComputeClasses מספק לאדמינים ולמפעילים של פלטפורמות יתרונות כמו:
- שיפור הזמינות של משאבים: ComputeClasses מרחיבים את היכולות של התאמה אוטומטית לעומס באשכול GKE. תכונות של ComputeClass כמו סדרי עדיפויות של גיבוי ופרמטרים של איחוד צמתים יכולות להפחית את הסיכון של פודים שנתקעים במצב 'בהמתנה' ולהגדיל את מגוון האפשרויות שבהן אפשר להשתמש כדי לשנות את גודל הצמתים.
- הגדרה דקלרטיבית ברמת הפלטפורמה: ComputeClasses מאפשרים למהנדסי פלטפורמה לתאר באופן דקלרטיבי את תצורות הצמתים לסוגים שונים של עומסי עבודה. התאמה אוטומטית לעומס ב-GKE מנהלת את היצירה וההגדרה של צמתים ומאגרי צמתים. אתם יכולים לשלב את ComputeClasses בצינורות עיבוד הנתונים של CI/CD כדי לשמור על עקביות בתשתית המוקצית בפלטפורמה.
- תקורה נמוכה יותר לניהול: ComputeClasses מפחיתות את המורכבות של ניהול תשתית ועומסי עבודה בהיקף גדול. מהנדסי פלטפורמה מגדירים מחלקות של תשתית, ומפעילים של אפליקציות בוחרים מחלקה רלוונטית בעומס עבודה. GKE מנהל את קנה המידה, את הגדרת החומרה של הצמתים ומחיל taints, tolerations ותוויות.
מידע על המשאב המותאם אישית ComputeClass
ComputeClasses הם משאבים מותאמים אישית של Kubernetes. אפשר להגדיר את המפרט של ComputeClass בקובץ מניפסט וליצור אותו באשכולות, בדומה להגדרת משאבי עומס העבודה של Kubernetes כמו Deployments ו-Services.
בדוגמה הבאה של מניפסט מוגדר ComputeClass בשם n4:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
כש-Pod בוחר את ComputeClass הזה, GKE מבצע את הפעולות הבאות כשהוא יוצר צמתים חדשים:
- GKE יוצר צמתים שמשתמשים בסדרת המכונות N4.
- אם סדרת המכונות N4 לא זמינה, GKE יוצר צמתים שמשתמשים בסדרת המכונות N2 במקום זאת.
- אם סדרת המכונות N2 לא זמינה, GKE ממתין עד שהמשאבים יהיו זמינים כדי לתזמן את ה-Pod.
אתם יכולים לשלוט בהגדרות שונות של הצמתים באמצעות ComputeClasses, כולל מאיצים, הגדרות מערכת של הצמתים, מיקומי הצמתים והתנהגות הגיבוי של GKE כשמשאבי חומרה לא זמינים. מידע נוסף על כל ההגדרות הזמינות של ComputeClasses זמין במאמר בנושא ComputeClass CustomResourceDefinition.
בחירת ComputeClass בעומסי עבודה
כדי להשתמש ב-ComputeClass עבור עומס עבודה ב-GKE, בוחרים את ה-ComputeClass במניפסט של עומס העבודה באמצעות node selector (בורר צמתים) עבור התווית cloud.google.com/compute-class.
בדוגמה הבאה של מניפסט פריסה נבחר ComputeClass:
מחליפים את COMPUTE_CLASS בשם של ComputeClass שקיים באשכול. לדוגמה, אפשר לציין את n4
ComputeClass מהקטע About the ComputeClass custom resource או את autopilot
built-in ComputeClass.
הגדרת צומת במפרטים של עומסי עבודה
באשכולות GKE Autopilot ובאשכולות GKE Standard עם הקצאה אוטומטית של צמתים, אפשר להשתמש בבוררי צמתים בתרמילי ה-Pod כדי ליצור צמתים עם מאפיינים ספציפיים כמו משפחות מכונות, מכונות וירטואליות מסוג Spot או מעבדי GPU ו-TPU. התכונה ComputeClasses מאפשרת להגדיר את הדרישות האלה באופן מרכזי, במקום להוסיף סלקטורים נפרדים לכל עומס עבודה.
מידע על החלה של ComputeClasses כברירת מחדל
אפשר להגדיר את GKE כך שיחיל ComputeClass כברירת מחדל על Pods שלא נבחר להם ComputeClass ספציפי. אפשר להגדיר ComputeClass כברירת מחדל למרחבי שמות ספציפיים או לאשכול שלם. מידע נוסף על הגדרת אשכולות או מרחבי שמות עם מחלקה שמוגדרת כברירת מחדל זמין במאמר החלת ComputeClasses על Pods כברירת מחדל.
בטבלה הבאה מפורטות ההשפעות של הגדרת ComputeClass כברירת מחדל למרחב שמות או לאשכול:
| ההשפעות של ComputeClasses שמוגדרים כברירת מחדל | |
|---|---|
| ברירת מחדל ברמת מרחב השמות |
|
| ברירת מחדל ברמת האשכול |
|
אם GKE מחיל ComputeClass שמוגדר כברירת מחדל ברמת מרחב השמות על Pod, ה-Pod הזה לא יפעיל את ComputeClass שמוגדר כברירת מחדל ברמת האשכול, כי GKE מוסיף ל-Pod בורר צמתים עבור המחלקה שמוגדרת כברירת מחדל ברמת מרחב השמות.
העברה פעילה ב-ComputeClasses שמוגדרים כברירת מחדל
אם ComputeClass שמשמש כברירת מחדל ברמת מרחב השמות או ברמת האשכול, הערך של השדה activeMigration.optimizeRulePriority שלו מוגדר כ-true, יכול להיות שתראו את ההשפעות הבאות:
- סוג ברירת מחדל של מחשוב ברמת האשכול: יכול להיות שיופעל מעבר פעיל אם קיימים צמתים עם עדיפות נמוכה יותר ו-GKE יכול ליצור צמתים עם עדיפות גבוהה יותר. בהתאם למספר הצמתים בעדיפות נמוכה יותר, יכול להיות שההעברה תגרום להפרעה גדולה יותר בעומס העבודה.
- סיווג ברירת מחדל של מחשוב ברמת מרחב השמות: לא מופעלת העברה פעילה כי GKE מזריק את בורר הצמתים של סיווג המחשוב רק ל-Pods שנוצרו לאחרונה. פודים קיימים לא נוצרים מחדש באופן אוטומטי עם הסלקטור.
ComputeClasses שמוגדרים כברירת מחדל ברמת האשכול
כשמפעילים ComputeClasses שמוגדרים כברירת מחדל ברמת האשכול, אובייקט ComputeClass בשם default מגדיר את כללי שינוי הגודל האוטומטי של הצמתים באשכול. אם באשכול כבר יש ComputeClass בשם default, GKE משתמש בהגדרת ה-ComputeClass הזו עבור האשכול. אם לאשכול אין ComputeClass מותאם אישית בשם default, מערכת GKE מתנהגת כאילו חלים הכללים הבאים של ComputeClass:
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
כברירת מחדל, GKE לא מחיל התנהגות חלופית ולא משנה את ההגדרה של צמתים שמתבצע בהם שינוי גודל אוטומטי. כדי להחיל מאפיינים ספציפיים על צמתים עם שינוי גודל אוטומטי כברירת מחדל, צריך לפרוס ComputeClass בהתאמה אישית בשם default.
כשמגדירים את מחלקת המחשוב שמוגדרת כברירת מחדל ברמת האשכול, כדאי לקחת בחשבון את הנקודות הבאות:
- כדי למנוע מצב שבו ה-Pods נתקעים במצב
Pending, צריך להגדיר את השדהspec.whenUnsatisfiableלערךScaleUpAnyway. הערך הזה מאפשר ל-GKE ליצור צמתים גם אם הפודים מבקשים משפחות של מכונות Compute Engine שלא נכללות בכללי העדיפות של מחלקת ברירת המחדל ברמת האשכול. אם רוצים להכריח את ה-Pods האלה להשתמש בסוגי המכונות שנמצאים ב-ComputeClass שמוגדר כברירת מחדל, צריך להגדיר את השדה הזה ל-DoNotScaleUp. - כדי להגביל את השינויים ב-
defaultComputeClass, משתמשים ב-RBAC ClusterRole כדי להגביל את הפעולות update, patch, delete ו-create במשאבComputeClassשנקראdefault. - כדי לשנות את פרמטרי ברירת המחדל של איחוד הצמתים של Cluster Autoscaler, משתמשים בשדה
spec.autoscalingPolicyבמפרט ComputeClass. הפרמטרים שמציינים בשדה הזה ב-ComputeClass שמוגדר כברירת מחדל ברמת האשכול חלים על כל הצמתים באשכול. מידע נוסף זמין במאמר הגדרת פרמטרים של שינוי גודל אוטומטי לאיחוד צמתים.
המאמרים הבאים
- מידע נוסף על שיטות מומלצות לשימוש ב-ComputeClasses
- מידע נוסף על ComputeClasses מובנים
- מידע נוסף על ComputeClasses בהתאמה אישית
- קריאת ComputeClass CustomResourceDefinition
- פריסת ComputeClass ובחירה שלו בעומס עבודה