אדמינים של אשכולות ומפעילים של אפליקציות יכולים ליהנות מהיתרונות של Google Kubernetes Engine (GKE) Autopilot, כמו תמחור והגדרות שנקבעו מראש, באשכולות במצב רגיל. במאמר הזה מוסבר איך להשתמש ב-ComputeClasses כדי לפרוס עומס עבודה ב-Autopilot באשכול רגיל. כדאי להכיר את המושגים הבאים:
מידע על 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 ש-GKE משתמש בו כדי ליצור צמתים בשביל עומסי העבודה. מידע נוסף זמין בקטע תמחור במאמר בנושא עומסי עבודה במצב Autopilot ב-GKE Standard.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- משתמשים באשכול GKE Standard שעומד בכל הדרישות. כדי ליצור אשכול חדש, אפשר לעיין במאמר בנושא יצירת אשכול אזורי.
- כדי להימנע מדחייה של עומסי עבודה, כדאי לקרוא על הדרישות ומגבלות האבטחה של Autopilot. מידע נוסף מופיע במאמר בנושא הגדרות מוגדרות מראש לצמתי Autopilot.
דרישות
באשכול צריך להפעיל אחת מהגרסאות הבאות של GKE:
- כדי להשתמש ב-Autopilot ב-ComputeClasses, האשכול צריך להריץ גרסה 1.34.1-gke.1829001 ואילך.
- כדי להשתמש ב
podFamilyכללי עדיפות ב-ComputeClasses בהתאמה אישית של Autopilot, האשכול צריך להריץ גרסה 1.35.2-gke.1485000 ואילך.
לפחות למאגר צמתים אחד באשכול לא צריכים להיות node taints.
מאגר הצמתים הזה נדרש להרצת פודים של מערכת GKE Standard שלא יכולים לפעול בצמתים של Autopilot באשכולות Standard, בגלל הכתמים ש-GKE מוסיף לצמתים האלה.
צומתי GKE מוגנים נדרשים ומופעלים כברירת מחדל.
חובה להשתמש באשכול המותאם ל-VPC.
אם אתם משתמשים ב-Kubernetes NetworkPolicies, האשכול שלכם צריך להשתמש ב-GKE Dataplane V2. כברירת מחדל, כל האשכולות החדשים משתמשים ב-GKE Dataplane V2.
אם באשכול שלכם לא נעשה שימוש ב-GKE Dataplane V2, אתם צריכים להשבית את האכיפה של מדיניות הרשת.
מגבלות
- אפשר להשתמש ב-
general-purpose-armpod family וב-autopilot-armcompute class רק באשכולות של Autopilot. תמיכה באשכולות רגילים עם צמתים של Autopilot תהיה זמינה בגרסה מאוחרת יותר. - כדי לעדכן ComputeClasses קיימים באשכול לשימוש במצב Autopilot, צריך ליצור מחדש את ה-ComputeClasses האלה עם מפרט מעודכן. מידע נוסף זמין במאמר בנושא הפעלת Autopilot עבור ComputeClass מותאם אישית קיים.
- ה-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
אתם יכולים להשתמש במסוף כדי לבדוק אם אשכול Standard עומד בכל הדרישות להפעלת עומסי עבודה במצב Autopilot. Cloud de Confiance אפשר גם להשתמש במסוף Cloud de Confiance כדי לשנות את האשכול כך שיעמוד בדרישות האלה.
שינוי של אשכול קיים
נכנסים לדף Kubernetes clusters במסוף Cloud de Confiance .
בשורה של האשכול שרוצים לשנות, לוחצים על פעולות נוספות > עריכה. הדף Cluster details נפתח.
בקטע Cluster basics (היסודות של האשכול), מחפשים את הקטע Autopilot compute class compatibility (תאימות של מחלקת מחשוב ב-Autopilot).
אם בקטע הזה מוצג 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 במסוף Cloud de Confiance .
בדף Cluster basics (יסודות האשכול), מחפשים את הקטע Maximize deployment options with Autopilot compute class (מיקסום אפשרויות הפריסה באמצעות סוג מחשוב של Autopilot). בקטע הזה מפורטות הגדרות האשכול שצריך לשנות כדי לעמוד בדרישות של מצב Autopilot.
לוחצים על הפעלת סוג מחשוב ב-Autopilot. GKE משנה את האשכול לפי הצורך.
מגדירים הגדרות אחרות של האשכול בהתאם לדרישות. אם תשנו הגדרה שתגרום לכך שהאשכול לא יהיה תואם ל-Autopilot, תוצג הודעת אזהרה.
בחירת ComputeClass של Autopilot בעומס עבודה
אתם יכולים להריץ עומס עבודה במצב Autopilot באשכול Standard על ידי בחירת ComputeClass שמשתמש במצב Autopilot. כדי להריץ עומס עבודה במצב Autopilot, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף Workloads של GKE במסוף Cloud de Confiance .
לוחצים על Deploy (פריסה) או על Create Job (יצירת משימה). מופיע הדף ליצירת עומס עבודה לפריסה או למשימה.
בקטע Nodes, בוחרים באפשרות Autopilot compute class.
בקטע Select compute class, בתפריט הנפתח Compute class, בוחרים ComputeClass שמשתמש במצב Autopilot. הערך של ComputeClass יכול להיות כל אחת מהאפשרויות הבאות:
אחת מהאפשרויות הבאות של ComputeClasses מובנים של Autopilot, שמאפשרים להציב עומסי עבודה למטרות כלליות בפלטפורמת מחשוב מותאמת למיכלים של 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בשם של סוג המחשוב שרוצים להשתמש בו. הערך הזה יכול להיות כל אחת מהאפשרויות הבאות:אחת מהאפשרויות הבאות של ComputeClasses מובנים של Autopilot, שמאפשרים להציב עומסי עבודה למטרות כלליות בפלטפורמת מחשוב מותאמת למיכלים של Autopilot:
autopilotautopilot-spot
ComputeClass שיוצרים, כמו
n4-classComputeClass שמתואר בקטע הגדרת ComputeClass בהתאמה אישית ב-Autopilot.
פורסים את עומס העבודה:
kubectl apply -f autopilot-cc-deployment.yaml
הגדרה של ComputeClass מותאם אישית ב-Autopilot
אפשר להגדיר ComputeClasses בהתאמה אישית לשימוש ב-Autopilot. אפשר להשתמש ב-ComputeClass מותאם אישית של Autopilot במצבים כמו:
- עומסי העבודה שלכם דורשים חומרה ספציפית כדי לפעול בצורה אופטימלית, כמו מעבדי GPU או סדרה מסוימת של מכונות Compute Engine.
- אתם רוצים לשנות הגדרות של צמתים כמו אזורים או taints בזמן שאתם משתמשים בפלטפורמת המחשוב האופטימלית ל-container של Autopilot.
אם עומסי העבודה שלכם לא עומדים בדרישות האלה, מומלץ להשתמש באחד מ-ComputeClasses המובנים של Autopilot. כדי לבחור ComputeClass מובנה של Autopilot, אפשר לעיין בקטע הקודם בחירת ComputeClass של Autopilot בעומס עבודה.
יצירת ComputeClass חדש בהתאמה אישית ב-Autopilot
שומרים אחד ממניפסטים לדוגמה של ComputeClass:
בחירת מכונות ספציפיות:
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 להגדרות שמופיעות גבוה יותר ברשימת העדיפויות כשמשאבים הופכים לזמינים.
-
שימוש בפלטפורמת מחשוב שעברה אופטימיזציה לקונטיינרים עם שינויים:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: general-purpose-class spec: autopilot: enabled: true priorities: - podFamily: general-purpose priorityDefaults: location: zones: ['us-central1-a','us-central1-b','us-central1-f']המניפסט הזה כולל את השדות הבאים:
-
autopilot: מפעיל את מצב Autopilot עבור ComputeClass. אם מציינים את השדה הזה ב-ComputeClass שפורסים באשכול Autopilot, GKE מתעלם מהשדה. -
priorities.podFamily: משתמש בpodFamilyכלל העדיפות כדי להריץ Pods בפלטפורמת המחשוב האופטימלית לקונטיינרים של Autopilot. -
priorityDefaults.location: מגדיר את האזורים שבהם GKE צריך ליצור צמתים עבור Pods שמשתמשים ב-ComputeClass.
-
פורסים את ComputeClass:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFESTמחליפים את
PATH_TO_COMPUTECLASS_MANIFESTבנתיב למניפסט של ComputeClass מהשלב הקודם.מוודאים ש-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 במסוף Cloud de Confiance .
בודקים את הערך בעמודה 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 כברירת מחדל
אתם יכולים להגדיר ComputeClass מובנה או מותאם אישית כ-ComputeClass שמוגדר כברירת מחדל למרחב שמות או לאשכול שלם. ה-ComputeClass שמוגדר כברירת מחדל חל על כל Pod שלא נבחר בו במפורש ComputeClass אחר. אם מגדירים ComputeClass של Autopilot כברירת מחדל, אפשר לוודא שכל ה-Pods יפעלו במצב Autopilot, אלא אם עומס עבודה בוחר באפשרות אחרת.
אם ComputeClass שהגדרתם כברירת מחדל משתמש בpodFamily כללי עדיפות, אפשר להפעיל את ה-Pods שלא בחרו ComputeClass אחר כ-Pods של Autopilot למטרות כלליות. השיטה הזו מאפשרת להשתמש במודל התמחור מבוסס-ה-Pod כברירת מחדל באשכול או במרחב השמות, והיא שימושית כשלהרבה מעומסי העבודה שלכם אין דרישות חומרה מיוחדות.
מידע נוסף זמין במאמר בנושא החלת ComputeClasses על Pods כברירת מחדל.
המאמרים הבאים
- פרמטרים שאפשר לציין ב-ComputeClasses מפורטים במאמר בנושא ComputeClass CustomResourceDefinition.