בחירת פלטפורמת CPU מינימלית

בדף הזה מוסבר איך מציינים פלטפורמת CPU מינימלית לצמתים באשכולות Google Kubernetes Engine‏ (GKE).

למה כדאי לבחור פלטפורמה עם מעבד מינימלי?

הגדרת פלטפורמת מעבד מינימלית שימושית אם נדרשים יכולות ומפרטים ספציפיים של מעבד, כמו תדר בסיסי גבוה או פונקציונליות אופטימלית של ניהול צריכת חשמל.

עומסי עבודה מתקדמים מסוימים שדורשים הרבה משאבי מחשוב בתחומים של גרפיקה, משחקים ואנליטיקה יכולים להשתמש בתכונות הספציפיות שזמינות דרך ערכות תכונות שונות של פלטפורמות CPU, כמו AVX-2 ו-AVX-512. בחירה בפלטפורמת CPU ספציפית יכולה להניב שיפורים משמעותיים בזמן הביצוע ובביצועים. אם מציינים פלטפורמת CPU מינימלית, עומסי העבודה יכולים להשיג את היתרונות האלה בצורה צפויה יותר, ואפשר לוודא שהצמתים אף פעם לא משתמשים בפלטפורמת CPU שלא מתאימה לעומסי העבודה שלהם.

איך בוחרים פלטפורמה

בטבלה הבאה מוסבר איך לבחור פלטפורמת מעבד מינימלית בהתאם לאופן השימוש ב-GKE:

היקף תיאור הגדרת אשכול נתמכת
ברמת עומס העבודה (מומלץ)

בוחרים פלטפורמה מינימלית במפרט ה-Pod. מערכת GKE מתזמנת את ה-Pods האלה באופן הבא:

  • Autopilot: ‏ GKE מתזמן Pods בצמתים עם הפלטפורמה שצוינה או עם פלטפורמה מתקדמת יותר.
  • Standard: מערכת GKE מתזמנת Pods רק בצמתים עם הפלטפורמה שצוינה. לדוגמה, אם יש מאגר צמתים של Intel Ice Lake ופודים חדשים מבקשים מינימום של Intel Cascade Lake, ‏ GKE יוצר מאגר צמתים חדש עם Intel Cascade Lake, למרות ש-Intel Ice Lake היא פלטפורמה מתקדמת יותר.

רמת הצומת והאשכול בוחרים פלטפורמת CPU מינימלית כשיוצרים אשכול חדש במצב רגיל או מאגר צמתים חדש. ההגדרה הזו לא תומכת בהקצאת צמתים אוטומטית (NAP). הוראות מפורטות מופיעות בקטע בחירת פלטפורמת מעבד מינימלית ברמת מאגר הצמתים. אשכול סטנדרטי חדש או מאגר צמתים חדש

תמחור

אתם יכולים לבחור פלטפורמת CPU מינימלית ללא עלות נוספת.

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

בדיקת הזמינות של פלטפורמת המעבד

פלטפורמות המעבד הזמינות משתנות בהתאם לאזור החישוב שבו הצמתים פועלים. כדאי לבדוק אילו פלטפורמות של מעבדים זמינות בתחום מסוים, גם אם משתמשים באשכולות במצב Autopilot או באשכולות סטנדרטיים אזוריים.

כדי לבדוק את הפלטפורמות הזמינות באזור ספציפי, מריצים את הפקודה הבאה:

gcloud compute zones describe COMPUTE_ZONE

מחליפים את COMPUTE_ZONE בשם של אזור, כמו us-central1-a. אם משתמשים בסוג אשכול אזורי, צריך לציין את שם האזור באזור הזה.

הפלט אמור להיראות כך:

availableCpuPlatforms:
- Intel Ice Lake
- Intel Cascade Lake
- Intel Skylake
- Intel Broadwell
- Intel Haswell
- Intel Ivy Bridge
- Intel Sandy Bridge
- AMD Milan
- AMD Rome
- Ampere Altra
- Intel Sapphire Rapids

כשמשתמשים בערכים האלה כדי לבקש פלטפורמת CPU מינימלית, צריך להחליף את הרווחים בשם הפלטפורמה בקו תחתון. לדוגמה, AMD_Milan.

בחירת פלטפורמת CPU מינימלית ברמת עומס העבודה

