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

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

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

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

gcloud

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

gcloud compute instances create VM_NAME \
  --enable-nested-virtualization \
  --zone=ZONE \

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

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

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

REST

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

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

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

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

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

  • ‫VM_NAME: השם של ה-VM החדש ברמה L1, עם וירטואליזציה בתצורה משולבת מופעלת

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

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

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: האזור שבו נמצאת ה-VM שרוצים לעדכן

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 למשפחת התמונות. אם כבר יש לכם מכונה וירטואלית עם דיסק קיים, אתם יכולים לדלג על השלב הזה.

    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. יוצרים מכונה וירטואלית שמשתמשת באימג' החדש עם הרישיון המיוחד. פלטפורמת ה-CPU המינימלית למכונות וירטואליות של Intel צריכה להיות "Intel Haswell".

    gcloud

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --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",
      "disks": [
        {
          "initializeParams": {
            "sourceImage": "IMAGE_NAME"
          }
        }
      ]
      ...
    }
    
    

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

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

    • ‫VM_NAME: השם של ה-VM

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

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

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

  1. מתחברים למכונה הווירטואלית.

    gcloud compute ssh VM_NAME
    

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

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

    grep -cw vmx /proc/cpuinfo
    

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