במסמך הזה מוסבר איך להפעיל או להשבית את VM Runtime ב-Google Distributed Cloud. אפשר לעשות זאת על ידי עדכון VMRuntime משאב בהתאמה אישית או על ידי הפעלת פקודות bmctl.
לפני שמתחילים
כדי להפעיל או להשבית את VM Runtime ב-GDC, אתם צריכים גישה למשאבים ולכלים הבאים:
- גישה לאשכול בגרסה 1.12.0 (
anthosBareMetalVersion: 1.12.0) או בגרסה מתקדמת יותר של Google Distributed Cloud. אפשר להשתמש בכל סוג של אשכול שיכול להריץ עומסי עבודה. אם צריך, אפשר להתנסות ב-Google Distributed Cloud ב-Compute Engine או לעיין בסקירה הכללית בנושא יצירת אשכולות. - כלי שורת הפקודה
bmctl. מידע נוסף זמין במאמר בנושא הורדה והתקנה של הכליbmctl.
הפעלת VM Runtime ב-GDC
VM Runtime ב-GDC מותקן אוטומטית ב-Google Distributed Cloud בגרסה 1.10 ומעלה, אבל הוא מושבת כברירת מחדל. כדי להפעיל משאבי מכונות וירטואליות ב-Google Distributed Cloud, צריך להפעיל את זמן הריצה של המכונות הווירטואליות ב-GDC.
bmctl
כדי להפעיל את זמן הריצה, משתמשים בכלי
bmctl:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATHמציינים את הנתיב לקובץ kubeconfig של האשכול. Google Distributed Cloud יוצר את קובץ ה-kubeconfig בתחנת העבודה של האדמין כשיוצרים אשכול. כברירת מחדל, הנתיב הוא
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.אם VM Runtime ב-GDC כבר מופעל, הפקודה מחזירה שגיאה.
אפשר להגדיר הגדרות נוספות, כמו הגדרות של אמולציה או של פורמט תמונה, על ידי עריכה של VMRuntime משאב בהתאמה אישית.
משאב מותאם אישית
כדי להפעיל את זמן הריצה, צריך לעדכן את המשאב המותאם אישית VMRuntime. המשאב המותאם אישית הזה מותקן כברירת מחדל.
עורכים את
VMRuntimeהמשאב המותאם אישית:kubectl edit vmruntimeהגדרת
enabled:trueבמפרט:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: enabled: true # useEmulation defaults to "false" if not set. useEmulation: true # vmImageFormat defaults to "qcow2" if not set. vmImageFormat: qcow2בקטע
specשלמעלה, אפשר להגדיר את הערכים הבאים:-
enabled: הערך מוגדר כ-true כדי להפעיל את VM Runtime ב-GDC -
useEmulation: אם הצומת לא תומך בווירטואליזציה של חומרה, או אם אתם לא בטוחים, צריך להגדיר את הערך כ-true. אם יש אפשרות כזו, וירטואליזציה של חומרה מספקת ביצועים טובים יותר מאשר אמולציה של תוכנה. אם לא מציינים ערך לשדהuseEmulation, ערך ברירת המחדל הואfalse. -
vmImageFormat: תומך בשני ערכים של פורמט תמונת דיסק:rawו-qcow2. אם לא מגדירים אתvmImageFormat, סביבת הריצה של מכונות וירטואליות ב-GDC משתמשת בפורמט של תמונת הדיסקrawכדי ליצור מכונות וירטואליות. פורמטrawעשוי לספק ביצועים טובים יותר מפורמטqcow2, שהוא פורמט של העתקה בעת כתיבה, אבל הוא עשוי להשתמש ביותר נפח אחסון בדיסק. מידע נוסף על פורמטים של תמונות למכונה וירטואלית זמין במאמר פורמטים של קבצים של תמונות דיסק במאמרי העזרה של QEMU.
-
שומרים את המשאב המותאם אישית בכלי העריכה.
מוודאים שהמשאב המותאם אישית
VMRuntimeמופעל:kubectl describe vmruntime vmruntimeהפרטים של
VMRuntimeמשאב מותאם אישית כוללים קטעStatus. האפשרות VM Runtime ב-GDC מופעלת ופועלת כשVMRuntime.Status.Readyמוצג כ-true.
השבתת VM Runtime ב-GDC
אם אתם לא צריכים יותר להשתמש ב-VM Runtime ב-GDC, אתם יכולים להשבית את התכונה הזו.
bmctl
כדי להשבית את זמן הריצה, משתמשים בכלי
bmctl:bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=trueמזינים את הנתיב לקובץ kubeconfig של האשכול ואת הערכים של אפשרויות ההגדרה הבאות:
-
--force: מגדירים את הערךtrueכדי לאשר שרוצים למחוק משאבי מכונה וירטואלית קיימים. ערך ברירת המחדל הואfalse.
-
משאב מותאם אישית
כדי להשבית את זמן הריצה, מעדכנים את המשאב המותאם אישית VMRuntime:
עורכים את
VMRuntimeהמשאב המותאם אישית:kubectl edit vmruntimeהגדרת
enabled:falseבמפרט:apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2שומרים את המפרט המעודכן של המשאב המותאם אישית בכלי העריכה.
כדי לוודא שהמשאב המותאם אישית
VMRuntimeמושבת, מציגים את הפודים שפועלים במרחב השמותvm-system:kubectl get pods --namespace vm-systemהאפשרות VM Runtime ב-GDC מושבתת כשפועלים במרחב השמות רק הפודים ששייכים לפריסת
vmruntime-controller-manager.
הסבר על ההתנהגות של מכונות וירטואליות (VM)
אפשר להשתמש בהערה baremetal.cluster.gke.io/vmrumtime-force-disable ב-VM Runtime במשאב GDC כדי להגדיר את ההתנהגות כשזמן הריצה מושבת בזמן שהמכונות הווירטואליות פועלות באשכול.
בדוגמה הבאה אפשר לראות שערך ההערה הזו מוגדר כ-false כברירת מחדל:
// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
annotations:
baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
name: vmruntime
[...]
כשההערה הזו מוגדרת לערך false, סביבת הריצה של מכונות וירטואליות ב-GDC מנסה להגן על מכונות וירטואליות שפועלות. צריך למחוק את כל המכונות הווירטואליות שפועלות לפני שמשביתים את סביבת הריצה של מכונות וירטואליות ב-GDC, או לציין את הפרמטר --force=true עם הפקודה bmctl disable vmruntime כמו שמוצג בקטע הקודם.
בטבלה הבאה מוסבר מה קורה למכונות וירטואליות שפועלות כשמגדירים את ההערה הזו לערך true או false, ואם מציינים את הפרמטר --force=true או לא:
| מצב האשכול | הפרמטר --force | vmrumtime-force-disable annotation | התנהגות |
|---|---|---|---|
| אין מכונות וירטואליות | לא רלוונטי | לא רלוונטי | השבתת VM Runtime ב-GDC. |
| מכונות וירטואליות קיימות | נכון | נכון | מחיקת כל המכונות הווירטואליות הפעילות והמשאבים שקשורים אליהן. משביתים את VM Runtime ב-GDC. |
| נכון | לא נכון | מחיקת כל המכונות הווירטואליות הפעילות והמשאבים שקשורים אליהן. משביתים את VM Runtime ב-GDC. | |
| לא נכון | נכון | מוצגת הנחיה למחיקת מכונות וירטואליות פעילות ומשאבים קשורים. אחרי שמוחקים את כל מכונות ה-VM הפעילות, משביתים את VM Runtime ב-GDC. | |
| לא נכון | לא נכון | לא מוחקים מכונות וירטואליות קיימות שפועלות. אל תשביתו את זמן הריצה של המכונה הווירטואלית ב-GDC. הפקודה bmctl מחזירה שגיאה. |
VM Runtime בבדיקה המקדימה של GDC
בדיקת ההכנה של VM Runtime ב-GDC מאמתת קבוצה של דרישות מוקדמות בסביבת המכונה לפני השימוש ב-VM Runtime ב-GDC ובמכונות וירטואליות. יצירת מכונת ה-VM נחסמת אם בדיקת קדם-ההפעלה של VM Runtime ב-GDC נכשלה. הבדיקה המקדימה של זמן הריצה של מכונה וירטואלית ב-GDC פועלת באופן אוטומטי כש-spec.enabled מוגדר כ-true.
kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH
בדיקת הטרום-השקה של VM Runtime ב-GDC פועלת כשמבצעים אחת מהפעולות הבאות:
הפעלת VM Runtime ב-GDC
הפעלת VM Runtime בתכונות GDC, כמו useEmulation
שדרוג אשכולות
הסרת התווית
kubevm.io/VM-SkipScheduleבצמתיםכדי ליצור באופן עצמאי את VM Runtime באובייקט של בדיקת קדם-הפעלה של GDC, מריצים את הפקודה
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATHאו מחילים מניפסט YAML שלVMRuntimePreflightCheck.
אפשר להפעיל מכונות וירטואליות אם בדיקת קדם-ההפעלה של VM Runtime העדכנית ב-GDC מצליחה. אם בדיקת קדם-ההפעלה נכשלת, יצירת המכונה הווירטואלית נחסמת ומוצגות שגיאות של בדיקת קדם-ההפעלה.
אימות ההצלחה של בדיקת קדם-הפעלה
כדי לוודא שהבדיקות המקדימות הצליחו, מריצים את הפקודות הבאות:
כדי למצוא את הבדיקות האחרונות לפני ההשקה שבוצעו:
kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATHהפלט אמור להיראות כמו בדוגמה הבאה:
NAME PASS AGE vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e false 42s vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 true 21sכדי למצוא את הסטטוס של בדיקת טרום-טיסה, מריצים את הפקודה הבאה:
kubectl get vmruntime vmruntime -o yaml --kubeconfig KUBECONFIG_PATH... preflightCheckSummary: preflightCheckSummary: featureStatuses: CPU: passed: true KVM: passed: true preflightCheckName: vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 preflightCheckPassed: true ...
ניפוי הבאגים של בדיקת ההתאמה נכשל
אם בדיקת הטרום-ההמראה נכשלת, מבצעים את השלבים הבאים כדי לאתר ולתקן את הבעיה:
איתור הבדיקות האחרונות לפני ההשקה שבוצעו.
kubectl get vmruntimepfc -n vm-systemכדי לקבל פרטים, בודקים את הסטטוס של הבדיקה המקדימה.
kubectl get vmruntimepfc -n vm-system \ vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e -o yaml \ --kubeconfig KUBECONFIG_PATH... status: checks: worker-0--52229ee15841099-22c41577139a7b8c.lab.anthos: passed: false results: - checkName: CPU passed: true - checkName: KVM message: | command terminated with exit code 1 ls: /mnt/dev/kvm: No such file or directory passed: false ...צריך לפתור את הבעיה ולהריץ שוב את בדיקת הטרום-השקה של VM Runtime ב-GDC. כך נראה קובץ מניפסט לדוגמה של VMRuntimePreflightCheck ב-YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntimePreflightCheck metadata: name: vmruntime-preflight-check-manual namespace: vm-system