המסמך הזה מיועד לבעלי אפליקציות שמשתמשים ב-VM Runtime ב-GDC כדי להריץ מכונות וירטואליות (VM) באשכולות שנוצרו באמצעות תוכנת Distributed Cloud רק עבור bare metal. במסמך הזה מוסבר איך לערוך מכונות וירטואליות שפועלות באשכולות Bare Metal. לדוגמה, אפשר לערוך את הקצאת המשאבים, כמו מעבד וזיכרון, או לשנות את הרשת שאליה מתחברת מכונה וירטואלית.
אפשר לשנות כל שדה בקטע spec של משאב VirtualMachine.
אפשר גם לערוך את התוויות של מכונה וירטואלית. אי אפשר לערוך שדות אחרים, כמו שם המכונה הווירטואלית (metadata.name). כברירת מחדל, המכונה הווירטואלית צריכה להיות במצב Stopped לפני שאתם עורכים את המשאב. עם זאת, החל מגרסה 1.13.0 של Google Distributed Cloud, אפשר להגדיר את משאב VirtualMachine כך שיופעל מחדש באופן אוטומטי בכל פעם שמשנים את ההגדרה.
אם השינויים שביצעתם במשאב VirtualMachine מכילים שגיאות כשאתם שומרים אותם, השינויים נדחים ומוצגת לכם הודעה. צריך לתקן את השגיאות ולנסות לשמור שוב את המשאב VirtualMachine. אם ה-VM לא מופעל אחרי שמבצעים שינויים, אפשר להשתמש בפקודה kubectl describe gvm VM_NAME כדי לראות מידע על פתרון בעיות ולתקן את השגיאות.
לפני שמתחילים
כדי להשלים את המסמך הזה, אתם צריכים גישה למקורות המידע הבאים:
- מכונה וירטואלית שפועלת באחד מהאשכולות שלכם. אם צריך, יוצרים מכונה וירטואלית באשכול Bare Metal.
- כלי הלקוח
virtctlמותקן כפלאגין שלkubectl. אם צריך, מתקינים את כלי הלקוח virtctl.
עריכת משאבי מחשוב
אם יש שינוי בדרישות של עומס העבודה שלכם, אתם יכולים לעדכן את מספר המעבדים הווירטואליים ואת כמות הזיכרון הווירטואלי שהקציתם למכונות הווירטואליות. כדי לערוך את עומסי העבודה של המחשוב, פועלים לפי השלבים הבאים:
מפסיקים את מכונת ה-VM שרוצים לערוך:
kubectl virt stop VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שרוצים להפסיק.משתמשים ב-
kubectlכדי לערוך את המכונה הווירטואלית:kubectl edit gvm VM_NAMEמחליפים את
VM_NAMEבשם של המכונה הווירטואלית שרוצים לערוך.בכלי לעריכת מוצרים, מעדכנים את הערכים של משאבי המחשוב שרוצים לשנות.
לדוגמה, במניפסט
VirtualMachineהבא אפשר לראות שלמשאב של המכונה הווירטואלית הוקצו2מעבדים וירטואליים:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...כדי לעדכן את מספר ה-vCPU שהוקצו, משנים את הערך בעורך, כמו בדוגמה הבאה:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 4 ...שומרים וסוגרים את מניפסט מכונת ה-VM.
מפעילים את ה-VM שערכתם:
kubectl virt start VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בודקים את
STATUSשל המכונה הווירטואלית:kubectl get gvm VM_NAMEמוודאים שהמכונה הווירטואלית במצב
Running. אם מכונת ה-VM שלכם מבקשת יותר משאבי מחשוב ממה שהמארח יכול לספק, אי אפשר להפעיל את מכונת ה-VM. אם מכונת ה-VM לא במצבRunning, צריך לבדוק את מניפסט המשאביםVirtualMachineואת זמינות משאבי החישוב במארח.בדוגמה הבאה של פלט אפשר לראות את ה-VM במצב
Running:NAME STATUS AGE IP vm1 Running 1m 192.168.2.72כדי לראות מידע מפורט על מכונה וירטואלית, משתמשים ב-
kubectl describe gvm:kubectl describe gvm VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בדוגמה הבאה של פלט מוצג מידע תמציתי על מכונה וירטואלית, עם שינוי במספר יחידות ה-vCPU שהוחל בהצלחה:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Cpu: Vcpus: 4 ...
מידע נוסף זמין במאמר בנושא יצירת מכונות וירטואליות עם הגדרות ספציפיות של ליבות וירטואליות וזיכרון.
עריכת משאבי דיסק
אם דרישות האחסון שלכם משתנות, אתם יכולים להוסיף או להסיר דיסקים וירטואליים למכונה וירטואלית. כדי לערוך את הדיסקים שמצורפים למכונה הווירטואלית:
מפסיקים את מכונת ה-VM שרוצים לערוך:
kubectl virt stop VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שרוצים להפסיק.משתמשים ב-
kubectlכדי לערוך את המכונה הווירטואלית:kubectl edit gvm VM_NAMEמחליפים את
VM_NAMEבשם של המכונה הווירטואלית שרוצים לערוך.בכלי לעריכה, מעדכנים את הקטע
spec.disksכדי לצרף או לנתק דיסקים.לדוגמה, במניפסט
VirtualMachineהבא אפשר לראות שרק דיסק אתחול מצורף למכונה הווירטואלית:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv ...אם רוצים להוסיף דיסק ריק קיים, מעדכנים את הגדרות הדיסק בעורך, כמו בדוגמה הבאה:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv - virtualMachineDiskName: DISK_NAME ...מחליפים את
DISK_NAMEבשם של הדיסק לצירוף.שומרים וסוגרים את מניפסט מכונת ה-VM.
מפעילים את ה-VM שערכתם:
kubectl virt start VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בודקים את
STATUSשל המכונה הווירטואלית:kubectl get gvm VM_NAMEמוודאים שהמכונה הווירטואלית במצב
Running. אם המכונה הווירטואלית מבקשת הקצאה שלStorageClassאו של דיסק שהמארח לא יכול לספק, המכונה הווירטואלית לא יכולה להתחיל לפעול. אם המכונה הווירטואלית לא במצבRunning, צריך לבדוק אתVirtualMachineואת מניפסטים של משאביVirtualMachineDiskואת התמיכה באחסון של המארח.כדי לראות מידע מפורט על מכונה וירטואלית, משתמשים ב-
kubectl describe gvm:kubectl describe gvm VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בדוגמה הבאה של הפלט מוצג מידע תמציתי על מכונת VM, עם שינוי בדיסקים המצורפים שהוחל בהצלחה:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Disks: Name: vm1-boot-dv Name: data-disk-01 ...
מידע נוסף זמין במאמר בנושא יצירה וניהול של דיסקים.
עריכת משאבי הרשת
יכול להיות שתרצו לשנות את הגדרות הרשת של מכונה וירטואלית כשהתשתית משתנה. לדוגמה, יכול להיות שתרצו לחבר את המכונה הווירטואלית לרשת וירטואלית אחרת או להקצות כתובת IP באופן ידני. כדי לערוך את הגדרת הרשת של מכונה וירטואלית, מבצעים את השלבים הבאים:
מפסיקים את מכונת ה-VM שרוצים לערוך:
kubectl virt stop VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שרוצים להפסיק.משתמשים ב-
kubectlכדי לערוך את המכונה הווירטואלית:kubectl edit gvm VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שרוצים לערוך.בעורך, מעדכנים את הגדרות תצורת הרשת שרוצים לשנות.
לדוגמה, בקובץ המניפסט
VirtualMachineהבא אפשר לראות שמכונת ה-VM מתחברת לרשת בשםbackend-vlan100ומשתמשת ב-DHCP כי לא מוגדרת כתובת IP:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: backend-vlan100 default: true ...אם רוצים לשנות את הרשת שאליה המכונה הווירטואלית מתחברת או להקצות כתובת IP ידנית, צריך לעדכן את הגדרות הרשת בעורך, כמו שמוצג בדוגמה הבאה:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true ...מחליפים את
NETWORK_NAMEבשם הרשת שאליה רוצים להתחבר, או מוסיפים את הקטעipAddressesומציינים אתIP_ADDRESSשהמכונה הווירטואלית תשתמש בו.שומרים וסוגרים את מניפסט מכונת ה-VM.
מפעילים את ה-VM שערכתם:
kubectl virt start VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בודקים את
STATUSשל המכונה הווירטואלית:kubectl get gvm VM_NAMEמוודאים שהמכונה הווירטואלית במצב
Running. אם המכונה הווירטואלית מבקשת חיבור לרשת שהמארח לא יכול לספק, המכונה הווירטואלית לא יכולה להתחיל לפעול. אם המכונה הווירטואלית לא במצבRunning, צריך לבדוק את מניפסט המשאבים שלVirtualMachineואת התמיכה ברשת המארח.כדי לראות מידע מפורט על מכונה וירטואלית, משתמשים ב-
kubectl describe gvm:kubectl describe gvm VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בדוגמה הבאה של הפלט מוצג מידע תמציתי על מכונה וירטואלית, עם שינוי בהגדרות של הרשת וכתובת ה-IP שהוחל בהצלחה:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Interfaces: Name: eth0 Network Name: backend-vlan200 ... Status: ... Interfaces: Dns Config: Nameservers: 8.8.8.8 gateway4: 10.200.0.9 Ip Addresses: 10.200.0.22/24 Mac Address: 22:b4:e3:d2:ef:fb Name: eth0 Resource Name: vm1-eth0-f2468 ...
מידע נוסף זמין במאמר בנושא יצירה וניהול של רשתות וירטואליות.
הגדרת מכונת ה-VM להפעלה מחדש אוטומטית
שינויים רבים בהגדרות של מכונות VM, כמו שינויים בהגדרות של compute, מחייבים עצירה והפעלה מחדש של מכונת ה-VM כדי שהשינויים יסתנכרנו עם מופע ה-VM המתאים (VirtualMachineInstance). אפשר להגדיר שמכונות VM שפועלות באשכולות בגרסה 1.13.0 ומעלה יופעלו מחדש באופן אוטומטי בכל פעם שמבצעים שינויים בהגדרות שלהן. כשמגדירים מכונה וירטואלית לשימוש בתכונה הזו, לא צריך לעצור ולהפעיל מחדש את המכונה הווירטואלית כשעורכים את המשאב המותאם אישית שלה. VM Runtime ב-GDC מנטר את המכונה הווירטואלית, ואם הוא מזהה שינוי בהגדרה, הוא מפעיל מחדש את המכונה הווירטואלית באופן אוטומטי כדי לסנכרן את השינויים.
התכונה הזו שימושית במיוחד אם אתם משתמשים ב-סנכרון תצורות כדי לנהל את קובצי התצורה בפורמט YAML. בלי התכונה הזו, צריך לעצור את המכונה הווירטואלית באופן ידני לפני שמבצעים שינויים במשאב המותאם אישית VirtualMachine, ולהפעיל את המכונה הווירטואלית באופן ידני אחרי שמסיימים את השינויים.
כדי להפעיל הפעלה מחדש אוטומטית:
משתמשים ב-
kubectlכדי לערוך את המכונה הווירטואלית:kubectl edit gvm VM_NAMEבכלי העריכה, מוסיפים את השדה
autoRestartOnConfigurationChangeומגדירים אותו לערךtrue.אפשר לבצע שינויים נוספים במכונה הווירטואלית, למשל לעדכן את
vcpusהערך. אם עורכים את ההגדרות שלcompute, סביבת הריצה של המכונה הווירטואלית ב-GDC מפעילה מחדש את המכונה הווירטואלית באופן אוטומטי כששומרים את השינויים.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: ... name: vm-sample-01 namespace: default resourceVersion: "16711824" uid: ed623879-0cfa-52de-ad2c-b63308e6116c spec: autoRestartOnConfigurationChange: true compute: cpu: vcpus: 2 ...שומרים וסוגרים את מניפסט מכונת ה-VM.
אם ביצעתם שינויים אחרים במכונה הווירטואלית שצריך לסנכרן עם מופע המכונה הווירטואלית התואם, VM Runtime ב-GDC יפעיל מחדש את המכונה הווירטואלית. אם ביצעתם רק את השינוי להפעלת הפעלה מחדש אוטומטית, לא צריך להפעיל מחדש את המכונה הווירטואלית.
בודקים את
statusשל המכונה הווירטואלית:kubectl get gvm VM_NAMEבהתאם למהירות קבלת ה-VM, יכול להיות שתראו את הסמל
state: Startingבזמן שה-VM מופעל מחדש. כשהמכונה הווירטואלית מופעלת מחדש, מופיעstate: Running. שינויים בהגדרות של משאב מותאם אישית מסוגVirtualMachineלא מחייבים עצירה והפעלה ידנית של מכונת ה-VM. שינויים עוקבים במשאב המותאם אישית משתקפים באופן עקבי במכונה הווירטואלית.
חשוב לשים לב להתנהגות התכונה במצבים הבאים:
אם מפסיקים מכונה וירטואלית באופן ידני לפני שעורכים את המשאב המותאם אישית
VirtualMachine, שינוי ההגדרה לא יפעיל הפעלה מחדש. הסטטוס של המכונה הווירטואלית לפני שינוי ההגדרה נשמר.אם ביצעתם שינויים בתווית או בתזמון של מכונת ה-VM לפני שהפעלתם את התכונה של הפעלה מחדש אוטומטית, הוספה של
autoRestartOnConfigurationChangeעכשיו ללא שינוי אחר לא תפעיל מחדש את מכונת ה-VM. התכונה הזו אמורה לשמור על עקביות בין מופע ה-VM לבין הגדרת ה-VM. עם זאת, VM Runtime ב-GDC לא יכול לזהות חוסר עקביות קודם.