אפשר להגדיר קבוצות של מאפייני צמתים והגדרות של התאמה אוטומטית לעומס ש-Google Kubernetes Engine (GKE) משתמש בהן כדי ליצור צמתים להפעלת Pods באמצעות ComputeClasses. בדף הזה מוסבר איך פועלים סוגי המכונות, מפורטים תרחישי שימוש ויתרונות, ומוצגים הסוגים הזמינים של סוגי המכונות.
המידע הזה מיועד לאנשים הבאים:
- מומחי Cloud Architect ומהנדסי פלטפורמות שרוצים לצמצם את התקורה שקשורה לניהול תשתית האשכול.
- מפעילים של אפליקציות ומהנדסי SRE שרוצים להתמקד בהפעלת עומסי עבודה בלי לחשוב על התשתית הבסיסית.
מידע על ComputeClasses והתאמה אוטומטית של גודל האשכול
ComputeClass היא קבוצה של מאפייני צמתים והגדרות של התאמה אוטומטית לעומס, שקיימת כאובייקט Kubernetes API באשכול GKE. אפשר לבחור ComputeClass בכל עומס עבודה של Kubernetes שפורסים. תכונת שינוי הגודל האוטומטי של אשכולות GKE משתמשת במאפיינים ב-ComputeClass כדי ליצור צמתים לעומסי עבודה.
מהנדסי פלטפורמה יכולים להשתמש ב-ComputeClasses כדי להגדיר תשתית לסוגים שונים של עומסי עבודה, כך שכל צומת חדש יעבור אופטימיזציה לדרישות הספציפיות של האפליקציות שלכם. התכונה ComputeClasses משפרת את המהירות והגמישות של התאמה אוטומטית לעומס (auto-scaling) ב-GKE, ומספקת לכם שיטה הצהרתית להגדרת אפשרויות התשתית בכל האשכולות. מידע נוסף מופיע בקטע היתרונות של שימוש ב-ComputeClasses.
יכולות ותכונות ספציפיות של GKE זמינות רק עם ComputeClasses, כמו:
- Fallback compute priorities: define multiple sets of infrastructure configurations in a ComputeClass, prioritized based on your preferences. במהלך שינוי הגודל, אם ההגדרה המועדפת ביותר לא זמינה, GKE חוזר להגדרה הבאה.
- העברה פעילה לצמתים בעדיפות גבוהה יותר: אם ההגדרה הזו מופעלת, GKE מחליף באופן אוטומטי צמתים שנמצאים בתחתית רשימת העדיפויות של הגיבוי בצמתים שנמצאים בראש הרשימה. כתוצאה מכך, בסופו של דבר, ה-Pods יפעלו בצמתים המועדפים ביותר ב-ComputeClass, גם אם החומרה הזו לא הייתה זמינה כשנוצר עומס העבודה.
- Autopilot ב-GKE Standard: הפעלת עומסי עבודה במצב Autopilot ב-GKE כדי להשתמש בתכונות של Autopilot כמו פלטפורמת מחשוב שמותאמת לקונטיינרים וחיוב מבוסס-Pod, גם באשכולות Standard. GKE מנהל את הצמתים ועומסי העבודה האלה, ומספק לכם את היתרונות של מצב Autopilot בכל אשכול.
היתרונות של ComputeClasses
בעזרת ComputeClasses, אדמינים ומפעילים של פלטפורמות יכולים ליהנות מיתרונות כמו:
- שיפור הזמינות של משאבים: ComputeClasses מרחיבים את היכולות של התאמה אוטומטית לעומס באשכולות GKE. תכונות של ComputeClass כמו סדרי עדיפויות של חזרה לאחור ופרמטרים של איחוד צמתים יכולות להפחית את הסיכון של פודים שנתקעים במצב 'בהמתנה' ולהגדיל את מגוון האפשרויות שבהן אפשר להשתמש כדי לשנות את גודל הצמתים.
- הגדרה הצהרתית ברמת הפלטפורמה: ComputeClasses מאפשרות למהנדסי פלטפורמה לתאר באופן הצהרתי את תצורות הצמתים עבור סוגים שונים של עומסי עבודה. התאמה אוטומטית לעומס (autoscaling) ב-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 עם הקצאת צמתים אוטומטית, אפשר להשתמש בבוררי צמתים ב-Pods כדי ליצור צמתים עם מאפיינים ספציפיים כמו משפחות מכונות, מכונות וירטואליות מסוג 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 שנוצרו לאחרונה. יחידות Pod קיימות לא נוצרות מחדש באופן אוטומטי עם הסלקטור.
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 ליצור צמתים גם אם ה-Pods מבקשים משפחות של מכונות Compute Engine שלא מופיעות בכללי העדיפות של מחלקת ברירת המחדל ברמת האשכול. אם רוצים לאלץ את ה-Pods האלה להשתמש בסוגי המכונות שנמצאים ב-ComputeClass שמוגדר כברירת מחדל, צריך להגדיר את השדה הזה לערךDoNotScaleUp. - כדי להגביל את השינויים ב-
defaultComputeClass, משתמשים ב-RBAC ClusterRole כדי להגביל את הפעולות update, patch, delete ו-create במשאבComputeClassשנקראdefault. - כדי לשנות את פרמטרי ברירת המחדל של איחוד הצמתים ב-Cluster Autoscaler, משתמשים בשדה
spec.autoscalingPolicyבמפרט ComputeClass. הפרמטרים שאתם מציינים בשדה הזה ב-ComputeClass שמוגדר כברירת מחדל ברמת האשכול חלים על כל הצמתים באשכול. מידע נוסף זמין במאמר בנושא הגדרת פרמטרים של שינוי גודל אוטומטי לאיחוד צמתים.
המאמרים הבאים
- מידע נוסף על ComputeClasses מובנים
- מידע נוסף על ComputeClasses בהתאמה אישית
- קריאת ComputeClass CustomResourceDefinition
- פריסת ComputeClass ובחירה שלו בעומס עבודה