אם אתם משתמשים באשכולות GKE Autopilot או באשכולות GKE Standard עם הקצאת צמתים אוטומטית, אתם יכולים לבחור פלטפורמת CPU מינימלית במפרט ה-Pod. כשפורסים את עומס העבודה,‏ GKE מתזמן את ה-Pods האלה רק בצמתים עם הפלטפורמה שצוינה או עם פלטפורמה חדשה יותר. אנחנו ממליצים על השיטה הזו.

טייס אוטומטי

ב-Autopilot, מבקשים פלטפורמת מעבד מינימלית וסוג מחשוב. סוג המחשוב חייב לתמוך בפלטפורמת המעבד. התכונה Autopilot תומכת בבחירת פלטפורמת CPU מינימלית עבור מחלקת המחשוב Balanced. רשימה של פלטפורמות CPU זמינות בכל סוג מחשוב מופיעה במאמר מתי כדאי להשתמש בסוגי מחשוב ספציפיים.

שומרים את קובץ המניפסט הבא בשם min-cpu.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: min-cpu-platform
  labels:
    app: min-cpu
spec:
  replicas: 3
  selector:
    matchLabels:
      app: min-cpu
  template:
    metadata:
      labels:
        app: min-cpu
    spec:
      nodeSelector:
        cloud.google.com/compute-class: "COMPUTE_CLASS"
        supported-cpu-platform.cloud.google.com/PLATFORM: "true"
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 250m

מחליפים את מה שכתוב בשדות הבאים:

  • PLATFORM: השם של פלטפורמת ה-CPU, למשל AMD_Milan. שם הפלטפורמה הוא תלוי אותיות רישיות וחייב להיות מופרד באמצעות קו תחתון.
  • COMPUTE_CLASS: השם של מחלקת המחשוב, שחייב להיות Balanced.

רגילה

באשכולות Standard שבהם מופעלת הקצאה אוטומטית של צמתים, צריך לבקש פלטפורמת CPU לצד משפחת מכונות של Compute Engine. משפחת המכונות צריכה לתמוך בפלטפורמת ה-CPU. רשימה של פלטפורמות נתמכות לכל משפחת מכונות זמינה במאמר בנושא פלטפורמות CPU ב-Compute Engine.

שומרים את קובץ המניפסט הבא בשם min-cpu.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: min-cpu-platform
  labels:
    app: min-cpu
spec:
  replicas: 3
  selector:
    matchLabels:
      app: min-cpu
  template:
    metadata:
      labels:
        app: min-cpu
    spec:
      nodeSelector:
        cloud.google.com/machine-family: MACHINE_FAMILY
        cloud.google.com/requested-min-cpu-platform: PLATFORM
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 250m

מחליפים את מה שכתוב בשדות הבאים:

  • PLATFORM: השם של פלטפורמת ה-CPU, למשל AMD_Milan. שם הפלטפורמה הוא תלוי אותיות רישיות וחייב להיות מופרד באמצעות קו תחתון.
  • MACHINE_FAMILY: השם של משפחת המכונות, למשל n2d.

פורסים את עומס העבודה:

kubectl apply -f min-cpu.yaml

הצמתים שומרים על אותה פלטפורמה לאורך מחזור החיים שלהם, אלא אם פלטפורמת ה-CPU שצוינה הוצאה משימוש. במקרה כזה, הצמתים יפעלו על פלטפורמה חדשה יותר.

בחירת פלטפורמת CPU מינימלית ברמת מאגר הצמתים

בקטגוריית GKE Standard, אם לא מוגדרת הקצאה אוטומטית של צמתים, אפשר לציין פלטפורמת CPU מינימלית כשיוצרים אשכול חדש או מאגר צמתים חדש. כדאי להשתמש בגישה הזו רק אם אי אפשר להשתמש בהגדרה ברמת עומס העבודה. ההגדרה הזו לא משפיעה על הקצאת משאבים אוטומטית של צמתים.

gcloud

כדי ליצור מאגר צמתים חדש עם פלטפורמת מעבד (CPU) מינימלית באמצעות ה-CLI של gcloud, מגדירים את הדגל --min-cpu-platform ומציינים את השם של פלטפורמת המעבד (CPU):

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --min-cpu-platform PLATFORM

