הגדרת מדיניות ההוצאה של מכונות וירטואליות ב-Google Distributed Cloud

המסמך הזה מיועד לאדמינים של פלטפורמות שמריצים מכונות וירטואליות (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.

כדי להפעיל ולהגדיר את מדיניות ההוצאה מהזיכרון, מבצעים את השלבים הבאים:

  1. עורכים את VMRuntime המשאב המותאם אישית:

    kubectl edit vmruntime vmruntime
    
  2. מוסיפים או מעדכנים את הקטע 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
    
  3. שומרים וסוגרים את המשאב המותאם אישית VMRuntime בכלי העריכה.

    ‫VM Runtime ב-GDC מחיל עכשיו את מדיניות ההוצאה מהזיכרון על מכונות וירטואליות באשכול.

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