הפעלת עומסי עבודה במצב Autopilot באשכולות Standard

אדמינים של אשכולות ומפעילי אפליקציות יכולים ליהנות מהיתרונות של Google Kubernetes Engine‏ (GKE) Autopilot, כמו תמחור והגדרות שנקבעו מראש, באשכולות במצב רגיל. במאמר הזה מוסבר איך להשתמש ב-ComputeClasses כדי לפרוס עומס עבודה ב-Autopilot באשכול Standard. כדאי להכיר את המושגים הבאים:

מידע על Autopilot ComputeClasses

‫GKE מספק משאבים מותאמים אישית של Kubernetes בשם ComputeClasses שאפשר לפרוס באשכול כמו כל משאב אחר של Kubernetes. ‫ComputeClass מגדיר רשימה של הגדרות צמתים, כמו סוגי מכונות או מכונות וירטואליות מסוג Spot. אתם יכולים לבחור ComputeClasses בעומסי העבודה שלכם, וכך לציין ל-GKE שכל הצמתים החדשים צריכים להשתמש באחת מההגדרות שברשימה.

אם עומס עבודה בוחר ComputeClass שבו השדה autopilot מופעל,‏ GKE מפעיל את ה-Pods במצב Autopilot. הצמתים שנוצרים על ידי GKE מנוהלים על ידי Google וכוללים הרבה מהתכונות והגדרות האבטחה שמוגדרות כברירת מחדל ב-Autopilot. למידע נוסף על ההשלכות של הפעלת עומס עבודה במצב Autopilot באשכולות Standard, כולל הבדלים שאולי תבחינו בהם כשאתם פורסים את עומסי העבודה האלה, אפשר לעיין במאמר מידע על עומסי עבודה במצב Autopilot ב-GKE Standard.

סוגים של Autopilot ComputeClasses

‫GKE מספקת ComputeClasses מובנים של Autopilot שאפשר להשתמש בהם ברוב עומסי העבודה למטרות כלליות. אפשר גם להגדיר ComputeClass חדש או קיים בהתאמה אישית לשימוש במצב Autopilot. סוג ה-ComputeClass של Autopilot שבו אתם משתמשים תלוי בשאלה אם עומסי העבודה שלכם צריכים חומרה ספציפית, באופן הבא:

  • עומסי עבודה למטרות כלליות: אפשר להשתמש באחד מ-ComputeClasses המובנים של Autopilot, שמציב את ה-Pods בפלטפורמת מחשוב שעברה אופטימיזציה לשימוש עם קונטיינרים.
  • עומסי עבודה שדורשים חומרה ספציפית: מפעילים את מצב Autopilot לכל ComputeClass מותאם אישית, פורסים את ה-ComputeClass הזה באשכול ובוחרים את ה-ComputeClass הזה בעומסי העבודה.

מידע נוסף על האפשרויות האלה, על המקרים שבהם כדאי להשתמש בהן ועל התמחור של כל אפשרות זמין במאמר בנושא בחירת חומרה ב-Autopilot ComputeClasses.

תמחור

התמחור של GKE Autopilot חל על עומסי העבודה והצמתים שמשתמשים ב-ComputeClass של Autopilot. מודל התמחור שחל תלוי אם אתם משתמשים ב-ComputeClass מובנה של Autopilot או ב-ComputeClass מותאם אישית של Autopilot. מידע נוסף זמין בקטע תמחור במאמר בנושא עומסי עבודה במצב Autopilot ב-GKE Standard.

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

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

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

דרישות

  • לפחות למאגר צמתים אחד באשכול לא צריכים להיות node taints.

    מאגר הצמתים הזה נדרש להרצת פודים של מערכת GKE Standard שלא יכולים לפעול בצמתים של Autopilot באשכולות Standard, בגלל הכתמים ש-GKE מוסיף לצמתים האלה.

  • צומתי GKE מוגנים נדרשים ומופעלים כברירת מחדל.

  • חובה להשתמש באשכול המותאם ל-VPC.

  • אם אתם משתמשים ב-Kubernetes NetworkPolicies, האשכול שלכם צריך להשתמש ב-GKE Dataplane V2. כברירת מחדל, כל האשכולות החדשים משתמשים ב-GKE Dataplane V2.

    אם האשכול לא משתמש ב-GKE Dataplane V2, צריך להשבית את האכיפה של מדיניות הרשת.

מגבלות

  • כדי לעדכן ComputeClasses קיימים באשכול לשימוש במצב Autopilot, צריך ליצור מחדש את ה-ComputeClasses האלה עם מפרט מעודכן. מידע נוסף זמין במאמר בנושא הפעלת Autopilot עבור ComputeClass מותאם אישית קיים.
  • אי אפשר להשתמש בכלל העדיפות podFamily ב-ComputeClasses משלכם. הכלל הזה זמין רק ב-ComputeClasses המובנים של Autopilot.
  • ה-ComputeClasses המובנים ב-Autopilot לא תומכים בהפעלת Confidential GKE Nodes לכל האשכול. אם מפעילים צמתים סודיים של GKE באשכול, כל ה-Pods החדשים שבוחרים ב-ComputeClasses המובנה של Autopilot נשארים במצב Pending ללא הגבלת זמן.
  • אין תמיכה באכיפת מדיניות רשת Calico. צריך להשתמש ב-GKE Dataplane V2 או להשבית את אכיפת מדיניות הרשת.
  • השם של ComputeClass לא יכול להתחיל ב-gke או ב-autopilot, שהן קידומות שמורות.

