מדריך למתחילים: יצירת מכונה וירטואלית באשכולות Google Distributed Cloud

במדריך למתחילים הזה תלמדו איך להשתמש ב-VM Runtime ב-GDC כדי ליצור מכונה וירטואלית (VM) ב-Google Distributed Cloud. ‫VM Runtime ב-GDC משתמש ב-KubeVirt כדי לתזמן מכונות וירטואליות באשכולות, ומאפשר לכם לעבוד עם אפליקציות ועומסי עבודה מבוססי מכונות וירטואליות בסביבת פיתוח אחידה.

לפני שמתחילים

כדי להשלים את המדריך למתחילים הזה, תצטרכו גישה לאשכול Google Distributed Cloud בגרסה 1.12‏ (anthosBareMetalVersion: 1.12) או בגרסה מתקדמת יותר. אפשר להשתמש בכל סוג של אשכול שיכול להריץ עומסי עבודה. אם צריך, אפשר לנסות את Google Distributed Cloud ב-Compute Engine או לעיין בסקירה הכללית על יצירת אשכולות.

הפעלת VM Runtime ב-GDC

‫VM Runtime ב-GDC מותקן אוטומטית ב-Google Distributed Cloud בגרסה 1.10 ומעלה, אבל הוא מושבת כברירת מחדל. כדי להפעיל משאבי מכונות וירטואליות ב-Google Distributed Cloud, צריך להפעיל את זמן הריצה של המכונות הווירטואליות ב-GDC.

bmctl

ב-Google Distributed Cloud בגרסה 1.11 ואילך אפשר להשתמש בכלי שורת הפקודה bmctl:

  • כדי להפעיל את זמן הריצה, משתמשים בכלי bmctl:

    bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
    

    מציינים את הנתיב לקובץ kubeconfig של האשכול. ‫Google Distributed Cloud יוצר את קובץ ה-kubeconfig בתחנת העבודה של האדמין כשיוצרים אשכול. כברירת מחדל, הנתיב הוא bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.

    אם VM Runtime ב-GDC כבר מופעל, הפקודה מחזירה שגיאה.

משאב מותאם אישית

ב-Google Distributed Cloud בגרסה 1.10 ואילך אפשר להשתמש בהגדרת משאב בהתאמה אישית כדי להפעיל את VM Runtime ב-GDC. המשאב המותאם אישית הזה מותקן כברירת מחדל.

  1. עורכים את VMRuntime המשאב המותאם אישית:

    kubectl edit vmruntime
    
  2. מגדירים את 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.
  3. שומרים את המשאב המותאם אישית בכלי העריכה.

  4. מוודאים שהמשאב המותאם אישית VMRuntime מופעל:

    kubectl describe vmruntime vmruntime
    

    הפרטים של VMRuntime משאב בהתאמה אישית כוללים קטע Status. ההגדרה VM Runtime on GDC מופעלת ופועלת כשVMRuntime.Status.Ready מוצג כ-true.

התקנה של כלי הלקוח virtctl

כדי ליצור ולנהל מכונות וירטואליות, צריך להתקין את כלי הלקוח virtctl.

  1. מתקינים את כלי הלקוח virtctl כפלאגין של kubectl:

    export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_SERVICE_ACCOUNT_KEY/bm-gcr.json"
    sudo -E bmctl install virtctl
    

    הפרטים האלה מאפשרים לכם לבצע אימות ולהוריד את כלי הלקוח virtctl, ואז להתקין אותו ב-/usr/bin/kubectl-virt במחשב המקומי.

  2. מוודאים שהפלאגין virtctl מותקן:

    kubectl plugin list
    

    אם kubectl-virt מופיע בתגובה, סימן שהפלאגין הותקן בהצלחה.

    אם kubectl-virt לא מופיע ברשימה, בודקים את הקובץ install-virtctl.log כמו שמופיע בפלט של הפקודה הקודמת bmctl install, למשל bmctl-workspace/log/install-virtctl-[date]/install-virtctl.log.

יצירת VM

במדריך למתחילים הזה משתמשים ב-kubectl CLI כדי ליצור מכונה וירטואלית (VM) שמשתמשת באימג' ציבורי של מכונה וירטואלית ובפרטי כניסה שמוגדרים כברירת מחדל.

  1. יוצרים מכונה וירטואלית באשכול. משתמשים בתוסף virtctl עם הפקודה kubectl:

    kubectl virt create vm VM_NAME \
        --image ubuntu20.04 \
        --configure-initial-password USERNAME:PASSWORD
    

    הפקודה הזו יוצרת VM של Ubuntu 20.04 עם הגדרות ברירת מחדל של 2 מעבדים, זיכרון של 4Gi ודיסק אתחול של 20Gi במצב ReadWriteOnce באמצעות סוג האחסון local-shared. מחליפים את הערכים הבאים:

    • VM_NAME: השם של המכונה הווירטואלית. שמות של מכונות וירטואליות צריכים להכיל רק תווים אלפאנומריים באותיות קטנות או את התו '-', להתחיל ולהסתיים בתו אלפאנומרי, ולהיות באורך של עד 63 תווים. מידע נוסף זמין במאמר בנושא שמות של תוויות RFC 1123 במסמכי התיעוד של Kubernetes.
    • USERNAME: שם המשתמש של החשבון שרוצים ליצור במכונה הווירטואלית.
    • PASSWORD: הסיסמה של חשבון המשתמש.

    אם מופיעה שגיאה לגבי פרמטרים של CLI, צריך לוודא שהאשכול הוא בגרסה 1.11.1 ומעלה, ושיש לכם את הגרסה העדכנית של כלי הלקוח virtctl. מידע נוסף על שגיאות ב-CLI זמין ביומן המסוף. לגבי כללים לשם משתמש ולסיסמה, אפשר לעיין במסמכים של מערכת ההפעלה (OS) של האורח. אם משהו לא פועל כמצופה, כדאי לבדוק את הבעיות הידועות ב-VM Runtime ב-GDC.

  2. יכול להיות שיחלפו כמה דקות עד שהמכונה הווירטואלית תיווצר. בודקים את הסטטוס של ה-VM באמצעות הפקודה kubectl:

    kubectl get gvm
    

    בדוגמה הבאה של הפלט אפשר לראות שהמכונה הווירטואלית במצב Running:

    NAME         STATUS    AGE   IP
    vm-sample1   Running   64s   192.168.2.124
    

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

כשהמכונה הווירטואלית פועלת, מתחברים למסוף של המכונה הווירטואלית.

  1. כדי לגשת למכונה וירטואלית מהמסוף, משתמשים ב-kubectl:

    kubectl virt console VM_NAME
    
  2. כשמוצגת בקשה, מזינים את פרטי הכניסה של המשתמש שציינתם כדי ליצור את מכונת ה-VM.

  3. אחרי שמתחברים בהצלחה למסוף של המכונה הווירטואלית, יוצאים מהמסוף ומסשן המכונה הווירטואלית:

    Ctrl + ]
    

הסרת המשאבים

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

  1. כדי למחוק את המכונה הווירטואלית ואת DataVolume שמשויך אליה, משתמשים בפקודה kubectl:

    kubectl virt delete vm VM_NAME --all
    

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