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

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

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

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

הפעלת VM Runtime ב-GDC

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

bmctl

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

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

    bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
    

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

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

משאב בהתאמה אישית

בגרסה 1.10 ואילך של Google Distributed Cloud, אפשר להשתמש בהגדרה של משאב בהתאמה אישית כדי להפעיל את VM Runtime on 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 on GDC
    • ‫useEmulation: אם הצומת לא תומך בווירטואליזציה של חומרה, או אם אתם לא בטוחים, הגדירו את הערך כ-true. אם יש אפשרות, וירטואליזציה של חומרה מספקת ביצועים טובים יותר מאמולציה של תוכנה. אם לא מציינים את השדה useEmulation, ערך ברירת המחדל שלו הוא false.
    • ‫vmImageFormat: תומך בשני ערכים של פורמט קובץ אימג' של דיסק: raw ו-qcow2. אם לא מגדירים את vmImageFormat, סביבת זמן הריצה של VM ב-GDC משתמשת בפורמט קובץ האימג' raw כדי ליצור מכונות וירטואליות. הפורמט raw עשוי לספק ביצועים משופרים בהשוואה ל-qcow2, פורמט של העתקה בזמן כתיבה, אבל הוא עשוי להשתמש ביותר שטח דיסק. למידע נוסף על הפורמטים של קובצי האימג' של ה-VM, קראו את המאמר Disk image file formats במאמרי העזרה של QEMU.
  3. שומרים את המשאב בהתאמה אישית בעורך.

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

    kubectl describe vmruntime vmruntime
    

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

התקנת כלי הלקוח של 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

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

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

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

    הפקודה הזו יוצרת מכונה וירטואלית של Ubuntu 20.04 עם ברירות מחדל של מעבד (CPU) אחד (1), זיכרון של 4Gi ודיסק אתחול של 20Gi במצב ReadWriteOnce באמצעות מחלקת האחסון local-shared. מחליפים את הערכים הבאים:

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

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

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

    kubectl get gvm
    

    בפלט לדוגמה הבא, ה-VM במצב 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
    

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