אדמינים של אשכולות ומפעילי אפליקציות יכולים ליהנות מהיתרונות של 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 כדי לשנות את האשכול כך שיעמוד בדרישות האלה.
שינוי של אשכול קיים
נכנסים לדף Kubernetes clusters במסוף Google Cloud .
בשורה של האשכול שרוצים לשנות, לוחצים על אפשרויות נוספות > עריכה. הדף Cluster details נפתח.
בקטע Cluster basics, מחפשים את הקטע Autopilot compute class compatibility.
אם בקטע הזה מוצג Enabled (מופעל), האשכול כבר תואם ל-Autopilot. אפשר לדלג אל הקטע בחירת ComputeClass של Autopilot בעומס עבודה.
אם בקטע Autopilot compute class compatibility (תאימות של מחלקת מחשוב ב-Autopilot) מוצגת האפשרות Disabled (מושבת), לוחצים על Edit Autopilot compute class compatibility (עריכת התאימות של מחלקת מחשוב ב-Autopilot).
אם אי אפשר לערוך את הקטע הזה, המשמעות היא שהאשכול שלכם משתמש בהגדרה קבועה שלא תואמת למצב Autopilot. לדוגמה, אי אפשר לשנות אשכולות כך שיהיו מותאמים ל-VPC אחרי יצירת האשכול. אם אי אפשר ליצור אינטראקציה עם הקטע Autopilot compute class compatibility, צריך ליצור אשכול חדש.
בחלונית Autopilot compute class compatibility שנפתחת, בודקים את הגדרות האשכול שצריך לשנות כדי לעמוד בדרישות של מצב Autopilot.
לוחצים על הפעלת סוג המכונה Autopilot. GKE משנה את האשכול לפי הצורך.
שינוי אשכול חדש
נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .
בדף Cluster basics (יסודות של אשכול), מחפשים את הקטע Maximize deployment options with Autopilot compute class (מיקסום אפשרויות הפריסה באמצעות מחלקת מחשוב של Autopilot). בקטע הזה מפורטות הגדרות האשכול שצריך לשנות כדי לעמוד בדרישות של מצב Autopilot.
לוחצים על הפעלת סוג המכונה Autopilot. GKE משנה את האשכול לפי הצורך.
מגדירים הגדרות אחרות של האשכול בהתאם לדרישות. אם תשנו הגדרה שתגרום לחוסר תאימות של האשכול ל-Autopilot, תוצג הודעת אזהרה.
בחירת ComputeClass של Autopilot בעומס עבודה
אתם יכולים להריץ עומס עבודה במצב Autopilot באשכול Standard על ידי בחירת ComputeClass שמשתמש במצב Autopilot. כדי להריץ עומס עבודה במצב Autopilot, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף Workloads ב-GKE במסוף Google Cloud .
לוחצים על Deploy (פריסה) או על Create Job (יצירת משימה). מופיע הדף ליצירת עומס עבודה לפריסה או למשימה.
בקטע Nodes, בוחרים באפשרות Autopilot compute class.
בקטע Select compute class, בתפריט הנפתח Compute class, בוחרים ComputeClass שמשתמש במצב Autopilot. הערך של ComputeClass יכול להיות כל אחד מהערכים הבאים:
אחת מהתכונות המובנות של Autopilot ComputeClasses, שמאפשרות להציב עומסי עבודה למטרות כלליות בפלטפורמת המחשוב של Autopilot שעברה אופטימיזציה לשימוש בקונטיינרים:
autopilotautopilot-spot
ComputeClass שיוצרים, כמו
n4-classComputeClass שמתואר בקטע הגדרת ComputeClass בהתאמה אישית ב-Autopilot.
מגדירים ויוצרים את עומס העבודה.
kubectl CLI
כדי לבחור ComputeClass של Autopilot בעומס עבודה, משתמשים בnode selector (בורר צמתים) עבור התווית cloud.google.com/compute-class. זו אותה תווית שמשמשת לבחירת ComputeClass אחר ב-GKE. בשלבים הבאים מוסבר איך ליצור פריסה לדוגמה שבוחרת ComputeClass ואיך לוודא שה-Pods פועלים במצב Autopilot:
שומרים את פריסת הדוגמה הבאה בשם
autopilot-cc-deployment.yaml:מחליפים את
COMPUTE_CLASSבשם של סוג המחשוב שרוצים להשתמש בו. הערך הזה יכול להיות כל אחת מהאפשרויות הבאות:אחת מהתכונות המובנות של Autopilot ComputeClasses, שמאפשרות להציב עומסי עבודה למטרות כלליות בפלטפורמת המחשוב של Autopilot שעברה אופטימיזציה לשימוש בקונטיינרים:
autopilotautopilot-spot
ComputeClass שיוצרים, כמו
n4-classComputeClass שמתואר בקטע הגדרת ComputeClass בהתאמה אישית ב-Autopilot.
פורסים את עומס העבודה:
kubectl apply -f autopilot-cc-deployment.yaml
הגדרת ComputeClass מותאם אישית ב-Autopilot
אפשר להגדיר ComputeClasses בהתאמה אישית לשימוש ב-Autopilot. משתמשים ב-ComputeClass מותאם אישית של Autopilot אם עומסי העבודה דורשים חומרה ספציפית כדי לפעול בצורה אופטימלית, כמו מעבדי GPU או סדרת מכונות מסוימת של Compute Engine.
אם עומסי העבודה לא דורשים חומרה ספציפית, מומלץ להשתמש באחד מ-ComputeClasses המובנים של Autopilot. כדי לבחור ComputeClass מובנה של Autopilot, אפשר לעיין בקטע הקודם בחירת ComputeClass של Autopilot בעומס עבודה.
יצירת ComputeClass חדש בהתאמה אישית ב-Autopilot
שומרים את קובץ המניפסט של 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 להגדרות שמופיעות גבוה יותר ברשימת העדיפויות כשהמשאבים הופכים לזמינים.
-
פורסים את ComputeClass:
kubectl apply -f n4-class.yamlמוודאים ש-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:
בכלי לעריכת טקסט, מעדכנים את קובץ המניפסט של ComputeClass הקיים כדי להוסיף את השדה
spec.autopilot:spec: autopilot: enabled: trueמחליפים את משאב
ComputeClassהקיים ב-Kubernetes API במפרט המעודכן:kubectl replace --force -f PATH_TO_UPDATED_MANIFESTמחליפים את הערך ב-
PATH_TO_UPDATED_MANIFESTבנתיב לקובץ המניפסט המעודכן.כדי להפעיל יצירה של צומת חדש, צריך ליצור מחדש עומסי עבודה שמשתמשים במחלקת המחשוב.
אחרי שמחילים את המניפסט המעודכן, כל הצמתים החדשים ש-GKE יוצר עבור ComputeClass הזה משתמשים ב-Autopilot. GKE לא משנה צמתים קיימים שנוצרו לפני העדכון.
אימות השימוש ב-Autopilot בעומס העבודה
בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף Workloads ב-GKE במסוף Google Cloud .
בודקים את הערך בעמודה 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 כברירת מחדל למרחב שמות.
המאמרים הבאים
- פרמטרים שאפשר לציין ב-ComputeClasses מפורטים בהגדרה של ComputeClass CustomResourceDefinition.