המסמך הזה מיועד לאדמינים של פלטפורמות שמריצים מכונות וירטואליות (VM) ב-Google Distributed Cloud. במאמר הזה מוסבר איך להגדיר את מדיניות ההוצאה מהזיכרון (eviction) שקובעת איך מכונות וירטואליות שמשתמשות ב-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, זמן הריצה של מכונות וירטואליות ב-GDC מנסה להעביר כל מכונה וירטואלית שניתנת להעברה מצומת כדי להוציא אותה. המכונה הווירטואלית ממוקמת בצומת אחר באשכול וממשיכה לפעול.
אם הערך הזה מוגדר כ-Restart, זמן הריצה של מכונות וירטואליות ב-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 on GDC מחיל עכשיו את מדיניות ההוצאה מהזיכרון על מכונות וירטואליות באשכול.