למה כדאי לתכנן אשכולות GKE גדולים
לכל מערכת מחשב, כולל Kubernetes, יש מגבלות ארכיטקטוניות. חריגה מהמגבלות עלולה להשפיע על הביצועים של האשכול, ובמקרים מסוימים אפילו לגרום להשבתות. כדי להבטיח שהאשכולות יריצו את עומסי העבודה שלכם בצורה מהימנה ובקנה מידה גדול, חשוב לפעול לפי השיטות המומלצות ולבצע את הפעולות המומלצות.
מגבלות של אשכולות GKE גדולים
כשמגדילים את מספר הצמתים באשכול ב-GKE, המערכת מנסה לשנות את כמות המשאבים הזמינים בהתאם לצורכי המערכת, תוך עמידה ביעדי רמת השירות (SLO). Cloud de Confiance by S3NS תומך באשכולות גדולים. עם זאת, בהתאם לתרחיש השימוש, צריך לקחת בחשבון את המגבלות של אשכולות גדולים כדי לתת מענה טוב יותר לדרישות שלכם לגבי גודל התשתית.
בקטע הזה מפורטות המגבלות והשיקולים שצריך לקחת בחשבון כשמתכננים אשכולות GKE גדולים על סמך מספר הצמתים הצפוי.
שיקולים כלליים לגבי העברת אשכולות
בלי קשר לגודל אשכול היעד, כדאי לקחת בחשבון את הנקודות הבאות כשעוברים למגבלות גבוהות יותר של צמתים:
- כדי לעבור מאשכולות Standard ברמת אזור לאשכולות Standard ברמת אזור, צריך ליצור מחדש את האשכול כדי לקבל גישה למכסות גבוהות יותר של צמתים.
- כדי לעבור לאשכולות שמשתמשים ב-Private Service Connect, צריך ליצור מחדש את האשכול כדי לגשת למכסת הצמתים הגבוהה יותר.
מגבלות ודרישות לגבי גודל האשכול
בטבלה הבאה מפורטות הדרישות ומגבלות ההתאמה לעומס של GKE, בהתאם למספר הצמתים שאתם רוצים להגדיר:
| מגבלת הצמתים | דרישות התשתית | דרישות רשת | הגבלות גישה | דוגמאות לתרחישי שימוש |
|---|---|---|---|---|
| עד 1,000 | זמין לכל האשכולות. | אין דרישות נוספות. | אין. ההגדלה ל-1,000 צמתים היא אוטומטית. | עומסי עבודה כלליים, פיתוח ובדיקה. |
| 1,000 עד 5,000 | האפשרות זמינה לאשכולות אזוריים רגילים ולאשכולות במצב Autopilot. |
|
אין. אם אתם עומדים בדרישות האחרות, הגידול במספר הצמתים עד 5,000 מתבצע באופן אוטומטי. | משימות בכמות גדולה, משימות לזמן קצר ושירותים לארגונים. |
| 5,000 עד 15,000 |
|
|
כדי להגדיל את גודל האשכול ואת מכסת המגבלה, פונים ל-Cloud Customer Care. | עומסי עבודה של HPC ועיבוד נתונים. |
| 15,000 עד 65,000 |
|
|
כדי לבקש הגדלה של המכסות ולקבל עזרה בהרחבה אנכית עד למגבלות הגבוהות יותר, פונים אל Cloud Customer Care. | אימון מודלים גדולים. |
שיטות מומלצות לפיצול עומסי עבודה בין כמה אשכולות
אתם יכולים להריץ את עומסי העבודה באשכול אחד גדול. הגישה הזו קלה יותר לניהול, חסכונית יותר ומאפשרת ניצול טוב יותר של המשאבים בהשוואה לשימוש בכמה אשכולות. עם זאת, במקרים מסוימים כדאי לפצל את עומס העבודה לכמה אשכולות:
- במאמר תרחישים לדוגמה לשימוש בכמה אשכולות מפורטים דרישות ותרחישים כלליים לשימוש בכמה אשכולות.
- בנוסף, מומלץ לפצל את האשכול אם הוא עלול לחרוג מאחת המגבלות שמתוארות בקטע שלמטה או מאחת המכסות של GKE. הפחתת הסיכון להגעה למגבלות של GKE מצמצמת את הסיכון להשבתה או לבעיות אחרות באמינות.
אם תחליטו לפצל את האשכול, תוכלו להשתמש בניהול צי כדי לפשט את הניהול של צי עם כמה אשכולות.
מגבלות ושיטות מומלצות
כדי לוודא שהארכיטקטורה שלכם תומכת באשכולות GKE גדולים, כדאי לעיין במגבלות הבאות ובשיטות המומלצות שקשורות אליהן. חריגה מהמגבלות האלה עלולה לגרום לירידה בביצועים של האשכול או לבעיות באמינות.
השיטות המומלצות האלה רלוונטיות לכל אשכול Kubernetes שמוגדר כברירת מחדל ולא מותקנים בו תוספים. הרחבת אשכולות Kubernetes באמצעות תגובות לפעולה מאתר אחר (webhooks) או הגדרות של משאבים בהתאמה אישית (CRD) היא פעולה נפוצה, אבל היא יכולה להגביל את היכולת לשנות את קנה המידה של האשכול.
בטבלה הבאה מפורטים המכסות וההגבלות העיקריות של GKE. כדאי גם להכיר את המגבלות של Kubernetes בקוד פתוח לאשכולות בקנה מידה גדול.
דרישות הגרסה של GKE שמוזכרות בטבלה חלות גם על הצמתים וגם על מישור הבקרה.
| מגבלת GKE | תיאור | שיטות מומלצות |
|---|---|---|
| הגודל של מסד הנתונים etcd | הגודל המקסימלי של מסד הנתונים etcd הוא 6GB. מומלץ לעקוב באופן יזום אחרי הגודל של מסד הנתונים etcd באשכול ולהגדיר התראות כדי לקבל הודעה כשהשימוש מתקרב למגבלה הזו. חריגה מהמגבלה עלולה לגרום לבעיות במישור הבקרה. | כדי לעקוב אחרי השימוש, אפשר להיעזר במקורות המידע הבאים:
מידע נוסף על דרכי פעולה כשמתקרבים למגבלה זמין במאמר זיהוי אשכולות שבהם השימוש ב-etcd מתקרב למגבלה. |
| הגודל הכולל של אובייקטים של etcd לפי סוג | הגודל הכולל של כל האובייקטים מסוג המשאב שצוין לא יכול להיות יותר מ-800 MB. לדוגמה, אפשר ליצור 750 MB של מופעי Pod ו-750 MB של Secrets, אבל אי אפשר ליצור 850 MB של Secrets. אם תיצרו אובייקטים בנפח של יותר מ-800 MB, יכול להיות שהבקרי Kubernetes או הבקרים המותאמים אישית לא יאותחלו וייגרמו שיבושים. |
הגודל הכולל של כל האובייקטים מכל סוג שמאוחסנים ב-etcd צריך להיות קטן מ-800 MB. זה רלוונטי במיוחד לאשכולות שמשתמשים בהרבה Secrets או ConfigMaps גדולים, או בנפח גבוה של CRDs. |
| מספר השירותים באשכולות שבהם GKE Dataplane V2 לא מופעל | הביצועים של iptables שמשמשים את kube-proxy יורדים אם מתרחש אחד מהמקרים הבאים:
המגבלה הזו לא קיימת כשמפעילים את GKE Dataplane V2. |
מספר השירותים באשכול צריך להיות קטן מ-10,000. מידע נוסף זמין במאמר חשיפת אפליקציות באמצעות שירותים. |
| מספר השירותים לכל מרחב שמות | מספר משתני הסביבה שנוצרים לשירותים עשוי לחרוג ממגבלות המעטפת. יכול להיות שהפעולה הזו תגרום לקריסה של ה-Pods בהפעלה. |
מספר השירותים בכל מרחב שמות צריך להיות מתחת ל-5,000. אתם יכולים לבטל את ההסכמה לאכלוס של משתני הסביבה האלה. במסמכי התיעוד מוסבר איך להגדיר את מידע נוסף זמין במאמר חשיפת אפליקציות באמצעות Services. |
| מספר ה-Pods מאחורי שירות יחיד לאשכולות שבהם GKE Dataplane V2 לא מופעל |
כל צומת מריץ kube-proxy שמשתמש ב-watches כדי לעקוב אחרי כל שינוי בשירות. ככל שאשכול גדול יותר, כך הסוכן מעבד יותר נתונים שקשורים לשינויים. הדבר בולט במיוחד באשכולות עם יותר מ-500 צמתים. המידע על נקודות הקצה מחולק בין אובייקטים של נקודות קצה עדיין זמינים לרכיבים, אבל כל נקודת קצה מעל 1,000 פודים נחתכת אוטומטית. |
מספר ה-Pods שמאחורי שירות אחד צריך להיות קטן מ-10,000. למידע נוסף, קראו את המאמר חשיפת אפליקציות באמצעות שירותים. |
| מספר ה-Pods שמאחורי שירות יחיד באשכולות שבהם מופעל GKE Dataplane V2 |
GKE Dataplane V2 כולל הגבלות על מספר ה-Pods שנחשפים על ידי Service יחיד. אותה מגבלה חלה על אשכולות Autopilot כי הם משתמשים ב-GKE Dataplane V2. |
ב-GKE 1.23 ובגרסאות קודמות, כדאי להקפיד שמספר ה-Pods שמאחורי Service יחיד יהיה נמוך מ-1,000. ב-GKE 1.24 ואילך, חשוב להקפיד שמספר ה-Pods שמאחורי Service יחיד יהיה נמוך מ-10,000. מידע נוסף זמין במאמר חשיפת אפליקציות באמצעות שירותים. |
| רשומות DNS לכל שירות ללא ראש |
מספר רשומות ה-DNS לכל שירות Headless מוגבל גם ב-kube-dns וגם ב-Cloud DNS. |
מומלץ להגביל את מספר רשומות ה-DNS לכל שירות headless ל-1,000 ב-kube-dns ול-3,500/2,000 (IPv4/IPv6) ב-Cloud DNS. |
| מספר כל נקודות הקצה של השירות | יכול להיות שמספר נקודות הקצה בכל השירותים יגיע למגבלות. הפעולה הזו עלולה להגדיל את זמן האחזור של התכנות או לגרום לכך שלא תהיה אפשרות לתכנת נקודות קצה חדשות בכלל. |
מספר נקודות הקצה בכל השירותים צריך להיות קטן מ-260,000. GKE Dataplane V2, שהוא מישור הנתונים שמוגדר כברירת מחדל ל-GKE Autopilot, מסתמך על מפות eBPF שכרגע מוגבלות ל-260,000 נקודות קצה בכל השירותים. |
| מספר אובייקטים של HorizontalPodAutoscaler לכל אשכול |
כל HorizontalPodAutoscaler (HPA) מעובד כל 15 שניות. כברירת מחדל, GKE תומך בעד 300 אובייקטים של HPA. כדי להגדיל את המכסות, פרופיל הביצועים של HPA מגדיל את התמיכה ל-1,000 אובייקטים של HPA בגרסה 1.31 ואילך, ועד 5,000 אובייקטים של HPA בגרסה 1.33 ואילך. חריגה מהמגבלות האלה עלולה לגרום לירידה לינארית בביצועים. |
מספר אובייקטי ה-HPA צריך להיות במסגרת המגבלה הנתמכת של הפרופיל של האשכול (300, 1,000 או 5,000 אובייקטים). אחרת, יכול להיות שתהיה ירידה ליניארית בתדירות של עיבוד HPA. לדוגמה, אם יש 2,000 רכיבי HPA עם הגדרות רגילות, כל רכיב HPA יעבור עיבוד מחדש רק פעם אחת בכל דקה ו-40 שניות. מידע נוסף זמין במאמרים שינוי גודל אוטומטי על סמך ניצול משאבים, התאמה אופקית של קבוצות Pod לעומס והגדרת פרופיל הביצועים של HPA. |
| מספר ה-Pods בכל צומת | באשכולות Standard, ל-GKE יש מגבלה של 512 Pods לכל צומת. ההנחה היא שבכל Pod יש בממוצע שני קונטיינרים או פחות. אם מגדילים את מספר הקונטיינרים לכל Pod, יכול להיות שהמגבלה הזו תהיה נמוכה יותר, כי GKE מקצה יותר משאבים לכל קונטיינר. |
מומלץ להשתמש בצמתי עובד עם לפחות vCPU אחד לכל 10 Podים. מידע נוסף זמין במאמר בנושא שדרוג ידני של אשכול או מאגר צמתים. |
| קצב השינויים בתרמילים |
ל-Kubernetes יש מגבלות פנימיות שמשפיעות על קצב היצירה או המחיקה של Pods (שינוי ב-Pods) בתגובה לבקשות שינוי גודל. גם גורמים נוספים כמו מחיקת פוד שמהווה חלק משירות יכולים להשפיע על שיעור נטישת הפודים הזה. באשכולות עם עד 500 צמתים, אפשר לצפות לקצב ממוצע של 20 פודים שנוצרים בשנייה ו-20 פודים שנמחקים בשנייה. במקרים של אשכולות גדולים מ-500 צמתים, אפשר לצפות לקצב ממוצע של 100 יחידות Pod שנוצרות בשנייה ו-100 יחידות Pod שנמחקות בשנייה. |
כשמתכננים את ההתאמה של עומסי העבודה, חשוב לקחת בחשבון את מגבלת הקצב של יצירה ומחיקה של Pod. פודים חולקים את אותו קצב מחיקה עם סוגי משאבים אחרים (לדוגמה, EndpointSlices). אפשר להפחית את קצב המחיקה כשמגדירים Pods כחלק משירות. כדי לאפשר ל-Cluster Autoscaler להסיר ביעילות פודים מצמתים שלא מנוצלים מספיק, מומלץ להימנע משימוש בPodDisruptionBudgets ובתקופות חסד ארוכות מדי לסיום. גם שימוש בTolerations עם תווים כלליים לא מומלץ, כי הוא עלול לגרום לתזמון של עומסי עבודה בצמתים שנמצאים בתהליך של הסרה. |
| מספר הצפיות הפתוחות | הצמתים יוצרים מעקב לכל Secret ו-ConfigMaps שמוגדרים ל-Pods. המספר הכולל של הצפיות שנוצרות על ידי כל הצמתים עשוי ליצור עומס משמעותי במישור הבקרה של האשכול. אם יש יותר מ-200,000 צפיות בכל אשכול, יכול להיות שזמן האתחול של האשכול יושפע. הבעיה הזו עלולה לגרום להפעלה מחדש תכופה של מישור הבקרה. |
כדאי להגדיר צמתים גדולים יותר כדי להקטין את הסבירות לבעיות שנגרמות ממספר גדול של צפיות ואת חומרתן. צפיפות גבוהה יותר של פודים (פחות צמתים גדולים) עשויה להקטין את מספר הצפיות ולצמצם את חומרת הבעיה. מידע נוסף זמין בהשוואה בין סדרות מכונות. |
| מספר הסודות בכל אשכול אם מופעלת הצפנת סודות בשכבת האפליקציה | אם מפעילים הצפנה של סודות בשכבת האפליקציה, צריך לפענח את כל הסודות באשכול במהלך הפעלת האשכול. אם מאחסנים יותר מ-30,000 סודות, יכול להיות שהאשכול לא יהיה יציב במהלך ההפעלה או השדרוגים, וכתוצאה מכך יגרמו הפסקות בעומס העבודה. | אחסון של פחות מ-30,000 סודות כשמשתמשים בהצפנת סודות בשכבת האפליקציה. מידע נוסף זמין במאמר הצפנת סודות בשכבת האפליקציה. |
| רוחב הפס של היומן לכל צומת |
יש מגבלה על הכמות המקסימלית של יומנים שכל צומת יכול לשלוח ל-Cloud Logging API. המגבלה שמוגדרת כברירת מחדל משתנה בין 100 Kbps לבין 500 Kbps, בהתאם לעומס. באשכולות Standard, אפשר להגדיל את המגבלה ל-10MiB על ידי פריסת הגדרה של סוכן Logging עם תפוקה גבוהה. חריגה מהמגבלה הזו עלולה לגרום להשמטת רשומות ביומן. |
כדי לא לחרוג ממגבלות ברירת המחדל, צריך להגדיר את Logging או להגדיר סוכן Logging עם תפוקה גבוהה. מידע נוסף זמין במאמר התאמת קצב העברת הנתונים של היומנים. |
| מאגרי צמתים | מספר גדול של מאגרי צמתים יכול להשפיע על זמן האחזור של התאמה אוטומטית לעומס של התשתית, כי הוא מגדיל את קבוצת הצמתים שאפשר להוסיף לאשכול. תכונות כמו הפרדת עומסי עבודה או ComputeClasses בהתאמה אישית מגדילות את מספר מאגרי הצמתים. | מספר מאגרי הצמתים צריך להיות קטן מ-200. |
| העיכוב הממוצע והמקסימלי של ה-webhook של הגישה |
הקריאה ל-webhooks של בקרת הגישה מתבצעת במקביל (אימות) או ברצף (שינוי). בכל מקרה, נוסף עיכוב מסוים לכל בקשה מוגדרת שתואמת לבוררים של ה-webhook. כשמבצעים את ה-webhook, עיכובים קצרים ועקביים, כמו 50-100 אלפיות השנייה, עלולים להוביל לירידה משמעותית בביצועים. |
מגדירים את ה-webhooks כך שזמן האחזור הממוצע שלהם יהיה מתחת ל-10 אלפיות השנייה. מציינים את הפעולה, את סוגי המשאבים ואת מרחבי השמות שאליהם ה-webhook צריך להתייחס. מומלץ להימנע מתיעוד אירועים, כי זה עלול לגרום לבעיות בביצועים, למשל טעינה מראש איטית יותר של תמונות. הפעלת כמה מופעים של נקודות קצה של webhook בצמתים נפרדים מעומס העבודה ושמירה על זמן אחזור נמוך. מומלץ להפעיל את |
| מגבלות הגיבוי ל-GKE |
אתם יכולים להשתמש ב-Backup for GKE כדי לגבות ולשחזר את עומסי העבודה שלכם ב-GKE. הגיבוי ל-GKE כפוף למגבלות שחשוב לזכור כשמגדירים את תוכניות הגיבוי. |
כדאי לעיין במגבלות של Backup for GKE. אם יש סיכוי שעומס העבודה שלכם יחרוג מהמגבלות האלה, מומלץ ליצור כמה תוכניות גיבוי כדי לחלק את הגיבוי ולהישאר במסגרת המגבלות. |
| מגבלות של Config Connector |
אתם יכולים להשתמש ב-Config Connector כדי לנהל Cloud de Confiance משאבים באמצעות Kubernetes. ל-Config Connector יש שני מצבי פעולה:
|
פרטים על מגבלות המשאבים זמינים במאמר הנחיות לגבי יכולת ההתאמה של Config Controller. מידע על ניהול מספר גדול של משאבים זמין במאמר שיטות מומלצות לשימוש ב-Config Connector. |