הפעלת וירטואליזציה מקוננת

במאמר הזה מוסבר איך להפעיל וירטואליזציה מקוננת במכונה וירטואלית (VM) ואיך לוודא שאפשר ליצור מכונה וירטואלית מקוננת. כדי להפעיל וירטואליזציה מקוננת במכונה וירטואלית, משתמשים באחת מהשיטות הבאות:

  • מומלץ. כדי להפעיל וירטואליזציה מקוננת ישירות במכונה וירטואלית חדשה או קיימת, צריך להגדיר את השדה enableNestedVirtualization לערך true כשיוצרים את המכונה הווירטואלית או כשמעדכנים אותה. זו השיטה המומלצת כי היא לא מחייבת ליצור תמונה בהתאמה אישית או להשתמש במפתח הרישיון המיוחד.

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

לפני שמתחילים

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל
  • REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

הפעלה של וירטואליזציה מקוננת ישירות במכונה וירטואלית חדשה

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

gcloud

יוצרים מכונה וירטואלית ברמה 1 עם הפעלת וירטואליזציה מקוננת באמצעות הפקודה gcloud compute instances create הבאה:

gcloud compute instances create VM_NAME \
  --enable-nested-virtualization \
  --zone=ZONE \
  --min-cpu-platform="Intel Haswell"

מחליפים את מה שכתוב בשדות הבאים:

  • VM_NAME: השם של מכונת L1 VM החדשה עם וירטואליזציה מוטמעת

  • ZONE: האזור של המכונה הווירטואלית החדשה ברמה L1 עם וירטואליזציה מקוננת מופעלת

REST

כדי ליצור מכונה וירטואלית ברמה 1 עם הפעלה של וירטואליזציה מקוננת, משתמשים בinstances.insert שיטה הבאה:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "name": "VM_NAME",
  ...
  "minCpuPlatform": "Intel Haswell",
  "advancedMachineFeatures": {
    "enableNestedVirtualization": true
  },
  ...
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט

  • ZONE: האזור של המכונה הווירטואלית החדשה ברמה L1 עם וירטואליזציה מקוננת מופעלת

  • VM_NAME: השם של מכונת L1 VM החדשה עם וירטואליזציה מוטמעת

הפעלה של וירטואליזציה מקוננת ישירות במכונה וירטואלית קיימת

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

gcloud

  1. מייצאים את המאפיינים של מכונת ה-VM באמצעות הפקודה gcloud compute instances export הבאה:

    gcloud compute instances export VM_NAME \
      --destination=YAML_FILE_PATH \
      --zone=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • VM_NAME: שם המכונה הווירטואלית שממנה רוצים לייצא את המאפיינים

    • YAML_FILE_PATH: הנתיב ושם הקובץ של קובץ ‎.yaml שבו יישמרו נתוני התצורה המיוצאים

    • ZONE: האזור שמכיל את המכונה הווירטואלית

  2. בקובץ ההגדרות של ה-VM שנשמר ב-FILE_PATH, מעדכנים את הערך של enableNestedVirtualization. אם הערך לא מופיע בקובץ, מוסיפים את השורה הבאה:

    advancedMachineFeatures:
      enableNestedVirtualization: true
    
  3. מעדכנים את מכונת ה-VM עם הערך של enableNestedVirtualization באמצעות הפקודה gcloud compute instances update-from-file הבאה:

    gcloud compute instances update-from-file VM_NAME \
      --source=FILE_PATH \
      --most-disruptive-allowed-action=RESTART \
      --zone=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • VM_NAME: השם של המכונה הווירטואלית שרוצים לעדכן

    • FILE_PATH: הנתיב לקובץ התצורה המעודכן של המכונה הווירטואלית

    • ZONE: האזור שמכיל את המכונה הווירטואלית שרוצים לעדכן

REST

מעדכנים את הערך של enableNestedVirtualization באמצעות השיטה instances.update הבאה:

PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART

{
  ⋮
  "advanced_machine_features": {
    ⋮
    "enableNestedVirtualization": "true"
  },
  ⋮
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט

  • ZONE: האזור שמכיל את המכונה הווירטואלית

  • VM_NAME: השם של המכונה הווירטואלית שממנה רוצים לייצא את המאפיינים

הפעלת וירטואליזציה מקוננת באמצעות מפתח הרישיון המיוחד

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

  1. יוצרים דיסק אתחול מאימג' ציבורי או מאימג' בהתאמה אישית. בדוגמה הבאה השתמשנו ב-debian-cloud לפרויקט התמונות וב-debian-10 למשפחת התמונות. אם כבר יש לכם מכונת VM עם דיסק קיים, אתם יכולים לדלג על השלב הזה.

    gcloud

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --image-project=debian-cloud \
      --image-family=debian-10
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DISK_NAME: השם של הדיסק החדש

    • ZONE: האזור שבו רוצים ליצור את הדיסק

    REST

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      ...
      "name": "DISK_NAME",
      "sourceImage": "projects/debian-cloud/global/images/family/debian-10",
      ...
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט

    • ZONE: האזור שבו רוצים ליצור את הדיסק

    • DISK_NAME: השם של הדיסק החדש

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

    gcloud

    gcloud compute images create IMAGE_NAME \
      --source-disk DISK_NAME \
      --source-disk-zone ZONE \
      --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • IMAGE_NAME: השם של התמונה החדשה

    • DISK_NAME: השם של הדיסק שנוצר קודם

    • ZONE: האזור שבו רוצים ליצור את התמונה

    REST

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    
    {
      ...
      "licenses": ["projects/vm-options/global/licenses/enable-vmx"],
      "name": "IMAGE_NAME",
      "sourceDisk": "zones/ZONE/disks/DISK_NAME",
      ...
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט

    • IMAGE_NAME: השם של התמונה החדשה

    • ZONE: האזור שבו רוצים ליצור את התמונה

    • DISK_NAME: השם של הדיסק שנוצר קודם

  3. אפשר גם למחוק את דיסק המקור אחרי שיוצרים את התמונה עם הרישיון המיוחד.

    gcloud

    gcloud compute disks delete DISK_NAME --zone=ZONE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DISK_NAME: השם של הדיסק שרוצים למחוק

    • ZONE: האזור שבו נמצא הדיסק שרוצים למחוק

    REST

    DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט

    • ZONE: האזור שבו נמצא הדיסק שרוצים למחוק

    • DISK_NAME: השם של הדיסק שרוצים למחוק

  4. יוצרים מכונה וירטואלית שמשתמשת באימג' החדש עם הרישיון המיוחד. פלטפורמת המעבד המינימלית חייבת להיות "Intel Haswell".

    gcloud

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --min-cpu-platform "Intel Haswell" \
        --image IMAGE_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • VM_NAME: השם של ה-VM

    • ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית

    • IMAGE_NAME: השם של התמונה שנוצרה קודם

    REST

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
      ...
      "name": "VM_NAME",
      "minCpuPlatform": "Intel Haswell",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "IMAGE_NAME"
          }
        }
      ]
      ...
    }
    
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט

    • VM_NAME: השם של ה-VM

    • ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית

    • IMAGE_NAME: השם של התמונה שנוצרה קודם

בדיקה שהווירטואליזציה המקוננת מופעלת במכונה הווירטואלית

  1. מתחברים למופע ה-VM.

    gcloud compute ssh VM_NAME
    

    מחליפים את VM_NAME בשם של המכונה הווירטואלית שאליה רוצים להתחבר.

  2. מוודאים שהווירטואליזציה המקוננת מופעלת. כל תשובה אחרת מלבד 0 מאשרת שהווירטואליזציה המקוננת מופעלת.

    grep -cw vmx /proc/cpuinfo
    

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