המסמך הזה מיועד לאדמינים של פלטפורמות שמריצים מכונות וירטואליות (VM) ב-Google Distributed Cloud. במאמר הזה מוסבר איך להגדיר את מדיניות ההוצאה מהזיכרון שקובעת איך מכונות וירטואליות שמשתמשות ב-VM Runtime ב-GDC יכולות לעבור אוטומטית למארחים אחרים במהלך אירועי תחזוקה. הגדרות התצורה האלה מאפשרות למכונות וירטואליות להמשיך לפעול במארחים אחרים כשמשדרגים אשכול או מבצעים תחזוקה במארח.
לפני שמתחילים
כדי להשלים את השלבים במאמר הזה, אתם צריכים גישה לאשכול Google Distributed Cloud בגרסה 1.12.0 (anthosBareMetalVersion: 1.12.0) ומעלה. אתם יכולים להשתמש בכל סוג של אשכול שיכול להריץ עומסי עבודה. אם צריך, אפשר להתנסות ב-Google Distributed Cloud ב-Compute Engine או לעיין בסקירה הכללית בנושא יצירת אשכולות.
הגדרות מדיניות בנושא פינוי
בעזרת Google Distributed Cloud אפשר להגדיר את התנהגות הצמתים כשמבצעים שדרוגים של אשכולות או כשמעבירים צמתים למצב תחזוקה. VM Runtime ב-GDC משתמש במדיניות פינוי שקובעת איך האשכול מטפל במכונות וירטואליות שפועלות במהלך האירועים האלה.
כשמפעילים את VM Runtime ב-GDC, המערכת משתמשת במיגרציה פעילה כדי להעביר את עומסי העבודה של המכונות הווירטואליות למארח אחר כברירת מחדל. כך מצמצמים את הסיכון לשיבושים בעומסי העבודה של המכונות הווירטואליות. באמצעות מיגרציה פעילה, מכונות וירטואליות שניתנות להעברה עוברות ממארח אחד למארח אחר בלי שייגרם שיבוש למערכת ההפעלה של האורח.
אפשר להגדיר את ההגדרות הבאות של מדיניות ההסרה:
| מאפיין (property) | ברירת מחדל | ערכים תקינים |
|---|---|---|
evictionStrategy |
LiveMigrate |
LiveMigrate, Restart |
maxMigrationAttemptsPerVM |
3 |
מספרים שלמים בטווח [1,5] |
migrationTargetInitializationTimeout |
30s |
כל מחרוזת תקינה של משך זמן, כמו 1m, 2h או 1h30m |
evictionStrategy
אם הערך הזה מוגדר כ-LiveMigrate, VM Runtime ב-GDC מנסה להעביר כל מכונה וירטואלית שניתנת להעברה מצומת כדי להוציא אותה. המכונה הווירטואלית ממוקמת בצומת אחר באשכול וממשיכה לפעול.
אם הערך הזה מוגדר כ-Restart, VM Runtime ב-GDC לא מנסה להעביר מכונות וירטואליות. במקום זאת, המכונות הווירטואליות מופסקות כשהצומת מועבר למצב תחזוקה, והן מופעלות מחדש כשהצומת יוצא ממצב תחזוקה. המכונה הווירטואלית לא זמינה במהלך אירוע התחזוקה של המארח.
כשבוחרים באסטרטגיה LiveMigrate, זמן הריצה של מכונות וירטואליות ב-GDC חוזר לאסטרטגיה Restart עבור מכונות וירטואליות שלא ניתן להעביר.
maxMigrationAttemptsPerVM
ההגדרה הזו קובעת את המספר המקסימלי של ניסיונות מיגרציה שיכולים להתבצע למכונה וירטואלית מסוימת לפני שמופעלת אסטרטגיית Restart.
המערכת מתעלמת מההגדרה הזו אם evictionStrategy מוגדר כ-Restart.
migrationTargetInitializationTimeout
ההגדרה הזו קובעת את משך הזמן המקסימלי שנדרש להפעלת העברה לפני שהיא נחשבת כהעברה שנכשלה. העברה שנמשכת יותר מדי זמן נספרת במסגרת התקציב של העברות שנכשלו של עומס עבודה של מכונה וירטואלית.
המערכת מתעלמת מההגדרה הזו אם evictionStrategy מוגדר כ-Restart.
הפעלה והגדרה של מדיניות ההוצאה מהזיכרון
כדי להשתמש במדיניות ההוצאה מהזיכרון ב-VM Runtime ב-GDC, צריך להגדיר את ההגדרה evictionPolicy באובייקט VMRuntime של האשכול.
ההגדרה הזו מופעלת כברירת מחדל. אם אתם משדרגים מגרסה קודמת, אתם צריכים להפעיל את ההגדרה הזו באופן ידני.
אובייקט ריק, כמו evictionPolicy: {}, מפעיל את מדיניות ההוצאה עם הגדרות ברירת המחדל. כדי לשנות את התנהגות ברירת המחדל, מוסיפים אפשרויות הגדרה נוספות לאובייקט evictionPolicy.
כדי להפעיל ולהגדיר את מדיניות ההוצאה מהזיכרון, מבצעים את השלבים הבאים:
עורכים את
VMRuntimeהמשאב המותאם אישית:kubectl edit vmruntime vmruntimeמוסיפים או מעדכנים את הקטע
evictionPolicyעם אובייקט ריק כדי להשתמש בהגדרות ברירת המחדל של מדיניות ההסרה, או מוסיפים את ההגדרות הרצויות:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: disableCDIUploadProxyVIP: false enabled: true evictionPolicy: {} useEmulation: falseאם השדה
evictionPolicyלא מאוכלס, למשלevictionPolicy: nullאו שהוא לא נכלל במניפסט, לא מתבצעת פעולה מיוחדת. המכונות הווירטואליות מפונות בכוח.בדוגמאות הבאות של קובצי מניפסט אפשר לראות איך להפעיל מיגרציה פעילה של מכונות וירטואליות, או להפעיל מחדש את המכונות הווירטואליות באותו מארח אחרי השלמת התחזוקה:
העברה פעילה
מדיניות הפינוי הבאה מאפשרת מיגרציה פעילה של מכונות וירטואליות. האשכול יכול לנסות שוב את המיגרציה הפעילה עד 3 פעמים, עם זמן קצוב לתפוגה של 30 שניות לתהליך בכל פעם כדי להתחיל:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: disableCDIUploadProxyVIP: false enabled: true evictionPolicy: evictionStrategy: LiveMigrate maxMigrationAttemptsPerVM: 3 migrationTargetInitializationTimeout: 30s useEmulation: falseהפעלה מחדש
במדיניות הפינוי הבאה לדוגמה לא נעשה ניסיון להעברה של מכונות וירטואליות במהלך הפינוי. המכונות הווירטואליות מושבתות במארח הנוכחי שלהן, ומופעלות מחדש כשהמארח מסיים את אירוע התחזוקה שלו:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: disableCDIUploadProxyVIP: false enabled: true evictionPolicy: evictionStrategy: Restart useEmulation: falseשומרים וסוגרים את המשאב המותאם אישית
VMRuntimeבכלי העריכה.VM Runtime ב-GDC מחיל עכשיו את מדיניות ההוצאה מהזיכרון על מכונות וירטואליות באשכול.