סביבת זמן הריצה של VM ב-GDC מאפשרת להגדיר רשתות וירטואליות כדי לחבר ולנתב תנועה לעומסי העבודה של המכונות הווירטואליות (VM).
לפני שמתחילים
כדי להשלים את המשימות שבמסמך הזה, אתם צריכים גישה למשאבים הבאים:
- גישה לאשכול של Google Distributed Cloud בגרסה 1.12.0 (
anthosBareMetalVersion: 1.12.0) ואילך. אפשר להשתמש בכל סוג של אשכול שיכול להריץ עומסי עבודה. במקרה הצורך, תוכלו לנסות את Google Distributed Cloud ב-Compute Engine או לעיין בסקירה הכללית על יצירת אשכולות. - כלי הלקוח של
virtctlמותקן כפלאגין שלkubectl. אם צריך, מתקינים את כלי הלקוח virtctl.
סקירה כללית על רשתות וירטואליות
הרשתות נוצרות באמצעות משאבים בהתאמה אישית. אפשר ליצור רשת בכל שלב אחרי שיוצרים את האשכול. אחרי שיוצרים רשת, אי אפשר לשנות את הגדרות הרשת של ממשק המארח ואת הקצאת מזהה ה-VLAN, אם הוגדרו.
מחיקת רשתות כפופה לתנאים מסוימים. לדוגמה, בקר הרשת דוחה את המחיקה של רשת אם משאבים כמו מכונות וירטואליות או ממשקי רשת משתמשים בה.
הגדרת הרשת יכולה לכלול את השער, המסלולים ופרטי ה-DNS. אתם יכולים גם להפעיל את השימוש בשרת DHCP חיצוני. הגדרות הרשת האלה מוקצות באופן סטטי או דינמי, בהתאם לאופן שבו מוגדרות אפשרויות מסוימות של הגדרות הרשת.
רשת ברירת המחדל של pod
לכל אשכול יש pod-network שנוצר בשבילכם כברירת מחדל. אי אפשר לשנות את הרשת הזו. הנתיבים ל-CIDR של הפוד ול-CIDR של השירות, והגדרת ה-DNS, מאוכלסים באופן אוטומטי. הגדרת ה-DNS משתמשת באותם ערכים כמו האשכול.
אפשר להשתמש ב-pod-network בעומסי עבודה שצריכים ממשק כדי לגשת לרשת ה-Pod של האשכול, ולא צריכים אפשרויות הגדרה ספציפיות.
המסלולים של pod-network תמיד מוגדרים כדי להבטיח את הגישה של האשכול והשירות לעומסי העבודה, למרות ששער ברירת המחדל לא נמצא בממשק pod-network.
ה-pod-network הזה שמוגדר כברירת מחדל מאפשר לכם לבדוק את סביבת זמן הריצה של המכונות הווירטואליות ב-GDC בלי שלבים נוספים ליצירת רשתות וירטואליות משלכם. בהרבה מהמסמכים שלנו נעשה שימוש בערך ברירת המחדל הזה של pod-network כדי לצמצם את המורכבות של הדוגמאות. הצרכים של עומסי העבודה של ה-VM קובעים אם ברירת המחדל הזו של pod-network מספיקה, או אם צריך ליצור רשתות וירטואליות משלכם ולהשתמש בהן.
במניפסט הבא של YAML מוצגת הגדרה לדוגמה של pod-network.
הערכים של הנתיבים, ה-DNS ושם הממשק אוכלסו על ידי האשכול:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: pod-network
spec:
routes:
- to: 192.168.0.0/16
- to: 10.96.0.0/12
dnsConfig:
nameservers:
- 10.96.0.10
יצירה ושימוש ברשתות וירטואליות
כדי לתמוך בעומסי עבודה בסביבת הייצור, צריך ליצור רשתות שתומכות בתכונות שאתם צריכים, כמו שימוש בשרת DHCP חיצוני או שימוש במזהה VLAN. הרשתות האלה מספקות קישוריות שכבה 2 (L2) למכונות הווירטואליות.
שימוש בשרת DHCP חיצוני
בסביבת זמן הריצה של VM ב-GDC אין שרתי DHCP. צריך לציין באופן ידני את כתובות ה-IP של המכונות הווירטואליות או להגדיר שימוש בשרתי DHCP חיצוניים. כשמפעילים את השימוש בשרת DHCP חיצוני, אפשר לדלג על הגדרת ה-DNS והשער אם הם מסופקים על ידי DHCP.
כדי ליצור רשת שמשתמשת בשרת DHCP חיצוני:
יוצרים מניפסט
Network, כמוuse-dhcp-network.yaml, בכלי העריכה שבוחרים:nano use-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הזה, הערכים הבאים מוגדרים:-
typeמוגדר לערךL2. בהגדרה הזו, לעומסי העבודה יכול להיות רק חיבור של שכבה 2 לרשת הזו. זו הרשת היחידה שלtypeשאפשר ליצור בסביבת זמן הריצה של VM ב-GDC. -
externalDHCP4מוגדר לערךtrue. ההגדרה הזו מפעילה DHCP חיצוני לרשת. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, לנתיבים, לשער ולתצורת ה-DNS של עומסי העבודה שמחוברים לרשת הזו.
-
שומרים וסוגרים את המניפסט של
Networkבכלי העריכה.יוצרים את הרשת באמצעות
kubectl:kubectl apply -f use-dhcp-network.yaml
הגדרה ידנית של הגדרות הרשת
בסביבת זמן הריצה של VM ב-GDC אין שרתי DHCP. צריך לציין באופן ידני את כתובות ה-IP של המכונות הווירטואליות או להגדיר שימוש בשרתי DHCP חיצוניים. אם אתם מציינים כתובות IP באופן ידני, אתם צריכים להגדיר את הגדרות הרשת של DNS, נתיבים ושער ברירת מחדל.
כדי ליצור רשת עם הגדרות רשת שצוינו באופן ידני למכונות וירטואליות, מבצעים את הפעולות הבאות:
יוצרים מניפסט של
Network, כמוmanual-network.yaml, בעורך לבחירתכם:nano manual-network.yamlמעתיקים ומדביקים את המניפסט הבא ב-YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME routes: - to: "ROUTE_ADDRESS" gateway4: GATEWAY_ADDRESS dnsConfig: nameservers: - NAMESERVER_ADDRESSמחליפים את הערכים הבאים:
-
NETWORK_NAME: השם של הרשת. -
INTERFACE_NAME: שם הממשק בצומת של Google Distributed Cloud שאליו רוצים לצרף את הרשת. מציינים את שם הממשק הפיזי בצומת שבו רוצים להשתמש. לכל הצמתים באשכול צריך להיות אותו שם ממשק. -
ROUTE_ADDRESS: נתיבים אופציונליים בסימון CIDR להגדרה בכל VM שמתחבר לרשת הזו. -
GATEWAY_ADDRESS: כתובת ה-IP של שער הכניסה שבה המכונות הווירטואליות ישתמשו. -
NAMESERVER_ADDRESS: כתובת IP אחת או יותר של שרת שמות DNS, שבהן המכונות הווירטואליות יכולות להשתמש.
-
שומרים וסוגרים את המניפסט של
Networkבכלי העריכה.יוצרים את הרשת באמצעות
kubectl:kubectl apply -f manual-network.yaml
שימוש במזהה VLAN
כשיוצרים רשתות וירטואליות, אפשר להגדיר רשתות VLAN מתויגות. הקצאות ה-VLAN האלה עוזרות לבודד את התנועה ברשת בהתאם לדרישות של עומס העבודה ולצורכי הבידוד. ברשת AnthosManaged, לאשכול יש הרשאה ליצור ולמחוק את ממשק ה-VLAN בכל צומת.
כדי ליצור רשת שמגדירה הקצאת VLAN:
יוצרים מניפסט
Network, כמוvlan-network.yaml, בכלי העריכה שבוחרים:nano vlan-network.yamlמעתיקים ומדביקים את המניפסט הבא ב-YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: AnthosManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: trueמחליפים את הערכים הבאים:
-
NETWORK_NAME: השם של הרשת. -
INTERFACE_NAME: שם הממשק בצומת של Google Distributed Cloud שאליו רוצים לצרף את הרשת. מציינים את שם הממשק הפיזי בצומת שבו רוצים להשתמש. לכל הצמתים באשכול צריך להיות אותו שם ממשק. -
VLAN_ID: מזהה ה-VLAN שרוצים לתייג את התנועה שלו.
במניפסט
Networkהזה, הערכים הבאים מוגדרים:- לעומסי עבודה יכול להיות רק חיבור
L2אחד לרשת הזו. - הרשת היא
AnthosManaged. זוהי הגדרת ברירת המחדל של מחזור החיים אם לא צוין אחרת.- במצב הזה, לאשכול יש הרשאה ליצור ולמחוק את ממשק ה-VLAN בכל צומת, כמו
INTERFACE_NAME.VLAN_ID. - אם אתם רוצים ליצור ממשקי VLAN בצמתים, או שכבר יצרתם אותם, הגדירו את הערך של
networkLifecycleל-UserManaged, כמו שמוצג בקטע הבא.
- במצב הזה, לאשכול יש הרשאה ליצור ולמחוק את ממשק ה-VLAN בכל צומת, כמו
- ברשת מופעל DHCP חיצוני. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, למסלולים, לשער ולתצורת ה-DNS של עומסי העבודה שמחוברים לרשת הזו.
-
שומרים וסוגרים את המניפסט של
Networkבכלי העריכה.יוצרים את הרשת באמצעות
kubectl:kubectl apply -f vlan-network.yaml
יצירת רשת בניהול המשתמשים
בדוגמה הבאה של רשת וירטואלית, הרשת מנוהלת על ידי המשתמש, בניגוד לניהול על ידי Anthos בדוגמה הקודמת. ברשתות בניהול המשתמש, אתם אחראים ליצור או למחוק את ממשק ה-VLAN במארח.
כדי ליצור רשת במצב ניהול על ידי המשתמש ולהגדיר ידנית את ממשק ה-VLAN, מבצעים את השלבים הבאים:
יוצרים מניפסט של
Network, כמוuser-managed-network.yaml, בכלי העריכה שבוחרים:nano user-managed-network.yamlמעתיקים ומדביקים את הגדרת ה-YAML הבאה:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: UserManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: trueמחליפים את הערכים הבאים:
-
NETWORK_NAME: השם של הרשת. -
INTERFACE_NAME: ממשק המארח שאליו מחברים את הרשת. -
VLAN_ID: מזהה ה-VLAN שרוצים לתייג את התנועה שלו.
במניפסט
Networkהזה, הערכים הבאים מוגדרים:- לעומסי עבודה יכול להיות רק חיבור
L2אחד לרשת הזו. - הרשת היא
UserManaged. צריך ליצור או למחוק את ממשק ה-VLANVLAN_IDבכל צומת לפני שיוצרים את הרשת, או אחרי שמוחקים אותה. - ברשת מופעל DHCP חיצוני. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, למסלולים, לשער ולתצורת ה-DNS של עומסי העבודה שמחוברים לרשת הזו.
-
שומרים וסוגרים את המניפסט של
Networkבכלי העריכה.יוצרים את הרשת באמצעות
kubectl:kubectl apply -f user-managed-network.yaml
חיבור של מכונה וירטואלית לרשת
הגדרות הרשת של ה-VM, כמו DNS ו-DHCP, מוקצות באופן סטטי או דינמי בהתאם לאופן שבו מוגדרות אפשרויות מסוימות של הגדרות הרשת:
- אם מגדירים כתובת IP סטטית במכונה הווירטואלית, לא נשלחת שאילתה לשרת DHCP. מידע נוסף להגדרת השער והמסלול צריך להגיע ממשאב הרשת.
- אם לא מגדירים כתובת IP סטטית במכונה הווירטואלית, נשלחת שאילתה לשרת ה-DHCP. המכונה הווירטואלית מקבלת את כל המידע משרת ה-DHCP ומתעלמת מכל הגדרה שאתם מגדירים במשאב הרשת.
- אם ה-DHCP החיצוני לא מוגדר כ-
trueבמשאב הרשת, צריך להגדיר כתובת IP סטטית למכונה הווירטואלית. כל שאר המידע מגיע מההגדרות שקבעתם במשאב הרשת.
כדי ליצור מכונה וירטואלית שמתחברת לרשת:
CLI
כדי ליצור מכונה וירטואלית באמצעות
kubectl:kubectl virt create vm VM_NAME \ --image ubuntu20.04 \ --network NETWORK_NAMEמחליפים את הערכים הבאים:
-
VM_NAME: השם של המכונה הווירטואלית. -
NETWORK_NAME: השם של הרשת שאליה רוצים להתחבר.- אם הרשת מוגדרת לאפשר שימוש בשרתי DHCP חיצוניים, המכונה הווירטואלית מקבלת הקצאה של כתובת IP באופן אוטומטי. אם צריך להגדיר כתובת IP סטטית, מוסיפים את הפרמטר והערך האופציונליים של
--ip IP_ADDRESS.
- אם הרשת מוגדרת לאפשר שימוש בשרתי DHCP חיצוניים, המכונה הווירטואלית מקבלת הקצאה של כתובת IP באופן אוטומטי. אם צריך להגדיר כתובת IP סטטית, מוסיפים את הפרמטר והערך האופציונליים של
-
מניפסט
כדי ליצור מכונה וירטואלית באמצעות מניפסט YAML:
יוצרים מניפסט
VirtualMachine, כמוmy-vm.yaml, בכלי העריכה שבוחרים:nano my-vm.yamlמעתיקים ומדביקים את המניפסט הבא ב-YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true disks: - virtualMachineDiskName: VM_NAME-boot-dv boot: trueבמניפסט ה-YAML הזה, מגדירים את ההגדרות הבאות:
-
VM_NAME: השם של המכונה הווירטואלית. -
NETWORK_NAME: השם של הרשת שאליה רוצים להתחבר. -
IP_ADDRESS: כתובת ה-IP בסימון CIDR שצריך להקצות ל-VM, למשל192.0.2.10/24.- אם הרשת שלכם מוגדרת לאפשר שימוש בשרתי DHCP חיצוניים, הסירו את השדה הזה מהמניפסט של
VirtualMachine.
- אם הרשת שלכם מוגדרת לאפשר שימוש בשרתי DHCP חיצוניים, הסירו את השדה הזה מהמניפסט של
דיסק האתחול בשם
VM_NAME-boot-dvכבר צריך להיות קיים. מידע נוסף זמין במאמר יצירת דיסק אתחול של מכונה וירטואלית.-
שומרים וסוגרים את המניפסט של
VirtualMachineבכלי העריכה.יוצרים את המכונה הווירטואלית באמצעות
kubectl:kubectl apply -f my-vm.yaml