תפקידים והרשאות נדרשים

כדי לקבל את ההרשאות שנדרשות לפריסת ComputeClasses, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד מפתח Kubernetes Engine (roles/container.developer) באשכול או בפרויקט . להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

שינוי אשכולות כדי לעמוד בדרישות של Autopilot

אתם יכולים להשתמש במסוף Google Cloud כדי לבדוק אם אשכול Standard עומד בכל הדרישות להפעלת עומסי עבודה במצב Autopilot. אפשר גם להשתמש במסוף Google Cloud כדי לשנות את האשכול כך שיעמוד בדרישות האלה.

שינוי של אשכול קיים

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

    מעבר אל Kubernetes clusters

  2. בשורה של האשכול שרוצים לשנות, לוחצים על אפשרויות נוספות > עריכה. הדף Cluster details נפתח.

  3. בקטע Cluster basics, מחפשים את הקטע Autopilot compute class compatibility.

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

  4. אם בקטע Autopilot compute class compatibility (תאימות של מחלקת מחשוב ב-Autopilot) מוצגת האפשרות Disabled (מושבת), לוחצים על Edit Autopilot compute class compatibility (עריכת התאימות של מחלקת מחשוב ב-Autopilot).

    אם אי אפשר לערוך את הקטע הזה, המשמעות היא שהאשכול שלכם משתמש בהגדרה קבועה שלא תואמת למצב Autopilot. לדוגמה, אי אפשר לשנות אשכולות כך שיהיו מותאמים ל-VPC אחרי יצירת האשכול. אם אי אפשר ליצור אינטראקציה עם הקטע Autopilot compute class compatibility, צריך ליצור אשכול חדש.

  5. בחלונית Autopilot compute class compatibility שנפתחת, בודקים את הגדרות האשכול שצריך לשנות כדי לעמוד בדרישות של מצב Autopilot.

  6. לוחצים על הפעלת סוג המכונה Autopilot. ‫GKE משנה את האשכול לפי הצורך.

שינוי אשכול חדש

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

    מעבר אל יצירת אשכול Kubernetes

  2. בדף Cluster basics (יסודות של אשכול), מחפשים את הקטע Maximize deployment options with Autopilot compute class (מיקסום אפשרויות הפריסה באמצעות מחלקת מחשוב של Autopilot). בקטע הזה מפורטות הגדרות האשכול שצריך לשנות כדי לעמוד בדרישות של מצב Autopilot.

  3. לוחצים על הפעלת סוג המכונה Autopilot. ‫GKE משנה את האשכול לפי הצורך.

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

בחירת ComputeClass של Autopilot בעומס עבודה

אתם יכולים להריץ עומס עבודה במצב Autopilot באשכול Standard על ידי בחירת ComputeClass שמשתמש במצב Autopilot. כדי להריץ עומס עבודה במצב Autopilot, בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף Workloads ב-GKE במסוף Google Cloud .

    כניסה לדף Workloads

  2. לוחצים על Deploy (פריסה) או על Create Job (יצירת משימה). מופיע הדף ליצירת עומס עבודה לפריסה או למשימה.

  3. בקטע Nodes, בוחרים באפשרות Autopilot compute class.

  4. בקטע Select compute class, בתפריט הנפתח Compute class, בוחרים ComputeClass שמשתמש במצב Autopilot. הערך של ComputeClass יכול להיות כל אחד מהערכים הבאים:

  5. מגדירים ויוצרים את עומס העבודה.

kubectl CLI

כדי לבחור ComputeClass של Autopilot בעומס עבודה, משתמשים בnode selector (בורר צמתים) עבור התווית cloud.google.com/compute-class. זו אותה תווית שמשמשת לבחירת ComputeClass אחר ב-GKE. בשלבים הבאים מוסבר איך ליצור פריסה לדוגמה שבוחרת ComputeClass ואיך לוודא שה-Pods פועלים במצב Autopilot:

  1. שומרים את פריסת הדוגמה הבאה בשם autopilot-cc-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

    מחליפים את COMPUTE_CLASS בשם של סוג המחשוב שרוצים להשתמש בו. הערך הזה יכול להיות כל אחת מהאפשרויות הבאות:

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

    kubectl apply -f autopilot-cc-deployment.yaml
    

הגדרת ComputeClass מותאם אישית ב-Autopilot

אפשר להגדיר ComputeClasses בהתאמה אישית לשימוש ב-Autopilot. משתמשים ב-ComputeClass מותאם אישית של Autopilot אם עומסי העבודה דורשים חומרה ספציפית כדי לפעול בצורה אופטימלית, כמו מעבדי GPU או סדרת מכונות מסוימת של Compute Engine.

