סביבת זמן הריצה של VM ב-GDC מאפשרת להריץ ולנהל מכונות וירטואליות (VM) של Linux ישירות ב-Bare Metal. במדריך הזה תגדירו את יחסי התלות החיוניים, כולל StorageClass ורשת וירטואלית, ואז תיצרו מכונה וירטואלית שמשתמשת במשאבים האלה. בנוסף, אתם משנים את ההגדרות של המכונה הווירטואלית כדי לצרף דיסק נוסף.
מטרות
- הגדרת יחסי תלות בסיסיים
- יצירת
StorageClassל-VM Runtime on GDC - יצירת רשת וירטואלית לשימוש במכונות הווירטואליות
- יצירת
- יצירת דיסק אתחול של מכונה וירטואלית
- יצירת VM
- עריכת מכונה וירטואלית כדי להוסיף דיסק וירטואלי חדש
לפני שמתחילים
כדי להשלים את המדריך, אתם צריכים גישה למשאבים ולכלים הבאים:
- גישה לאשכול של Google Distributed Cloud בגרסה 1.12.0 (
anthosBareMetalVersion: 1.12.0) ואילך. אפשר להשתמש בכל סוג של אשכול שיכול להריץ עומסי עבודה. במקרה הצורך, אתם יכולים לנסות את Google Distributed Cloud ב-Compute Engine או לעיין בסקירה הכללית על יצירת אשכולות. - כלי הלקוח של
virtctlמותקן כפלאגין שלkubectl. אם צריך, מתקינים את כלי הלקוח virtctl.
יצירת StorageClass
משתמשים ב-StorageClass כדי להגדיר את סוג האחסון שזמין למכונות הווירטואליות. יכול להיות שסוגי אחסון שונים ימופו לסוגים שונים של חומרת אחסון, מערכת קבצים או ביצועים.
במדריך הזה לא נספק הוראות ספציפיות לכל שותף StorageClass ושותף אחסון.
שותפי האחסון של Google Distributed Cloud Ready מספקים מנהלי התקנים מתאימים של Container Storage Interface (CSI) שמתקינים ומגדירים את המשאבים הנדרשים בהתאמה אישית לאחסון. כדי להתקין את מנהל ההתקן של CSI באשכול, עיינו ברשימת שותפי האחסון הנתמכים ופעלו לפי ההוראות שלהם.
אחרי שמתקינים את מנהל ההתקן של CSI לפלטפורמת האחסון, באשכול זמינות אחת או יותר ממחלקות האחסון. במדריך הזה תשתמשו באחד מסוגי האחסון האלה כדי ליצור דיסק קשיח וירטואלי.
בדוגמה הבסיסית הבאה של NFS StorageClass נעשה שימוש ב-NFS CSI Driver.
אתם מגדירים את הכתובת והנתיב של שרת ה-NFS שבהם תשתמשו ב-StorageClass. כל הצמתים באשכול יכולים להתחבר לאחסון ה-NFS הזה ולהשתמש בו:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: example-nfs
provisioner: nfs.csi.k8s.io
parameters:
server: nfs-server.example.com
path: /vm-share
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- nconnect=8
- nfsvers=4.1
במדריך הזה, השתמשו בשם של StorageClass באשכול שלכם.
בזמן הריצה של VM ב-GDC נוצר באופן אוטומטי פרופיל אחסון אחד לכל StorageClass באשכול. השם של פרופיל האחסון זהה לשם של ה-StorageClass המשויך. פרופילי אחסון מספקים אפשרויות הגדרה נוספות שמשויכות לכל StorageClass. מידע נוסף על פרופילי אחסון, כולל הוראות להגדרה, זמין במאמר הגדרת פרופילי אחסון.
יצירת רשת וירטואלית
מכונות וירטואליות מתחברות לרשת וירטואלית באמצעות ממשק רשת וירטואלי. הרשת הווירטואלית מאפשרת להם לתקשר עם מכונות וירטואליות אחרות באשכול, או עם משאבים מחוץ לאשכול.
במדריך הזה תיצרו רשת וירטואלית בסיסית בשכבה 2 (L2) שיכולה להשתמש בשרת DHCP חיצוני. כשמפעילים את השימוש בשרת DHCP חיצוני, אפשר לדלג על הגדרת ה-DNS והשער אם הם מסופקים על ידי DHCP.
כדי ליצור רשת שמשתמשת בשרת DHCP חיצוני:
יוצרים מניפסט
Network, כמוdhcp-network.yaml, בכלי העריכה שבוחרים:nano dhcp-network.yamlמעתיקים ומדביקים את המניפסט הבא ב-YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: trueמחליפים את הערכים הבאים:
-
NETWORK_NAME: השם של הרשת. -
INTERFACE_NAME: שם הממשק בצומת של Google Distributed Cloud שאליו רוצים לצרף את הרשת. לכל הצמתים צריך להיות אותו שם ממשק.
במניפסט
Networkהזה, הערכים הבאים מוגדרים:- לעומסי עבודה יכול להיות רק חיבור
L2אחד לרשת הזו. זו הרשת היחידה מסוגtypeשאפשר ליצור בסביבת זמן הריצה של VM ב-GDC. - ברשת מופעל DHCP חיצוני. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, למסלולים, לשער ולהגדרת ה-DNS של עומסי העבודה שמחוברים לרשת הזו.
-
שומרים וסוגרים את המניפסט של
Networkבכלי העריכה.יוצרים את הרשת באמצעות
kubectl:kubectl apply -f use-dhcp-network.yaml
יצירת דיסק אתחול של VM
במכונה וירטואלית אפשר להשתמש בקובץ אימג' שנוצר מראש, או לבצע אתחול מקובץ אימג' מסוג ISO כדי להתקין את מערכת ההפעלה באופן ידני. אפשר לאחסן את קובצי האימג' של הדיסקים האלה ולגשת אליהם באמצעות HTTP, או לאחסן אותם ב-Cloud Storage ולגשת אליהם באמצעות Secret.
במדריך הזה תיצרו דיסק אתחול מקובץ האימג' הציבורי של Ubuntu Server 20.04 בענן באמצעות HTTP.
כדי ליצור דיסק מתמונה, מבצעים את השלבים הבאים:
יוצרים מניפסט
VirtualMachineDisk, כמוmy-disk.yaml, בכלי העריכה שבוחרים:nano my-disk.yamlמעתיקים ומדביקים את הגדרת ה-YAML הבאה:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 20Gi storageClassName: STORAGE_CLASS_NAME source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.imgמחליפים את הערכים הבאים:
-
DISK_NAME: השם שרוצים לתת לדיסק. בדוגמה הזו נוצר דיסק בנפח20Gi(20GiB) בשםDISK_NAME, באמצעות קובץ אימג' ציבורי של Ubuntu Server 20.04. -
STORAGE_CLASS_NAME: ה-StorageClassשרוצים להשתמש בו ב-VirtualMachineDisk.- אפשר להשתמש ב-
kubectl get storageclassכדי להציג את מה שזמין באשכול.
- אפשר להשתמש ב-
-
שומרים וסוגרים את המניפסט של
VirtualMachineDiskבכלי העריכה.יוצרים את הדיסק באמצעות
kubectl:kubectl apply -f my-disk.yaml
יצירת VM
אחרי שיצרתם רשת וירטואלית ודיסק אתחול בקטעים הקודמים, עכשיו אתם יכולים ליצור מכונה וירטואלית. המכונה הווירטואלית מתחברת לרשת הווירטואלית ומופעלת מהדיסק הווירטואלי. בהוראות הבאות מוסבר איך ליצור מכונה וירטואלית על ידי החלה ישירה של קובץ מניפסט YAML של VirtualMachine באמצעות ה-CLI של kubectl.
יוצרים מניפסט שמגדיר
VirtualMachine, כמוmy-vm.yaml, בכלי העריכה שבוחרים:nano my-vm.yamlמעתיקים ומדביקים את הגדרת ה-YAML הבאה:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: osType: linux compute: cpu: vcpus: VCPU_NUMBER memory: capacity: MEMORY_SIZE interfaces: - name: eth0 networkName: NETWORK_NAME default: true disks: - boot: true virtualMachineDiskName: DISK_NAMEמחליפים את הערכים הבאים:
-
VM_NAME: השם של המכונה הווירטואלית. -
VCPU_NUMBER: מספר המעבדים הווירטואליים (vCPU) שאפשר להקצות למכונה הווירטואלית. אם לא מגדירים את ההגדרה הזו, מוקצים 2 מעבדי vCPU כברירת מחדל.- אפשר להקצות בין 1 ל-96 מעבדי vCPU למכונה וירטואלית.
-
MEMORY_SIZE: כמות הזיכרון האופציונלית להקצאה למכונה הווירטואלית. אם לא מגדירים את זה, מוקצה זיכרון בנפח של 4GiB כברירת מחדל.- אפשר להקצות למכונה וירטואלית בין 1M ל-1T זיכרון. למידע נוסף, קראו את המאמר יחידות משאבי זיכרון.
-
NETWORK_NAME: השם של הרשת שיצרתם בקטע הקודם. -
DISK_NAME: השם של דיסק האתחול שיצרתם בקטע הקודם. הדיסק הזה מוגדר ל-boot: true.
-
שומרים וסוגרים את המניפסט בכלי העריכה.
יוצרים את המכונה הווירטואלית ואת הדיסק באמצעות
kubectl:kubectl apply -f my-vm.yamlיצירת המכונה הווירטואלית יכולה להימשך כמה דקות. בודקים את הסטטוס של ה-VM באמצעות הפקודה kubectl:
kubectl get gvm VM_NAMEבפלט לדוגמה הבא, ה-VM במצב
Running:NAME STATUS AGE IP MY_VM Running 64s 192.168.2.124
התחברות למכונה הווירטואלית
כשהמכונה הווירטואלית פועלת, מתחברים למסוף שלה. החיבור למסוף מאפשר לבצע משימות בסיסיות, כמו להגדיר את ה-VM או להתקין אפליקציה.
כדי לגשת למכונה וירטואלית מהמסוף, משתמשים ב-
kubectl:kubectl virt console VM_NAMEכשמוצגת בקשה, מזינים את פרטי הכניסה של המשתמש שציינתם כדי ליצור את המכונה הווירטואלית.
אחרי שמתחברים למסוף של ה-VM, יוצאים מהסשן של ה-VM ומהמסוף:
Ctrl + ]
עריכת ה-VM
במהלך מחזור החיים של ה-VM, יכול להיות שתרצו לערוך אותו. לדוגמה, יכול להיות שתרצו להוסיף נפח אחסון כדי להתקין אפליקציה בדיסק ייעודי, או להשתמש בנפח אחסון נוסף לאפליקציה.
במדריך הזה, יוצרים דיסק ריק ומחברים אותו למכונה הווירטואלית. בתרחיש הזה, אתם יכולים ליצור דיסק נתונים לאחסון נתוני האפליקציה.
יוצרים מניפסט
VirtualMachineDisk, כמוmy-data-disk.yaml, בכלי העריכה שבוחרים:nano my-data-disk.yamlמעתיקים ומדביקים את הגדרת ה-YAML הבאה:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DATA_DISK_NAME spec: size: 10Gi storageClassName: STORAGE_CLASS_NAMEמחליפים את הערכים הבאים:
-
DATA_DISK_NAME: השם שרוצים לתת לדיסק הנתונים. בדוגמה הזו נוצר דיסק בנפח10Gi(10 gibibyte). -
STORAGE_CLASS_NAME: ה-StorageClassשרוצים להשתמש בו ב-VirtualMachineDisk.- אפשר להשתמש ב-
kubectl get storageclassכדי להציג את מה שזמין באשכול.
- אפשר להשתמש ב-
-
שומרים וסוגרים את המניפסט של הדיסק בכלי העריכה.
יוצרים את הדיסק באמצעות
kubectl:kubectl apply -f my-data-disk.yamlמשתמשים ב-
kubectlכדי לעצור את ה-VM לפני שמחברים את הדיסק הווירטואלי החדש:kubectl virt stop VM_NAMEעריכת המשאב של המכונה הווירטואלית:
kubectl edit gvm VM_NAMEמעדכנים את המניפסט של
VirtualMachineב-YAML כדי לצרף את הדיסק בסוף הקטעspec.disksשל ה-VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: ... disks: - boot: true virtualMachineDiskName: DISK_NAME - virtualMachineDiskName: DATA_DISK_NAMEמחליפים את
DATA_DISK_NAMEבשם הדיסק שיצרתם בשלב הקודם.שומרים וסוגרים את המניפסט המעודכן של המכונה הווירטואלית בכלי העריכה.
משתמשים ב-
kubectlכדי להפעיל את המכונה הווירטואלית:kubectl virt start VM_NAME
הסרת המשאבים
כדי למחוק את המשאבים שנוצרו במדריך הזה:
מחיקת המכונה הווירטואלית:
kubectl delete -f my-vm.yamlמחיקת המשאבים ב-
VirtualMachineDisk:kubectl delete -f my-data-disk.yaml kubectl delete -f my-disk.yaml
אם אתם לא רוצים לשמור את יחסי התלות הבסיסיים באשכול, בצעו את הפעולות הבאות:
מחיקת הרשת הווירטואלית:
kubectl delete -f use-dhcp-network.yamlכדי להסיר את מנהל ההתקן של CSI מהאשכול, פועלים לפי ההוראות של שותף האחסון.