במאמר הזה מוסבר איך להפעיל וירטואליזציה בתצורה מקוננת במכונה וירטואלית (VM), ואיך לוודא שאפשר ליצור מכונה וירטואלית בתצורה מקוננת. כדי להפעיל וירטואליזציה בתצורה מקוננת במכונה וירטואלית, משתמשים באחת מהשיטות הבאות:
מומלץ. כדי להפעיל וירטואליזציה מקוננת ישירות במכונה וירטואלית חדשה או קיימת, צריך להגדיר את השדה
enableNestedVirtualizationלערךtrueכשיוצרים את המכונה הווירטואלית או כשמעדכנים אותה. זו השיטה המומלצת כי לא צריך ליצור תמונה בהתאמה אישית או להשתמש במפתח הרישיון המיוחד.כדי להפעיל וירטואליזציה מקוננת, צריך ליצור דיסק אתחול, ליצור אימג' בהתאמה אישית עם מפתח הרישיון המיוחד לווירטואליזציה מקוננת, ואז ליצור מכונה וירטואלית שמשתמשת באימג' בהתאמה אישית.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
gcloud
-
התקינו את ה-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
מייצאים את המאפיינים של מכונת ה-VM באמצעות הפקודה
gcloud compute instances exportהבאה:gcloud compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: שם המכונה הווירטואלית שממנה רוצים לייצא את המאפיינים
YAML_FILE_PATH: הנתיב ושם הקובץ של קובץ .yaml שבו יישמרו נתוני התצורה המיוצאים
ZONE: האזור שמכיל את המכונה הווירטואלית
בקובץ התצורה של ה-VM שנשמר ב-FILE_PATH, מעדכנים את הערך של
enableNestedVirtualization. אם הערך לא מופיע בקובץ, מוסיפים את השורה הבאה:advancedMachineFeatures: enableNestedVirtualization: true
מעדכנים את ה-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. מפתח הרישיון לא כרוך בחיובים נוספים.
יוצרים דיסק אתחול מאימג' ציבורי או מאימג' בהתאמה אישית. בדוגמה הבאה השתמשנו ב-
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: השם של הדיסק החדש
יוצרים קובץ אימג' בהתאמה אישית עם מפתח הרישיון המיוחד שנדרש לווירטואליזציה בתצורה מקוננת.
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: השם של הדיסק שנוצר קודם
אפשר למחוק את דיסק המקור אחרי שיוצרים את קובץ האימג' עם הרישיון המיוחד.
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: השם של הדיסק שרוצים למחוק
יוצרים מכונה וירטואלית שמשתמשת באימג' החדש עם הרישיון המיוחד. פלטפורמת ה-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: השם של התמונה שנוצרה קודם
איך מוודאים שהווירטואליזציה בתצורה מקוננת מופעלת במכונה הווירטואלית
מתחברים למכונה הווירטואלית.
gcloud compute ssh VM_NAME
מחליפים את
VM_NAMEבשם של המכונה הווירטואלית שאליה רוצים להתחבר.מוודאים שהווירטואליזציה המקוננת מופעלת. כל תשובה אחרת מלבד
0מאשרת שהווירטואליזציה המקוננת מופעלת.grep -cw vmx /proc/cpuinfo