בזמן הריצה של VM ב-GDC אתם יכולים לערוך את ההגדרות של המכונות הווירטואליות (VM), כמו משאבי המחשוב, הדיסקים המצורפים והגדרות הרשת, בהתאם לשינויים בדרישות של עומסי העבודה.
אפשר לעדכן כל שדה בקטע spec של משאב VirtualMachine ולשנות תוויות של מכונות וירטואליות, אבל אי אפשר לשנות שדות אחרים, כמו השם של המכונה הווירטואלית (metadata.name). כברירת מחדל, כדי לערוך מכונה וירטואלית היא צריכה להיות במצב Stopped. אתם יכולים להגדיר שהמכונה הווירטואלית תופעל מחדש באופן אוטומטי כשההגדרות שלה משתנות.
לפני שמתחילים
כדי להשלים את המשימות שבמסמך הזה, אתם צריכים גישה למשאבים הבאים:
- מכונה וירטואלית שפועלת באחד מהאשכולות שלכם. אם צריך, יוצרים מכונה וירטואלית באשכול של שרת פיזי.
- כלי הלקוח של
virtctlמותקן כפלאגין שלkubectl. אם צריך, מתקינים את כלי הלקוח virtctl.
עריכת משאבי המחשוב
אם הדרישות של עומס העבודה שלכם משתנות, אתם יכולים לעדכן את מספר המעבדים הווירטואליים ואת כמות הזיכרון הווירטואלי שאתם מקצים למכונות הווירטואליות. כדי לערוך את עומסי העבודה של המחשוב:
עוצרים את ה-VM שרוצים לערוך:
kubectl virt stop VM_NAMEמחליפים את
VM_NAMEבשם של המכונה הווירטואלית שרוצים לעצור.משתמשים ב-
kubectlכדי לערוך את המכונה הווירטואלית:kubectl edit gvm VM_NAMEמחליפים את
VM_NAMEבשם של המכונה הווירטואלית שרוצים לערוך.בעורך, מעדכנים את הערכים של משאבי המחשוב שרוצים לשנות.
לדוגמה, במניפסט
VirtualMachineהבא אפשר לראות שלמשאב ה-VM מוקצים2מעבדי vCPU:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...כדי לעדכן את מספר המעבדים הווירטואליים שהוקצו, משנים את הערך בכלי העריכה, כמו בדוגמה הבאה:
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של ה-VM:kubectl get gvm VM_NAMEמוודאים שהמכונה הווירטואלית נמצאת במצב
Running. אם ה-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בשם של המכונה הווירטואלית שערכתם.הפלט לדוגמה הבא מציג את המידע המרוכז של VM, עם שינוי במספר יחידות ה-vCPU שהוחל בהצלחה:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Cpu: Vcpus: 4 ...
מידע נוסף זמין במאמר יצירת מכונות וירטואליות עם הגדרות ספציפיות של vCPU וזיכרון.
עריכת משאבי דיסק
אם דרישות האחסון שלכם משתנות, אתם יכולים להוסיף דיסקים וירטואליים למכונה וירטואלית או להסיר אותם ממנה. כדי לערוך את הדיסקים שמחוברים למכונה הווירטואלית:
עוצרים את ה-VM שרוצים לערוך:
kubectl virt stop VM_NAMEמחליפים את
VM_NAMEבשם של המכונה הווירטואלית שרוצים לעצור.משתמשים ב-
kubectlכדי לערוך את המכונה הווירטואלית:kubectl edit gvm VM_NAMEמחליפים את
VM_NAMEבשם של המכונה הווירטואלית שרוצים לערוך.בעורך, מעדכנים את הקטע
spec.disksכדי לצרף או לנתק דיסקים.לדוגמה, במניפסט
VirtualMachineהבא מוצג שרק דיסק אתחול מצורף ל-VM: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של ה-VM: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 ...
למידע נוסף, קראו את המאמר יצירה וניהול של דיסקים.
עריכת משאבי הרשת
אם התשתית משתנה, יכול להיות שתרצו לשנות את הגדרות הרשת של ה-VM. לדוגמה, יכול להיות שתרצו לחבר את ה-VM לרשת וירטואלית אחרת או להקצות כתובת 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 ...אם רוצים לשנות את הרשת שאליה ה-VM מתחבר או להקצות כתובת 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של ה-VM:kubectl get gvm VM_NAMEמוודאים שהמכונה הווירטואלית נמצאת במצב
Running. אם ה-VM מבקשת חיבור לרשת שהמארח לא יכול לספק, ה-VM לא יכולה להתחיל. אם ה-VM לא במצב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, כמו שינויים בהגדרות של compute, עם המכונה המתאימה של ה-VM (VirtualMachineInstance), צריך לעצור את ה-VM ולהפעיל אותו מחדש. אפשר להגדיר מכונות VM שפועלות באשכולות בגרסה 1.13.0 ואילך כך שיופעלו מחדש באופן אוטומטי בכל פעם שמבצעים שינויים בהגדרות שלהן. כשמגדירים מכונה וירטואלית לשימוש בתכונה הזו, לא צריך לעצור ולהפעיל מחדש את המכונה הווירטואלית כשעורכים את המשאב בהתאמה אישית. סביבת זמן הריצה של VM ב-GDC עוקבת אחרי ה-VM, ואם היא מזהה שינוי בהגדרות, היא מפעילה מחדש את ה-VM באופן אוטומטי כדי לסנכרן את השינויים.
התכונה הזו שימושית במיוחד אם אתם משתמשים בסנכרון הגדרות כדי לנהל את קובצי התצורה של YAML. בלי התכונה הזו, צריך לעצור את ה-VM באופן ידני לפני שמבצעים שינויים במשאב המותאם אישית VirtualMachine, ולהפעיל את ה-VM באופן ידני אחרי שמסיימים את השינויים.
כדי להפעיל הפעלות מחדש אוטומטיות:
משתמשים ב-
kubectlכדי לערוך את המכונה הווירטואלית:kubectl edit gvm VM_NAMEבעורך, מוסיפים את השדה
autoRestartOnConfigurationChangeומגדירים אותו כ-true.אפשר לבצע שינויים נוספים במכונה הווירטואלית, כמו עדכון הערך של
vcpus. אם עורכים את ההגדרות שלcompute, סביבת זמן הריצה של VM ב-GDC מפעילה מחדש את ה-VM באופן אוטומטי כששומרים את השינויים.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 שצריך לסנכרן עם מכונת ה-VM המתאימה, VM Runtime on GDC יפעיל מחדש את ה-VM. אם רק הפעלתם את ההפעלה מחדש האוטומטית, אין צורך להפעיל מחדש את המכונה הווירטואלית.
בודקים את ה-
statusשל ה-VM:kubectl get gvm VM_NAMEבהתאם למהירות שבה אתם מקבלים את ה-VM, יכול להיות שתראו את ההודעה
state: Startingבזמן שה-VM מופעל מחדש. כשהמכונה הווירטואלית תופעל מחדש, יופיע הסמלstate: Running. אם תבצעו שינויים בהגדרות של המשאב המותאם אישיתVirtualMachine, לא תצטרכו לעצור ולהפעיל את ה-VM באופן ידני. שינויים עוקבים במשאב המותאם אישית משתקפים במכונה הווירטואלית באופן עקבי.
שימו לב להתנהגות של התכונה במצבים הבאים:
אם עוצרים את ה-VM באופן ידני לפני שעורכים את המשאב המותאם אישית של
VirtualMachine, השינוי בהגדרה לא מפעיל הפעלה מחדש. המצב "עצירה" של המכונה הווירטואלית לפני שינוי ההגדרה נשמר.אם שיניתם את התוויות או את התזמון של ה-VM לפני שהפעלתם את תכונת ההפעלה מחדש האוטומטית, הוספת
autoRestartOnConfigurationChangeעכשיו בלי שינוי אחר לא תגרום להפעלה מחדש. באופן אידיאלי, התכונה הזו שומרת על עקביות בין המכונה הווירטואלית לבין ההגדרות שלה. עם זאת, VM Runtime on GDC לא יכול לזהות חוסר עקביות קודם.
פתרון בעיות בעריכת מכונות וירטואליות
אם העריכות של המשאב VirtualMachine מכילות שגיאות כששומרים אותן, השינויים נדחים ומוצגת הודעה. מתקנים את השגיאות ומנסים לשמור שוב את המשאב VirtualMachine. אם ה-VM לא מופעל אחרי השינויים, אתם יכולים להשתמש בפקודה kubectl describe gvm VM_NAME כדי לראות מידע על פתרון בעיות ולתקן את השגיאות.