מחליפים את מה שכתוב בשדות הבאים:

  • POOL_NAME: השם של מאגר הצמתים החדש.
  • CLUSTER_NAME: השם של האשכול.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
  • PLATFORM: פלטפורמת המעבד שרוצים להפעיל במאגר הצמתים, למשל "Intel Broadwell".

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. לוחצים על הוספת מאגר צמתים.

  4. מגדירים את מאגר הצמתים לפי הצורך.

  5. בחלונית הניווט, לוחצים על צמתים.

  6. בקטע Machine Configuration (הגדרת המכונה),

  7. ברשימה הנפתחת סדרה, בוחרים סוג מכונה.

  8. ברשימה הנפתחת סוג המכונה בוחרים באפשרות בהתאמה אישית.

  9. בוחרים באפשרות ליבות ובאפשרות זיכרון לפי הצורך.

  10. לוחצים על CPU Platform and GPU (פלטפורמת CPU ו-GPU).

  11. בתפריט הנפתח CPU Platform, בוחרים את הפלטפורמה המינימלית.

  12. לוחצים על יצירה.

API

כוללים את המאפיין minCpuPlatform כחלק מהשדה nodeConfig בגוף הבקשה. הערך של minCpuPlatform חייב להיות שם הפלטפורמה, כמו Intel Haswell,‏ Intel Broadwell ו-Intel Sandy Bridge.

לדוגמה, הבקשה הבאה יוצרת מאגר צמתים חדש שמריץ את פלטפורמת Intel Broadwell:

POST https://container.googleapis.com/v1/projects/PROJECT_ID/regions/COMPUTE_REGION/clusters/CLUSTER_NAME/nodePools

{
  'nodePool': {
    'name': 'POOL_NAME',
    'nodeConfig': {
      'minCpuPlatform': 'Intel Broadwell'
      ...
    }
    ...
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט.
  • COMPUTE_REGION: האזור של האשכול.
  • CLUSTER_NAME: השם של האשכול.
  • POOL_NAME: השם של מאגר הצמתים החדש.

אם מציינים את הפלטפורמה כשיוצרים אשכול, הגדרת פלטפורמת ה-CPU המינימלית חלה על מאגר הצמתים שמוגדר כברירת מחדל באשכול החדש.

חלופות

ב-GKE אפשר גם לבחור פלטפורמות עם מעבד מינימלי באמצעות השיטות הבאות:

חלופות

דגל ברמת האשכול

--autoprovisioning-min-cpu-platform דגל

מגבלות

המגבלות הבאות חלות על כל השיטות לבחירת פלטפורמה עם מעבד מינימלי:

  • כל המגבלות של פלטפורמות המעבד המינימליות ב-Compute Engine חלות.
  • הזמינות של פלטפורמות CPU ספציפיות משתנה בהתאם לאזור.
  • סוג המכונה E2 לא תומך בפלטפורמות CPU מינימליות. צריך לבחור סוג מכונה אחר.
  • באשכולות במצב Autopilot אפשר לבחור פלטפורמה רק עבור מחלקת המחשוב Balanced, ולא עבור מחלקות המחשוב שמוגדרות כברירת מחדל או Scale-Out.
  • אם עומס העבודה של Autopilot דורש יותר מ-80 מעבדי vCPU, פלטפורמת המעבד המינימלית צריכה להיות Intel Ice Lake או גרסה מתקדמת יותר. אם תציינו פלטפורמה פחות מתקדמת, יכול להיות שה-Pod יישאר במצב Pending ללא הגבלת זמן.

המגבלה הבאה חלה על ההגדרה של פלטפורמת המינימום של CPU באשכול או במאגר צמתים:

אם בוחרים פלטפורמת CPU מינימלית שהיא פחות מתקדמת מפלטפורמת ה-CPU שמוגדרת כברירת מחדל באזור, או אם הפלטפורמה שנבחרה כבר לא זמינה, GKE בודק אם יש פלטפורמה חדשה יותר באותה עלות. אם קיימת פלטפורמה חדשה יותר באותה עלות, ‏ GKE יוצר את הצמתים באמצעות הפלטפורמה החדשה יותר. אם אין פלטפורמה חדשה יותר באותו מחיר, יצירת אשכול או מאגר צמתים תיכשל.

המאמרים הבאים