במאמר הזה מוסבר איך לבדוק אם ההפעלה של וירטואליזציה מקוננת מופעלת, ואיך לשנות את האילוץ הבוליאני שקובע אם ההפעלה של וירטואליזציה מקוננת מופעלת בארגון, בפרויקט או בתיקייה.
אילוץ בוליאני במדיניות הארגון קובע אם אפשר ליצור מכונות וירטואליות מוטמעות. האילוץ הבוליאני של וירטואליזציה מקוננת הוא הגבלה, כלומר כשמפעילים אותו, הוא אומר למדיניות הארגון להגביל את היצירה של מכונות וירטואליות מקוננות. האילוץ הזה מונע מ-Compute Engine לחשוף הרחבות וירטואליזציה למכונות וירטואליות (מכונות וירטואליות ברמה L1). המשמעות היא שאפשר עדיין ליצור מכונות וירטואליות ברמה 1 (L1) עם הגדרות שמאפשרות וירטואליזציה מקוננת, אבל אי אפשר להריץ מכונות וירטואליות מקוננות (מכונות וירטואליות ברמה 2, L2) על מכונות וירטואליות ברמה 1. מידע נוסף על אילוצים בוליאניים זמין במאמר הסבר על אילוצים.
האילוץ השבתת וירטואליזציה מקוננת של מכונות וירטואליות לא נאכף כברירת מחדל, ולכן לא צריך לשנות אילוץ בוליאני כדי להפעיל וירטואליזציה מקוננת. למרות זאת, Google ממליצה להגדיר במפורש את הערך של האילוץ, כדי שהארגון, התיקיות והפרויקטים לא יסתמכו על הגדרת ברירת המחדל. אם הפרויקט לא כפוף לארגון, האילוץ לא נאכף כברירת מחדל ואי אפשר לשנות אותו.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.
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 .
איך בודקים אם מותר להשתמש בווירטואליזציה מקוננת
כדי לבדוק אם וירטואליזציה מקוננת מותרת בארגון, בתיקייה או בפרויקט, אפשר להשתמש במסוף Google Cloud , ב-Google Cloud CLI או ב-REST.
המסוף
כדי לבדוק אם אפשר ליצור מכונות וירטואליות מוטמעות בארגון, בתיקייה או בפרויקט, צריך לבדוק אם האילוץ הבוליאני להשבתת הוירטואליזציה המוטמעת לא נאכף. אם מדיניות הארגון לא אוכפת את האילוץ השבתת וירטואליזציה מקוננת של מכונות וירטואליות, אפשר ליצור מכונות וירטואליות מקוננות.
נכנסים לדף Organization policies במסוף Google Cloud .
בבורר הארגון, התיקייה והפרויקט, בוחרים את הישות שרוצים להציג את מדיניות הארגון שלה.
בוחרים באילוץ Disable VM nested virtualization כדי לפתוח את הדף Policy details.
הצגת הערך של Enforcement:
אם הערך הוא Not enforced, אז ההגדרה 'וירטואליזציה מקוננת' מופעלת ואפשר ליצור מכונות וירטואליות מקוננות.
אם הערך הוא Enforced, אז הווירטואליזציה המקוננת מושבתת ואי אפשר ליצור מכונות וירטואליות מקוננות.
gcloud
כדי לבדוק את הערך של אילוץ בוליאני compute.disableNestedVirtualization, משתמשים בפקודה gcloud resource-manager org-policies describe.
אם הפלט של Google Cloud CLI לא מציג ערך עבור booleanPolicy, סימן שהווירטואליזציה המקוננת מותרת ואפשר ליצור מכונות וירטואליות מקוננות.
אם ערך הפלט של Google Cloud CLI עבור booleanPolicy הוא enforced: true, אז מדיניות הארגון אוכפת את האילוץ של השבתת הווירטואליזציה המקוננת, ואי אפשר ליצור מכונות וירטואליות מקוננות.
gcloud resource-manager org-policies \ describe constraints/compute.disableNestedVirtualization \ (--organization=ORGANIZATION_ID | --folder=FOLDER_ID | --project=PROJECT_ID) --effective
מחליפים בדיוק אחד מהערכים הבאים:
ORGANIZATION_ID: המזהה של הארגון שרוצים לקבל את ערך האילוץ שלו. כדי לראות רשימה של הארגונים שאפשר לגשת אליהם ואת המזהים שלהם, מריצים את הפקודהgcloud organizations list.
FOLDER_ID: המזהה של התיקייה שרוצים לקבל את ערך האילוץ שלה. כדי להציג רשימה של התיקיות שאפשר לגשת אליהן ואת המזהים שלהן, מריצים את הפקודהgcloud resource-manager folders list.
PROJECT_ID: מזהה הפרויקט שרוצים לקבל את ערך האילוץ שלו. כדי לראות רשימה של הפרויקטים שאפשר לגשת אליהם ואת המזהים שלהם, מריצים את הפקודהgcloud projects list.
REST
משתמשים ב-REST כדי לבדוק את הערך של compute.disableNestedVirtualization מגבלת בוליאנית, שקובעת אם אפשר ליצור מכונות וירטואליות מוטמעות בארגון, בתיקייה או בפרויקט.
אם תגובת ה-REST לא מחזירה ערך עבור "booleanPolicy" עבור האילוץ, אז הווירטואליזציה המקוננת לא מושבתת ואפשר ליצור מכונות וירטואליות מקוננות.
אם הערך של "booleanPolicy" בפלט הוא "enforced": true, אז הווירטואליזציה המקוננת מושבתת ואי אפשר ליצור מכונות וירטואליות מקוננות.
POST https://cloudresourcemanager.googleapis.com/v1/RESOURCE/RESOURCE_ID:getOrgPolicy
{
"constraint": "compute.disableNestedVirtualization"
}
מחליפים את מה שכתוב בשדות הבאים:
RESOURCE: המשאב שעבורו רוצים לקבל את מדיניות הארגון. הגדרת אחת מהאפשרויות הבאות:
organizations: קריאה ל-organizations.getOrgPolicy
folders: קריאה ל-folders.getOrgPolicymethod
projects: קריאה ל-projects.getOrgPolicymethod
RESOURCE_ID: הארגון, התיקייה או הפרויקט שבהם רוצים לבדוק את הסטטוס של האילוץ 'השבתת וירטואליזציה מקוננת'
מתוך מכונה וירטואלית של Linux, אפשר להריץ את הפקודה grep -c vmx /proc/cpuinfo כדי לבדוק אם תוספי וירטואליזציה זמינים למכונה הווירטואלית. אם הפקודה הזו מחזירה 0, תוספי הוירטואליזציה לא זמינים ואי אפשר להפעיל מכונות וירטואליות מקוננות. אחת הסיבות לכך יכולה להיות שהאילוץ השבתת וירטואליזציה מקוננת של מכונות וירטואליות נאכף על ידי מדיניות ארגונית.
אם תנסו להפעיל מכונה וירטואלית מוטמעת באמצעות KVM, יכול להיות שתופיע הודעת שגיאה דומה לזו: Could not access KVM kernel module: No such file or
directory.
שינוי מדיניות הארגון בנושא וירטואליזציה מקוננת
אם יש לכם את התפקיד המתאים, אתם יכולים לקבוע אם אפשר ליצור מכונות וירטואליות מקוננות בארגון, בתיקייה או בפרויקט. כדי לשלוט באכיפה הזו, משתמשים במגבלת בוליאנית לווירטואליזציה מקוננת.
אפשר להשתמש במסוף Google Cloud , ב-Google Cloud CLI או ב-REST כדי להפעיל וירטואליזציה מקוננת בארגון, בתיקייה או בפרויקט.
המסוף
כדי להפעיל וירטואליזציה מקוננת, משביתים את האכיפה של מגבלת הבוליאנית השבתת וירטואליזציה מקוננת של מכונה וירטואלית. כדי להשבית וירטואליזציה מקוננת, מפעילים את האכיפה של מגבלת הבוליאנית.
נכנסים לדף Organization policies במסוף Google Cloud .
בבורר הארגון, התיקייה והפרויקט, בוחרים את הישות שרוצים לערוך את מדיניות הארגון שלה.
בוחרים באילוץ Disable VM nested virtualization כדי לפתוח את הדף Policy details.
לוחצים על עריכה ואז על התאמה אישית.
בקטע Enforcement (אכיפה), בוחרים באחת מאפשרויות האכיפה הבאות לאילוץ הבוליאני Disable VM nested virtualization (השבתת וירטואליזציה מקוננת של מכונות וירטואליות):
- מופעל: האכיפה מופעלת והווירטואליזציה המקוננת מושבתת
- מושבת: השבתת האכיפה והפעלת וירטואליזציה מקוננת
לוחצים על Save.
gcloud
משתמשים בפקודה gcloud resource-manager org-policies כדי להפעיל או להשבית את האכיפה של האילוץ הבוליאני compute.disableNestedVirtualization במדיניות הארגון.
אם משביתים את האילוץ compute.disableNestedVirtualization באמצעות הפקודה disable-enforce, אפשר ליצור מכונות וירטואליות עם הפעלה של וירטואליזציה מקוננת.
אם מפעילים את האילוץ באמצעות הפקודה enable-enforce, אי אפשר ליצור מכונות וירטואליות שמופעלת בהן וירטואליזציה מקוננת.
gcloud resource-manager org-policies \ ( disable-enforce | enable-enforce ) compute.disableNestedVirtualization \ (--organization=ORGANIZATION_ID | --folder=FOLDER_ID | --project=PROJECT_ID)
מחליפים בדיוק אחד מהערכים הבאים:
ORGANIZATION_ID: מזהה הארגון שרוצים לשנות את ערך האילוץ שלו. כדי לראות את רשימת הארגונים שאפשר לגשת אליהם ואת המזהים שלהם, מריצים את הפקודהgcloud organizations list.
FOLDER_ID: המזהה של התיקייה שרוצים לשנות את ערך האילוץ שלה. כדי להציג רשימה של התיקיות שאפשר לגשת אליהן ואת המזהים שלהן, מריצים את הפקודהgcloud resource-manager folders list.
PROJECT_ID: מזהה הפרויקט שבו רוצים לשנות את ערך ההגבלה. כדי לראות רשימה של הפרויקטים שאפשר לגשת אליהם ואת המזהים שלהם, מריצים את הפקודהgcloud projects list.
REST
משתמשים ב-REST כדי לשנות את הערך של האילוץ הבוליאני compute.disableNestedVirtualization, שקובע אם אפשר ליצור מכונות וירטואליות מוטמעות בארגון, בתיקייה או בפרויקט.
POST https://cloudresourcemanager.googleapis.com/v1/RESOURCE/RESOURCE_ID:setOrgPolicy
{
"policy": {
"booleanPolicy": {
"enforced": ENFORCE
},
"constraint": "constraints/compute.disableNestedVirtualization"
}
}
מחליפים את מה שכתוב בשדות הבאים:
RESOURCE: המשאב שרוצים לשנות את מדיניות הארגון שלו. מגדירים את הערך לאחת מהאפשרויות הבאות:
organizations: קריאה ל-organizations.setOrgPolicy
folders: קריאה ל-folders.setOrgPolicymethod
projects: קריאה ל-projects.setOrgPolicymethod
RESOURCE_ID: הארגון, התיקייה או הפרויקט שבהם רוצים לבדוק את הסטטוס של האילוץ 'השבתת וירטואליזציה מקוננת'
ENFORCE: קובע אם מדיניות הארגון אוכפת אתcompute.disableNestedVirtualizationהאילוץ הבוליאני. הגדרת אחת מהאפשרויות הבאות:
true: כדי לאכוף את האילוץ. עם ההגדרה הזו אי אפשר ליצור מכונות וירטואליות שמופעלת בהן וירטואליזציה מקוננת.
false: כדי לא לאכוף את האילוץ. ההגדרה הזו מאפשרת ליצור מכונות וירטואליות שמופעלת בהן וירטואליזציה מקוננת.