במסמך הזה מוסבר איך להפעיל או להשבית את VM Runtime ב-Google Distributed Cloud. אפשר לעשות את זה על ידי עדכון VMRuntime משאב בהתאמה אישית או על ידי הפעלת פקודות bmctl.
לפני שמתחילים
כדי להפעיל או להשבית את VM Runtime ב-GDC, אתם צריכים גישה למשאבים ולכלים הבאים:
- גישה לאשכול Google Distributed Cloud מגרסה 1.12.0 (
anthosBareMetalVersion: 1.12.0) ואילך. אפשר להשתמש בכל סוג של אשכול שיכול להריץ עומסי עבודה. אם צריך, אפשר לנסות את 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, שהוא פורמט של העתקה בעת כתיבה, אבל הוא עשוי להשתמש ביותר נפח אחסון בדיסק. מידע נוסף על פורמטים של תמונות ל-VM זמין במאמר פורמטים של קבצים של תמונות דיסק במאמרי העזרה של QEMU.
-
שומרים את המשאב המותאם אישית בכלי העריכה.
מוודאים שהמשאב המותאם אישית
VMRuntimeמופעל:kubectl describe vmruntime vmruntimeהפרטים של
VMRuntimeמשאב בהתאמה אישית כוללים קטעStatus. ההגדרה VM Runtime on 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.
הסבר על ההתנהגות של מכונות וירטואליות פעילות
אפשר להשתמש בהערה 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, VM Runtime ב-GDC מנסה להגן על מכונות וירטואליות שפועלות. לפני שמשביתים את VM Runtime ב-GDC, צריך למחוק את כל מכונות ה-VM הפועלות, או לציין את הפרמטר --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 נכשלה. הבדיקה המקדימה של זמן הריצה של VM ב-GDC פועלת באופן אוטומטי כש-spec.enabled מוגדר כ-true.
kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH
בדיקת הטרום-הפעלה של זמן הריצה של VM ב-GDC מופעלת כשמבצעים אחת מהפעולות הבאות:
הפעלת VM Runtime ב-GDC
הפעלת VM Runtime בתכונות GDC, כמו useEmulation
שדרוג אשכולות
הסרת התווית
kubevm.io/VM-SkipScheduleבצמתיםכדי ליצור באופן עצמאי את VM Runtime באובייקט של בדיקת קדם-הפעלה ב-GDC, מריצים את הפקודה
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATHאו מחילים מניפסט YAML שלVMRuntimePreflightCheck.
אפשר להפעיל מכונות וירטואליות כשהבדיקה המקדימה של זמן הריצה של המכונה הווירטואלית האחרונה ב-GDC מצליחה. אם בדיקת ההתכנות נכשלת, יצירת מכונת ה-VM נחסמת ומוצגות שגיאות של בדיקת ההתכנות.
אימות ההצלחה של בדיקת הטרום-טיסה
כדי לוודא שהבדיקות המקדימות הצליחו, מריצים את הפקודות הבאות:
כדי לראות את הבדיקות האחרונות לפני ההשקה:
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