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

סביבת זמן הריצה של VM ב-GDC מאפשרת להגדיר רשתות וירטואליות כדי לחבר ולנתב תנועה לעומסי העבודה של המכונות הווירטואליות (VM).

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

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

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

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

  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 ב-GDC.
    • ‫externalDHCP4 מוגדר לערך true. ההגדרה הזו מפעילה DHCP חיצוני לרשת. שרת ה-DHCP החיצוני אחראי להקצאת כתובות IPv4, לנתיבים, לשער ולתצורת ה-DNS של עומסי העבודה שמחוברים לרשת הזו.
  3. שומרים וסוגרים את המניפסט של Network בכלי העריכה.

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

    kubectl apply -f use-dhcp-network.yaml
    

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

בסביבת זמן הריצה של VM ב-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 להגדרה בכל VM שמתחבר לרשת הזו.
    • ‫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, כמו 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
    

חיבור של מכונה וירטואלית לרשת

הגדרות הרשת של ה-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.

מניפסט

כדי ליצור מכונה וירטואלית באמצעות מניפסט 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: השם של המכונה הווירטואלית.
    • ‫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
    

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