המסמך הזה מיועד לבעלי אפליקציות שמשתמשים ב-VM Runtime ב-GDC כדי להריץ מכונות וירטואליות (VM) באשכולות שנוצרו באמצעות Google Distributed Cloud (תוכנה בלבד) על מתכת חשופה. במסמך הזה מוסבר איך לערוך מכונות וירטואליות שפועלות באשכולות Bare Metal. לדוגמה, אפשר לערוך את הקצאת המשאבים, כמו מעבד וזיכרון, או לשנות את הרשת שאליה מתחברת מכונה וירטואלית.
אפשר לשנות כל שדה בקטע spec של משאב VirtualMachine.
אפשר גם לערוך את התוויות של מכונה וירטואלית. אי אפשר לערוך שדות אחרים, כמו שם המכונה הווירטואלית (metadata.name). כברירת מחדל, המכונה הווירטואלית צריכה להיות במצב Stopped
לפני שאתם עורכים את המשאב. עם זאת, החל מגרסה 1.13.0 של Google Distributed Cloud, אפשר להגדיר את משאב VirtualMachine כך שיופעל מחדש באופן אוטומטי בכל פעם שמשנים את ההגדרה.
אם העריכות שביצעתם במשאב VirtualMachine מכילות שגיאות כשאתם שומרים אותן, השינויים נדחים ומוצגת לכם הודעה. צריך לתקן את השגיאות ולנסות לשמור שוב את המשאב VirtualMachine. אם מכונת ה-VM לא מופעלת אחרי שביצעתם שינויים, אתם יכולים להשתמש בפקודה kubectl describe gvm VM_NAME כדי לראות מידע על פתרון בעיות ולתקן את השגיאות.
לפני שמתחילים
כדי להשלים את המסמך הזה, תצטרכו גישה למקורות המידע הבאים:
- מכונת VM שפועלת באחד מהאשכולות שלכם. אם צריך, יוצרים מכונה וירטואלית באשכול של שרת פיזי.
- כלי הלקוח
virtctlמותקן כפלאגין שלkubectl. במקרה הצורך, מתקינים את כלי הלקוח virtctl.
עריכה של משאבי מחשוב
אם יש שינוי בדרישות של עומס העבודה שלכם ב-Compute, אתם יכולים לעדכן את מספר המעבדים הווירטואליים ואת כמות הזיכרון הווירטואלי שהקציתם למכונות הווירטואליות. כדי לערוך את עומסי העבודה של המחשוב, מבצעים את השלבים הבאים:
מפסיקים את מכונת ה-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 שערכתם:
kubectl virt start VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בודקים את
STATUSשל מכונת ה-VM:kubectl get gvm VM_NAMEמוודאים שהמכונה הווירטואלית נמצאת במצב
Running. אם מכונת ה-VM מבקשת יותר משאבי מחשוב ממה שהמארח יכול לספק, אי אפשר להפעיל את מכונת ה-VM. אם המכונה הווירטואלית לא במצבRunning, בודקים את מניפסט המשאביםVirtualMachineואת זמינות משאבי המחשוב במארח.בדוגמה הבאה של הפלט אפשר לראות שהמכונה הווירטואלית במצב
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 ...
מידע נוסף זמין במאמר יצירת מכונות וירטואליות עם הגדרות ספציפיות של vCPU וזיכרון.
עריכת משאבי דיסק
אם הדרישות שלכם לגבי נפח האחסון משתנות, אתם יכולים להוסיף או להסיר דיסקים וירטואליים ממכונה וירטואלית. כדי לערוך את הדיסקים שמצורפים למכונה הווירטואלית, פועלים לפי השלבים הבאים:
מפסיקים את מכונת ה-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 שערכתם:
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בשם המכונה הווירטואלית שערכתם.בדוגמה הבאה של הפלט מוצג מידע תמציתי על מכונה וירטואלית, עם שינוי בדיסקים המצורפים שהוחל בהצלחה:
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הבא אפשר לראות שהמכונה הווירטואלית מתחברת לרשת בשם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 שערכתם:
kubectl virt start VM_NAMEמחליפים את
VM_NAMEבשם המכונה הווירטואלית שערכתם.בודקים את
STATUSשל מכונת ה-VM: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 להפעלה מחדש אוטומטית
שינויים רבים בהגדרות של מכונות וירטואליות, כמו שינויים בהגדרות של compute, מחייבים עצירה והפעלה מחדש של המכונה הווירטואלית כדי שהשינויים יסתנכרנו עם המופע המתאים של המכונה הווירטואלית (VirtualMachineInstance). אפשר להגדיר מכונות וירטואליות שפועלות באשכולות בגרסה 1.13.0 ומעלה כך שהן יופעלו מחדש באופן אוטומטי בכל פעם שמבצעים שינויים בהגדרות שלהן. כשמגדירים מכונה וירטואלית לשימוש בתכונה הזו, לא צריך להפסיק ולהפעיל מחדש את המכונה הווירטואלית כשעורכים את המשאב המותאם אישית שלה. VM Runtime ב-GDC מנטר את המכונה הווירטואלית, ואם הוא מזהה שינוי בהגדרה, הוא מפעיל מחדש את המכונה הווירטואלית באופן אוטומטי כדי לסנכרן את השינויים.
התכונה הזו שימושית במיוחד אם אתם משתמשים ב-סנכרון תצורות כדי לנהל את קובצי התצורה של YAML. בלי התכונה הזו, צריך להפסיק את מכונת ה-VM באופן ידני לפני שמבצעים שינויים במשאב המותאם אישית VirtualMachine, ולהפעיל את מכונת ה-VM באופן ידני אחרי שמסיימים את השינויים.
כדי להפעיל הפעלות מחדש אוטומטיות:
משתמשים ב-
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 Runtime ב-GDC יפעיל מחדש את המכונה הווירטואלית. אם ביצעתם רק את השינוי להפעלת הפעלה מחדש אוטומטית, לא צריך להפעיל מחדש את המכונה הווירטואלית.
בודקים את
statusשל מכונת ה-VM:kubectl get gvm VM_NAMEבהתאם למהירות קבלת מכונת ה-VM, יכול להיות שתראו את הסמל
state: Startingבזמן שמכונת ה-VM מופעלת מחדש. אחרי שהמכונה הווירטואלית מופעלת מחדש, מופיעstate: Running. אם מבצעים שינויים בהגדרות שלVirtualMachineהמשאב המותאם אישית, לא צריך להפסיק ולהפעיל את מכונת ה-VM באופן ידני. שינויים עתידיים במשאב המותאם אישית יתעדכנו באופן עקבי במכונה הווירטואלית.
חשוב לשים לב להתנהגות התכונה במצבים הבאים:
אם מפסיקים מכונה וירטואלית באופן ידני לפני שעורכים את המשאב המותאם אישית
VirtualMachine, שינוי ההגדרה לא יפעיל הפעלה מחדש. הסטטוס של המכונה הווירטואלית לפני שינוי ההגדרה נשמר.אם ביצעתם שינויים בתוויות או בתזמון של מכונת ה-VM לפני שהפעלתם את התכונה של הפעלה מחדש אוטומטית, הוספה של
autoRestartOnConfigurationChangeעכשיו ללא שינוי אחר לא תפעיל מחדש את מכונת ה-VM. התכונה הזו אמורה לשמור על עקביות בין מופע ה-VM לבין הגדרת ה-VM. עם זאת, VM Runtime ב-GDC לא יכול לזהות חוסר עקביות קודם.