המאמר הזה מיועד לאדמינים של IT, לאופרטורים ולמומחי רשתות שמפעילים את Google Distributed Cloud. במסמך הזה מוסבר איך ליצור רשתות וירטואליות ולהשתמש בהן כדי לתמוך בעומסי עבודה של מכונות וירטואליות שמשתמשות ב-VM Runtime ב-GDC. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Google Cloud תוכן, זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.
לפני שמתחילים
כדי להשלים את המסמך הזה, תצטרכו גישה למקורות המידע הבאים:
- גישה ל-Google Distributed Cloud מגרסה 1.12.0 (
anthosBareMetalVersion: 1.12.0) ואילך של אשכול. אפשר להשתמש בכל סוג של אשכול שיכול להריץ עומסי עבודה. אם צריך, אפשר לנסות את Google Distributed Cloud ב-Compute Engine או לעיין בסקירה הכללית על יצירת אשכולות. - כלי הלקוח
virtctlמותקן כפלאגין שלkubectl. במקרה הצורך, מתקינים את כלי הלקוח virtctl.
סקירה כללית על רשתות וירטואליות
רשתות נוצרות באמצעות משאבים מותאמים אישית. אפשר ליצור רשת בכל שלב אחרי שיוצרים את האשכול. אחרי שיוצרים רשת, אי אפשר לשנות את הגדרות הרשת של ממשק המארח ואת הקצאת מזהה ה-VLAN, אם היא מוגדרת.
מחיקת רשתות כפופה לתנאים מסוימים. לדוגמה, בקר הרשת דוחה את המחיקה של רשת אם נעשה בה שימוש על ידי משאבים כלשהם, כמו מכונות וירטואליות או ממשקי רשת.
הגדרת הרשת יכולה לכלול את השער, המסלולים ופרטי ה-DNS. אפשר גם להפעיל את השימוש בשרת DHCP חיצוני. ההקצאה של הגדרות הרשת האלה היא סטטית או דינמית, בהתאם לאופן שבו מוגדרות אפשרויות מסוימות של הגדרות הרשת.
רשת ברירת מחדל של פוד
לכל אשכול נוצרת כברירת מחדל pod-network. אי אפשר לשנות את הרשת הזו. המסלולים ל-CIDR של הפוד ול-CIDR של השירות, והגדרת ה-DNS, מאוכלסים אוטומטית. הגדרת ה-DNS משתמשת באותם ערכים כמו האשכול.
אפשר להשתמש ב-pod-network בעומסי עבודה שצריכים ממשק כדי לגשת לרשת ה-Pod של האשכול, ולא צריכים אפשרויות הגדרה ספציפיות.
הנתיבים של pod-network תמיד מוגדרים כדי להבטיח גישה לאשכול ולשירותים עבור עומסי העבודה, גם אם שער ברירת המחדל לא נמצא בממשק pod-network.
ההגדרה הזו של pod-network מאפשרת לכם לבדוק את VM Runtime ב-GDC בלי שתצטרכו לבצע שלבים נוספים כדי ליצור רשתות וירטואליות משלכם. בהרבה מהמסמכים שלנו אנחנו משתמשים בערך ברירת המחדל pod-network כדי לצמצם את המורכבות של הדוגמאות. הצרכים של עומסי העבודה במכונה הווירטואלית יקבעו אם רשת ברירת המחדל 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 Runtime ב-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 Runtime ב-GDC. - הערך של
externalDHCP4הואtrue. ההגדרה הזו מפעילה DHCP חיצוני לרשת. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, מסלולים, שער והגדרת DNS לעומסי עבודה שמחוברים לרשת הזו.
-
שומרים וסוגרים את קובץ המניפסט
Networkבכלי העריכה.יוצרים את הרשת באמצעות
kubectl:kubectl apply -f use-dhcp-network.yaml
הגדרה ידנית של הגדרות הרשת
VM Runtime ב-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 להגדרה בכל מכונה וירטואלית שמתחברת לרשת הזו. -
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, מבצעים את השלבים הבאים:
יוצרים קובץ
Networkmanifest, כמו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
חיבור מכונה וירטואלית לרשת
ההקצאה של הגדרות הרשת של המכונה הווירטואלית, כמו DNS ו-DHCP, היא סטטית או דינמית, בהתאם לאופן שבו מוגדרות אפשרויות מסוימות של תצורת הרשת:
- אם מגדירים כתובת IP קבועה במכונה הווירטואלית, לא נשלחת שאילתה לשרת DHCP. מידע נוסף להגדרת השער והמסלול צריך להגיע ממקור המידע של הרשת.
- אם לא מגדירים כתובת IP סטטית במכונה הווירטואלית, נשלחת שאילתה לשרת ה-DHCP. המכונה הווירטואלית מקבלת את כל המידע משרת ה-DHCP ומתעלמת מכל הגדרה שאתם מגדירים במשאב הרשת.
- אם הערך של external DHCP לא מוגדר ל-
trueבמשאב הרשת, צריך להגדיר כתובת IP סטטית למכונה הווירטואלית. כל שאר המידע מגיע מההגדרה שאתם מגדירים במשאב הרשת.
כדי ליצור מכונה וירטואלית שמתחברת לרשת, מבצעים את השלבים הבאים:
CLI
כדי ליצור מכונה וירטואלית באמצעות
kubectl, מבצעים את השלבים הבאים:kubectl virt create vm VM_NAME \ --image ubuntu20.04 \ --network NETWORK_NAMEמחליפים את הערכים הבאים:
-
VM_NAME: השם של ה-VM. -
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: השם של ה-VM. -
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