אם עומסי העבודה לא דורשים חומרה ספציפית, מומלץ להשתמש באחד מ-ComputeClasses המובנים של Autopilot. כדי לבחור ComputeClass מובנה של Autopilot, אפשר לעיין בקטע הקודם בחירת ComputeClass של Autopilot בעומס עבודה.

יצירת ComputeClass חדש בהתאמה אישית ב-Autopilot

  1. שומרים את קובץ המניפסט של ComputeClass מהדוגמה הבאה בשם n4-class.yaml:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: n4-class
    spec:
      autopilot:
        enabled: true
      priorities:
      - machineFamily: n4
        spot: true
        minCores: 16
      - machineFamily: n4
        spot: true
      - machineFamily: n4
        spot: false
      activeMigration:
        optimizeRulePriority: true
    

    המניפסט הזה כולל את השדות הבאים:

    • autopilot: מפעיל את מצב Autopilot עבור ComputeClass. אם מציינים את השדה הזה ב-ComputeClass שפורסים באשכול Autopilot, ‏ GKE מתעלם מהשדה.
    • priorities: מגדיר מערך של שלוש הגדרות שונות של משפחות מכונות N4.
    • activeMigration: מאפשר ל-GKE להעביר Pods להגדרות שמופיעות גבוה יותר ברשימת העדיפויות כשהמשאבים הופכים לזמינים.
  2. פורסים את ComputeClass:

    kubectl apply -f n4-class.yaml
    
  3. מוודאים ש-ComputeClass קיים:

    kubectl get computeclasses
    

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

    NAME                  AGE
    n4-class              3s
    

הפעלת Autopilot עבור ComputeClass מותאם אישית קיים

אפשר להפעיל את Autopilot ב-ComputeClasses מותאמים אישית קיימים שנמצאים באשכול Standard. הפעלת Autopilot ב-ComputeClass שנמצא באשכול Autopilot לא משפיעה, כי האשכול כולו משתמש במצב Autopilot.

אחרי שמפעילים את Autopilot עבור ComputeClass קיים,‏ GKE משתמש ב-Autopilot כדי להריץ Pods חדשים שבוחרים את ה-ComputeClass. אם יש לכם פודים קיימים בצמתים רגילים שבוחרים ב-ComputeClass של Autopilot, הפודים האלה משתמשים ב-Autopilot רק כשהם נוצרים מחדש.

כדי לעדכן ComputeClass מותאם אישית קיים לשימוש במצב Autopilot:

  1. בכלי לעריכת טקסט, מעדכנים את קובץ המניפסט של ComputeClass הקיים כדי להוסיף את השדה spec.autopilot:

    spec:
      autopilot:
        enabled: true
    
  2. מחליפים את משאב ComputeClass הקיים ב-Kubernetes API במפרט המעודכן:

    kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
    

    מחליפים את הערך ב-PATH_TO_UPDATED_MANIFEST בנתיב לקובץ המניפסט המעודכן.

  3. כדי להפעיל יצירה של צומת חדש, צריך ליצור מחדש עומסי עבודה שמשתמשים במחלקת המחשוב.

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

אימות השימוש ב-Autopilot בעומס העבודה

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף Workloads ב-GKE במסוף Google Cloud .

    כניסה לדף Workloads

  2. בודקים את הערך בעמודה Node type של עומס העבודה. אם עומס העבודה משתמש במצב Autopilot, הערך הזה הוא Autopilot-managed.

kubectl CLI

בודקים את השמות של הצמתים שמריצים את ה-Pods:

kubectl get pods -l=app=hello -o wide

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

NAME                       READY   STATUS    RESTARTS   AGE     IP             NODE                                         NOMINATED NODE   READINESS GATES
helloweb-79b9f6f75-5wwc9   1/1     Running   0          152m    10.102.1.135   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>
helloweb-79b9f6f75-9skb9   1/1     Running   0          4d3h    10.102.0.140   gk3-cluster-1-nap-10abc8ya1-632bac02-hjl6   <none>           <none>
helloweb-79b9f6f75-h7bdv   1/1     Running   0          152m    10.102.1.137   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>

בפלט הזה, הקידומת gk3- בעמודה Node מציינת שהצומת מנוהל על ידי Autopilot.

החלת ComputeClass של Autopilot כברירת מחדל

ב-GKE אפשר להגדיר ComputeClass כברירת מחדל למרחב שמות. מחלקת ברירת המחדל של מרחב השמות חלה על כל ה-Pods במרחב השמות שלא בוחרים במפורש ComputeClass אחר. הגדרת ComputeClass של Autopilot כברירת מחדל מאפשרת להפעיל את כל ה-Pods במרחב שמות במצב Autopilot כברירת מחדל, אלא אם עומס העבודה בוחר באפשרות אחרת.

מידע נוסף זמין במאמר בנושא הגדרת ComputeClass כברירת מחדל למרחב שמות.

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