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

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

למה כדאי לבחור פלטפורמת CPU מינימלית?

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

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

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

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

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

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

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

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

תמחור

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

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

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

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

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

פלטפורמות ה-CPU הזמינות משתנות בהתאם לאזור החישוב שבו הצמתים פועלים. כדאי לבדוק אילו פלטפורמות של מעבדים זמינות בתחום, גם אם משתמשים באשכולות במצב 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, מבקשים פלטפורמת CPU מינימלית וסוג מחשוב. סוג המחשוב חייב לתמוך בפלטפורמת ה-CPU. ‫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. שם הפלטפורמה תלוי באותיות רישיות (case-sensitive) וחייב להיות מופרד באמצעות קו תחתון.
  • ‫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. שם הפלטפורמה תלוי אותיות רישיות (case-sensitive) וחייב להיות מופרד באמצעות קו תחתון.
  • ‫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 במסוף Cloud de Confiance .

    מעבר אל Google Kubernetes Engine

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

  3. לוחצים על הכרטיסייה Nodes (צמתים).

  4. לוחצים על Create user-managed node pool (יצירת מאגר צמתים בניהול המשתמש).

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

  6. בחלונית הניווט, לוחצים על Nodes.

  7. בקטע Machine Configuration,

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

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

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

  11. לוחצים על CPU Platform and GPU.

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

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

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 אפשר גם לבחור פלטפורמות CPU מינימליות בשיטות הבאות:

חלופות

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

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

מגבלות

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

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

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

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

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