במאמר הזה מוסבר איך להציב עומסי עבודה בסדרה ספציפית של מכונות Compute Engine, כדי לשפר את הביצועים של עומסי העבודה באשכולות של Google Kubernetes Engine (GKE) Autopilot.
חשוב לוודא שאתם מכירים את הנושאים הבאים:
- סדרות מכונות ב-Compute Engine ותרחישי שימוש
- דרישות ברמת הליבה (kernel) לאפליקציות
איך פועלת בחירת סדרת המכונות
אתם יכולים להוסיף בורר צומתי cloud.google.com/machine-family למפרט ה-Pod כדי ש-Autopilot יקצה חומרת Compute Engine ספציפית לאותו Pod. לדוגמה, אתם יכולים לבחור את סדרת המכונות C3 לפודים שצריכים יותר כוח מעבד, או את סדרת המכונות N1 לפודים שצריכים יותר זיכרון.
כדי להריץ את עומס העבודה בצורה אופטימלית, Autopilot מקצה את אחת מהמכונות עם קונפיגורציה מוגדרת (predefined) מסדרת המכונות שבחרתם.
בנוסף לביצועים אופטימליים של Pod, בחירה בסדרת מכונות ספציפית מציעה את היתרונות הבאים:
ניצול יעיל של צמתים: כברירת מחדל, Autopilot מייעל את השימוש במשאבי הצמתים על ידי תזמון של כמה שיותר פודים שמבקשים את אותה סדרת מכונות לכל צומת. הגישה הזו מאפשרת אופטימיזציה של השימוש במשאבים בצומת, וכך משפרת את היחס בין המחיר לביצועים. אם עומס העבודה שלכם צריך גישה לכל המשאבים בצומת, אתם יכולים להגדיר את עומס העבודה כך שיבקש Pod אחד לכל צומת.
עומסי עבודה עם פרצי שימוש: אתם יכולים להגדיר Pods לפרצי שימוש בקיבולת המשאבים שלא בשימוש בצומת, על ידי הגדרת מגבלות משאבים גבוהות יותר מהבקשות שלכם. פרטים נוספים זמינים במאמר הגדרת התפרצות Pod ב-GKE.
תכנון צומת ייעודי לכל Pod
אם יש לכם עומסי עבודה שדורשים הרבה משאבי מעבד (CPU) וגישה אמינה לכל המשאבים של הצומת, אתם יכולים להגדיר את ה-Pod כך ש-Autopilot ימקם Pod שמבקש סדרת מכונות בצומת משלו.
מומלץ להשתמש בצמתים ייעודיים לכל Pod כשמריצים עומסי עבודה גדולים שדורשים הרבה משאבי מעבד (CPU), כמו עומסי עבודה של אימון AI/ML או עומסי עבודה של מחשוב עתיר ביצועים (HPC).
בחירה בין תזמון של כמה פודים לבין תזמון של פוד אחד
כדי לבחור התנהגות תזמון של Pod בהתאם לדרישות שלכם, אתם יכולים להיעזר בהנחיות הבאות:
- אם יש לכם Pods שיכולים לשתף משאבי מחשוב עם Pods אחרים, או אם אתם רוצים לייעל את העלויות בזמן הפעלת Pods בחומרה ייעודית, השתמשו בהתנהגות ברירת המחדל של תזמון כמה Pods לכל צומת.
- אם יש לכם Pods שצריכים גישה אמינה למשאבים של צומת מלא, או אם אתם רוצים לצמצם את הסיכוי לשיבושים שנגרמים כתוצאה משיתוף של משאבי מחשוב, בקשו צומת ייעודי לכל Pod.
תמחור
החיוב מתבצע על המכונה הווירטואלית הבסיסית ועל כל חומרה שמצורפת אליה על ידי Compute Engine, בתוספת תשלום על ניהול הצמתים של Autopilot ועל יכולת ההתאמה לעומס. פרטים נוספים זמינים במאמר התמחור של GKE.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
- מוודאים שיש לכם אשכול Autopilot קיים שפועל בגרסה 1.30.1-gke.1396000 ואילך. כדי ליצור אשכול, קראו את המאמר יצירת אשכול Autopilot.
בחירת סדרת מכונות
בקטע הזה מוסבר איך לבחור סדרה ספציפית של מכונות Compute Engine ב-Pod.
שומרים את המניפסט הבא בתור
machine-series-pod.yaml:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 5 memory: "25Gi" limits: cpu: 20 memory: 100Giמחליפים את
MACHINE_SERIESבסדרת המכונות של Compute Engine לפוד, כמוc3. בקטע סדרות מכונות נתמכות שבדף הזה מפורטים הערכים הנתמכים.פורסים את ה-Pod:
kubectl apply -f machine-series-pod.yaml
המניפסט הזה מאפשר ל-Autopilot לבצע אופטימיזציה של השימוש במשאבי הצומת, על ידי תזמון יעיל של פודים אחרים שבוחרים את אותה סדרת מכונות לאותו צומת אם יש קיבולת זמינה.
שימוש ב-SSD מקומיים
פודים שבוחרים סדרת מכונות יכולים להשתמש בכונני SSD מקומיים לאחסון זמני, אם מציינים סדרת מכונות שמציעה כונן SSD מקומי. ב-Autopilot, בקשות לאחסון זמני נלקחות בחשבון כשבוחרים סוג מכונה של Compute Engine בשביל ה-Pod.
מידע נוסף זמין במאמר שימוש באחסון זמני שמגובה ב-SSD מקומי באשכולות Autopilot.
בקשת צומת ייעודי ל-Pod
אם לפוד יש דרישות ביצועים ספציפיות, כמו גישה אמינה לכל המשאבים של הצומת, אתם יכולים לבקש צומת ייעודי לכל פוד על ידי ציון בורר הצומת cloud.google.com/compute-class: Performance יחד עם בורר הצומת של סדרת המכונות. כך Autopilot ימקם את ה-Pod בצומת חדש שמשתמש בסדרת המכונות שצוינה ומוקדש לאותו Pod.
בורר הצמתים הזה גם מונע מ-Autopilot לתזמן Pods אחרים בצומת הזה.
שומרים את המניפסט הבא בתור
dedicated-node-pod.yaml:apiVersion: v1 kind: Pod metadata: name: dedicated-node-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/compute-class: Performance containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral: "200Gi"מחליפים את
MACHINE_SERIESבסדרת מכונות נתמכת שתומכת גם בתזמון של Pod אחד לכל צומת. אם סדרת המכונות שצוינה לא תומכת בתזמון של Pod אחד לכל צומת, הפריסה תיכשל ותופיע הודעת שגיאה.פורסים את ה-Pod:
kubectl apply -f dedicated-node-pod.yaml
כשפורסים את המניפסט הזה, Autopilot מבצע את הפעולות הבאות:
- מוודאים שה-Pod שנפרס מבקש לפחות את המשאבים המינימליים לצומת שעבר אופטימיזציה לביצועים.
- מחשב את סך כל בקשות המשאבים של ה-Pod שנפרס ושל כל DaemonSets באשכול.
- מקצה צומת שמגובה על ידי סדרת המכונות שנבחרה.
- משנה את המניפסט של Pod באמצעות שילוב של בוררי צמתים וסבילות, כדי להבטיח שה-Pod יפעל בצומת משלו.
סדרות מכונות נתמכות
הבורר machine-family תומך בסדרות המכונות הבאות:
אם לא תציינו סדרת מכונות כשתבחרו את סוג הביצועים, GKE ישתמש בסדרת המכונות C4 אם סוגי המכונות C4 זמינים באזור.
כדי להשוות בין סדרות המכונות האלה ותרחישי השימוש שלהן, קראו את המאמר השוואה בין סדרות של מכונות במסמכי התיעוד של Compute Engine.
מגבלות
- ה-Performance ComputeClass המוגדר מראש לא תומך בסוגי מכונות Bare Metal, כמו
c3-standard-192-metal,c4a-standard-72-metalו-c4d-standard-384-metal. כדי להשתמש בסוגי המכונות האלה עם Autopilot או עם יצירה אוטומטית של מאגרי צמתים, צריך לציין את סוג המכונה המדויק ב-ComputeClass בהתאמה אישית.
דרישות לגבי הגרסה
אלה דרישות הגרסה לסדרות ספציפיות של מכונות:
- C4N: גרסת GKE 1.36.0-gke.3009002 ואילך
- C4D: גרסה 1.32.9-gke.1711000 של GKE ואילך
- N4D:
- GKE בגרסה 1.33.13-gke.1079000 ואילך
- GKE בגרסה 1.34.1-gke.2037000 ואילך
- סוגי שרתים פיזיים C3 ו-C4A: גרסת GKE 1.35.3-gke.1389000 ואילך (באמצעות ComputeClass בהתאמה אישית).
- C4D bare metal types: גרסת GKE 1.37.0-gke.4713000 ואילך (באמצעות ComputeClass בהתאמה אישית).
- Z4D: גרסה 1.36.3-gke.1244000 של GKE ואילך.
תאימות לתכונות אחרות של GKE
פודים שבוחרים סדרת מכונות יכולים להשתמש ביכולות ובתכונות של GKE שנתמכות על ידי אותה סדרת מכונות, כמו:
- Spot Pods
- פודים עם זמן ריצה מורחב (רק עם צמתים ייעודיים לכל פוד)
- הפרדת עומסי עבודה
- הזמנות קיבולת
- הנחות תמורת התחייבות לשימוש
פודים מסוג Spot ופודים עם זמן ריצה מורחב הם בלעדיים זה לזה. GKE לא אוכף בקשות מינימליות גבוהות יותר למשאבים עבור Pods ייעודיים לכל צומת, למרות שהם משתמשים בהפרדת עומסי עבודה.
איך GKE בוחר סוג מכונה
כדי לבחור סוג מכונה בסדרת המכונות שצוינה, GKE מחשב את סך כל הבקשות ל-CPU, לזיכרון ולאחסון זמני של הפודים ושל כל DaemonSet שיפעלו בצומת החדש. GKE מעגל את הערכים האלה כלפי מעלה לסוג המכונה הקרוב ביותר שזמין ב-Compute Engine, שתומך בכל הסכומים האלה.
דוגמה 1: נניח שיש פריסה עם ארבע רפליקות שבוחרת את סדרת המכונות C3D. אתם לא מבקשים צמתים ייעודיים לכל Pod. אלה בקשות המשאבים של כל רפליקה:
- 500m vCPU (0.5 vCPU)
- זיכרון בנפח 1GiB
מצב Autopilot ממקם את כל ארבעת ה-Pods בצומת שמגובה על ידי סוג המכונה
c3d-standard-4, שיש לה 4 יחידות vCPU וזיכרון בנפח 16GB.דוגמה 2: נניח שיש Pod שבוחר בסדרת המכונות
C3Dוב-Local SSD לאחסון זמני. אתם מבקשים צומת ייעודי ל-Pod. אלה בקשות המשאבים הכוללות, כולל DaemonSets:- 12 vCPU
- זיכרון בנפח 50 GiB
- אחסון זמני בנפח 200GiB
מצב Autopilot ממקם את ה-Pod בצומת שמשתמש בסוג המכונה
c3d-standard-16-lssd, שיש לה 16 vCPUs, זיכרון של 64 GiB וקיבולת של 365 GiB ב-SSD מקומי.
המאמרים הבאים
- במאמר סוגי Compute ב-Autopilot מוסבר על אפשרויות המחשוב ש-Autopilot מציע לתרחישים שונים לדוגמה.
- פריסת עומסי עבודה מבוססי-GPU ב-Autopilot