מוודאים שעומסי העבודה מוכנים להפרעות

אפליקציות שפועלות באשכולות Google Kubernetes Engine‏ (GKE) צריכות להיות מוכנות לשיבושים כמו שדרוגי צמתים ואירועי תחזוקה אחרים. אפליקציות עם מצב (Stateful), שלעתים קרובות צריכות זמן כדי להפסיק את פעולות הקלט/פלט בצורה נקייה ולבטל את ההרכבה מהאחסון, חשופות במיוחד לשיבושים. כדי לשמור על זמינות האפליקציות במהלך השדרוגים, אפשר להשתמש בתכונות של Kubernetes כמו Pod Disruption Budgets (תקציבים להפרעות ב-Pod,‏ PDB) וReadiness Probes (בדיקות מוכנות).

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

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

מידע נוסף על ניהול תובנות והמלצות מ-Recommenders

זיהוי עומסי עבודה (workload) שפגיעים לשיבושים

‫GKE יוצר תובנות שמזהות את עומסי העבודה באשכול שפגיעים לשיבושים. כדי לקבל את התובנות האלה, פועלים לפי ההוראות להצגת תובנות והמלצות באמצעות Google Cloud CLI או Recommender API. אפשר להשתמש בסוגי המשנה שמפורטים בקטע הבא כדי לסנן תובנות ספציפיות. התובנות האלה לא זמינות במסוף Cloud de Confiance .

כש-GKE מזהה עומסי עבודה עם פגיעות לשיבוש

בטבלה הבאה מפורטים תרחישים שבהם GKE מספק תובנה והמלצה, ותת-הסוג הרלוונטי:

סוג משנה של תובנה תיאור פעולה
PDB_UNPROTECTED_STATEFULSET התראה מוצגת כשקיים StatefulSet שבו אין תוויות PDB קיימות שתואמות לתוויות של בורר ה-Pod של ה-StatefulSet. כלומר, אפשר להשבית את כל ה-Pods ב-StatefulSet במהלך אירוע כמו שדרוג של צומת. מוסיפים PDB שהתוויות שלו תואמות לאלה שבשדה של סלקטור ה-Pod של StatefulSet. מציינים בקובץ ה-PDB את מידת ההפרעה שאפשר לסבול ב-StatefulSet. ההמלצה שמשויכת לתובנה הזו מציעה אילו תוויות צריך להגדיר ב-PDB כדי לכסות את ה-StatefulSet שצוין.
PDB_UNPERMISSIVE התראות כשאי אפשר לעמוד בדרישות של PDB שתואם ל-Pod, בכל פעילות תחזוקה, כמו שדרוג של צומת. ה-PDB צריך לאפשר שיבוש של לפחות Pod אחד, ולכן GKE מפר את ה-PDB הזה לצורך תחזוקה נדרשת אחרי שעה. כדי לפתור את הבעיה, צריך לשנות את ההגדרה minAvailable של PDB כך שתהיה קטנה ממספר הפודים הכולל, או לשנות את ההגדרה maxUnavailable כך שתהיה גדולה מאפס.
PDB_STATEFULSET_WITHOUT_PROBES התראות כשמגדירים StatefulSet עם PDB אבל בלי בדיקות מוכנות, כך שה-PDB לא יעיל במיוחד בהערכת מוכנות האפליקציה. כש-PDB בודק אילו פודים אפשר לספור כפודים תקינים, הוא מתחשב בבדיקות המוכנות. לכן, אם לא מוגדר בדיקת מוכנות ל-Pod שכלול ב-PDB, ל-PDB יש יכולת מוגבלת לדעת אם ה-Pod תקין או שהוא רק פועל. מוסיפים בדיקות מוכנות ל-Pods ב-StatefulSets עבור ה-PDB שמוזכר בתובנה. מומלץ גם להוסיף בדיקות פעילות.
DEPLOYMENT_MISSING_PDB התראות כאשר קיים Deployment עם סלקטור של Pod שלא תואם ל-PDB קיים וגם ל-Deployment יש יותר מרפליקה אחת או מופעלת התאמה אופקית של קבוצות Pod לעומס. המשמעות היא שכל ה-Pods ב-Deployment יכולים להיות מושבתים במהלך אירוע כמו שדרוג של צומת. Add a PDB whose labels match the labels in the Deployment's Pod selector field. ב-PDB הזה מציינים את רמת ההפרעה שהפריסה יכולה לסבול. ההמלצה שמשויכת לתובנה הזו מציעה אילו תוויות צריך להגדיר ב-PDB כדי לכסות את הפריסה שצוינה.

הטמעת ההנחיות לשיפור המוכנות להפרעות

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

ההמלצות נבדקות פעם ביום, לכן יכול להיות שיעברו עד 24 שעות עד שהן ייפתרו אחרי הטמעת השינויים.

אם אתם לא רוצים ליישם את ההמלצה, אתם יכולים להסיר אותה.

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