יצירה ושימוש ברשתות וירטואליות עבור VM Runtime ב-GDC

המאמר הזה מיועד לאדמינים של IT, לאופרטורים ולמומחי רשתות שמפעילים את Google Distributed Cloud. במסמך הזה מוסבר איך ליצור רשתות וירטואליות ולהשתמש בהן כדי לתמוך בעומסי עבודה של מכונות וירטואליות שמשתמשות ב-VM Runtime ב-GDC. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן ב Google Cloud תוכן, זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.

לפני שמתחילים

כדי להשלים את המסמך הזה, תצטרכו גישה למקורות המידע הבאים:

סקירה כללית על רשתות וירטואליות

רשתות נוצרות באמצעות משאבים מותאמים אישית. אפשר ליצור רשת בכל שלב אחרי שיוצרים את האשכול. אחרי שיוצרים רשת, אי אפשר לשנות את הגדרות הרשת של ממשק המארח ואת הקצאת מזהה ה-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 חיצוני, מבצעים את השלבים הבאים:

  1. יוצרים מניפסט Network, כמו use-dhcp-network.yaml, בכלי העריכה שבוחרים:

    nano use-dhcp-network.yaml
    
  2. מעתיקים ומדביקים את קובץ המניפסט הבא בפורמט 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 לעומסי עבודה שמחוברים לרשת הזו.
  3. שומרים וסוגרים את קובץ המניפסט Network בכלי העריכה.

  4. יוצרים את הרשת באמצעות kubectl:

    kubectl apply -f use-dhcp-network.yaml
    

הגדרה ידנית של הגדרות הרשת

‫VM Runtime ב-GDC לא מספק שרתי DHCP. צריך לציין כתובות IP למכונות וירטואליות באופן ידני או להגדיר שימוש בשרתי DHCP חיצוניים. אם מציינים כתובות IP באופן ידני, צריך להגדיר את הגדרות הרשת עבור DNS, מסלולים ושער ברירת מחדל.

כדי ליצור רשת עם הגדרות רשת שצוינו ידנית למכונות וירטואליות, מבצעים את השלבים הבאים:

  1. יוצרים Network מניפסט, כמו manual-network.yaml, בעורך לבחירתכם:

    nano manual-network.yaml
    
  2. מעתיקים ומדביקים את קובץ המניפסט הבא בפורמט 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 אחד או יותר לשימוש במכונות הווירטואליות.
  3. שומרים וסוגרים את קובץ המניפסט Network בכלי העריכה.

  4. יוצרים את הרשת באמצעות kubectl:

    kubectl apply -f manual-network.yaml
    

שימוש במזהה VLAN

כשיוצרים רשתות וירטואליות, אפשר להגדיר רשתות VLAN מתויגות. ההקצאות האלה של VLAN עוזרות לכם לבודד את תעבורת הרשת בהתאם לדרישות של עומס העבודה ולצרכים שלכם בנוגע לבידוד. ברשת AnthosManaged, לאשכול יש הרשאה ליצור ולמחוק את ממשק ה-VLAN בכל צומת.

כדי ליצור רשת שמגדירה הקצאת VLAN, מבצעים את השלבים הבאים:

  1. יוצרים Network מניפסט, כמו vlan-network.yaml, בעורך לבחירתכם:

    nano vlan-network.yaml
    
  2. מעתיקים ומדביקים את קובץ המניפסט הבא בפורמט 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, כמו שמוצג בקטע הבא.
    • ברשת מופעל DHCP חיצוני. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, מסלולים, שער ותצורת DNS לעומסי עבודה שמחוברים לרשת הזו.
  3. שומרים וסוגרים את קובץ המניפסט Network בכלי העריכה.

  4. יוצרים את הרשת באמצעות kubectl:

    kubectl apply -f vlan-network.yaml
    

יצירת רשת שמנוהלת על ידי משתמש

בדוגמה הבאה של רשת וירטואלית, הרשת היא בניהול המשתמש, בניגוד לניהול על ידי Anthos בדוגמה הקודמת. ברשתות שמנוהלות על ידי המשתמש, אתם אחראים ליצירה או למחיקה של ממשק ה-VLAN במארח.

כדי ליצור רשת במצב ניהול על ידי המשתמש ולהגדיר ידנית את תצורת ממשק ה-VLAN, מבצעים את השלבים הבאים:

  1. יוצרים קובץ Network manifest, כמו user-managed-network.yaml, בכלי העריכה הרצוי:

    nano user-managed-network.yaml
    
  2. מעתיקים ומדביקים את הגדרת ה-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. צריך ליצור או למחוק את ממשק ה-VLAN VLAN_ID בכל צומת לפני שיוצרים את הרשת, או אחרי שמוחקים את הרשת.
    • ברשת מופעל DHCP חיצוני. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, מסלולים, שער ותצורת DNS לעומסי עבודה שמחוברים לרשת הזו.
  3. שומרים וסוגרים את קובץ המניפסט Network בכלי העריכה.

  4. יוצרים את הרשת באמצעות 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 ואת הערך.

מניפסט

כדי ליצור מכונה וירטואלית באמצעות מניפסט YAML:

  1. יוצרים VirtualMachine מניפסט, כמו my-vm.yaml, בעורך לבחירתכם:

    nano my-vm.yaml
    
  2. מעתיקים ומדביקים את קובץ המניפסט הבא בפורמט 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.

    דיסק האתחול בשם VM_NAME-boot-dv חייב להיות קיים. מידע נוסף זמין במאמר יצירת דיסק אתחול של מכונה וירטואלית.

  3. שומרים וסוגרים את קובץ המניפסט VirtualMachine בכלי העריכה.

  4. יוצרים את המכונה הווירטואלית באמצעות kubectl:

    kubectl apply -f my-vm.yaml
    

המאמרים הבאים