הקצאת כתובות IP לעומסי עבודה

כדי לתמוך בדרישות הרשת הפנימיות של הארגון, יוצרים תת-רשתות נוספות בענן הווירטואלי הפרטי (VPC) הפנימי של הארגון או ב-VPC שמוגדר כברירת מחדל. לדוגמה, הוספת רשתות משנה של VPC כדי לוודא שלעומסי העבודה הפנימיים, כמו מכונות וירטואליות (VM) וקונטיינרים, יש מספיק כתובות IP.

בדף הזה מתוארות כמה משימות, ולא צריך לבצע אותן לפי הסדר:

לסקירה כללית על רשתות משנה והמושגים שקשורים אליהן, לפני שאתם מבצעים את המשימות שבדף הזה, קראו את המאמר רשתות משנה וכתובות IP.

המסמך הזה מיועד למנהלי פלטפורמות ולמפעילי אפליקציות שאחראים לניהול התנועה ברשת בארגון שלהם. מידע נוסף זמין במאמר קהלי היעד של GDC עם air gap.

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

כדי לקבל את ההרשאה שנדרשת ליצירת רשתות משנה, צריך לבקש ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקיד "אדמין ארגוני של רשתות משנה" (subnet-org-admin) ב-IAM. התפקיד הזה לא קשור למרחב שמות.

יצירת רשת משנה של סניף אזורי לעומסי עבודה

כדי לחלק עוד יותר את כתובות ה-IP ב-VPC המוגדר כברירת מחדל באזור, אתם יכולים ליצור תת-רשת פנימית באזור מתוך תת-רשת הבסיס הקיימת באזור. צריך ליצור את סוג רשת המשנה הזה במרחב השמות platform.

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

  • בחלון הטרמינל, יוצרים את רשת המשנה האזורית החדשה בשרת ה-API לניהול:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      networkSpec:
        enableGateway: true
        enableVLANID: false
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: platform
      type: Branch
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MANAGEMENT_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת ה-API לניהול. מידע נוסף זמין במאמר משאבים של שרת API לניהול אזורי.

    • ‫SUBNET_NAME: השם של תת-הרשת החדשה.

    • ‫CIDR_PREFIX_LENGTH: אורך הקידומת של רשת המשנה החדשה, למשל 27. השדה הזה מקצה באופן דינמי את טווח כתובות ה-IP הזמין הבא בגודל הזה מתת-הרשת ההורה. משתמשים בשדה prefixLength כשרוצים להגדיר רק את הגודל של תת-הרשת, ולא את טווח כתובות ה-IP הספציפי שלה.

      כדי להקצות טווח ספציפי של כתובות IP:

      1. מסירים את השורה prefixLength: CIDR_PREFIX_LENGTH.
      2. מוסיפים שורה של cidr: "YOUR_CIDR_BLOCK" במקומה, למשל cidr: "10.0.10.0/27".

      השתמשו בשדה cidr כשאתם פועלים לפי תוכנית IP קפדנית וצריכים להקצות טווח כתובות IP מדויק וצפוי. הטווח הזה חייב להיות רשת משנה תקינה וזמינה בתוך רשת המשנה הראשית.

    • ‫PARENT_SUBNET_NAME: השם של תת-הרשת ההורה, למשל default-vpc-zone0-cidr. תת-הרשת הראשית היא בדרך כלל תת-רשת ברמת האזור ב-VPC שמוגדר כברירת מחדל.

    מידע נוסף מופיע במאמרי העזרה של ה-API בנושא המשאב Subnet.

    אתם יכולים להמשיך לחלק את רשתות המשנה האזוריות או ליצור רשת משנה מסוג עלה כדי להקצות כתובת IP נפרדת ישירות לעומס עבודה פנימי.

יצירת רשת משנה מסוג עלה לעומס עבודה ספציפי

כדי להקצות כתובת IP אחת לעומס העבודה, צריך ליצור רשת משנה מסוג עלה. רשת המשנה הזו צריכה לכלול את ערך השדה type: Leaf ולהיות באותו מרחב שמות של הפרויקט כמו המשאב של עומס העבודה, למשל מכונה וירטואלית או קונטיינר.

צריך להגדיר את רשת המשנה של העלה עם ערך prefixLength של 32, כי היא מיועדת להקצות כתובת IP אחת. הערך של parentReference מפנה לרשת משנה שהוקצתה בעבר, כמו רשת המשנה הראשית ברמת האזור שיצרתם בקטע יצירת רשת משנה אזורית לעומסי עבודה.

  • בחלון הטרמינל, יוצרים את רשת המשנה של העלה בשרת ה-API לניהול:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
      name: SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_SUBNET
        namespace: PARENT_NAMESPACE
      type: Leaf
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MANAGEMENT_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת ה-API לניהול. למידע נוסף, קראו את המאמר משאבי שרת API לניהול אזורי.
    • ‫SUBNET_NAME: השם של תת-הרשת של העלה.
    • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט שבו נמצאים עומסי העבודה.
    • PARENT_SUBNET: השם של רשת המשנה הראשית שממנה רשת המשנה המשנית הזו תקבל את כתובת ה-IP שלה.
    • ‫PARENT_NAMESPACE: מרחב השמות PROJECT_NAMESPACE או platform.

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

הקצאת רשת משנה אזורית מטווח כתובות IP גלובליות

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

כדי להקצות רשת משנה אזורית מטווח כתובות ה-IP הגלובלי, מבצעים את השלבים הבאים ברשת ה-VPC שמוגדרת כברירת מחדל במרחב השמות platform:

  1. בחלון הטרמינל, מתארים את כל רשתות המשנה הבסיסיות של רשת ה-VPC שמוגדרת כברירת מחדל, ובודקים את בלוקי ה-CIDR הזמינים שלהן:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    מחליפים את GLOBAL_API_SERVER_KUBECONFIG בנתיב לקובץ kubeconfig של שרת ה-API הגלובלי. מידע נוסף זמין במאמר משאבים גלובליים של שרת API. התוויות קבועות וצריכות להישאר ללא שינוי.

    הפלט אמור להיראות כך:

    Name:         default-vpc-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=default-vpc-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/vpc=default-vpc
    Annotations:  <none>
    API Version:  ipam.global.gdc.goog/v1
    Kind:         Subnet
    Metadata:
      Creation Timestamp:  2025-06-18T23:05:38Z
      Finalizers:
        global-subnet-finalizer
      Generation:        1
      Resource Version:  439434
      UID:               5ed1c51a-b5ee-473e-a185-8e065a87ae8f
    Spec:
      ipv4Request:
        Cidr:                10.252.0.0/14
      Propagation Strategy:  None
      Type:                  Root
    Status:
      Children Refs:
        Name:       default-vpc-zone1-root-cidr
        Namespace:  platform
        Type:       SingleSubnet
      Conditions:
        Last Transition Time:  2025-06-18T23:05:38Z
        Message:               IP allocation finished successfully
        Observed Generation:   1
        Reason:                AllocationSucceeded
        Status:                True
        Type:                  Ready
      ipv4Allocation:
        Available CIDRs:
          10.254.0.0/15
          10.253.0.0/16
        Cidr:  10.252.0.0/14
    Events:    <none>
    

    שימו לב לערכים של Status.ipv4Allocation.Available CIDRs. הערכים האלה הם בלוקי ה-CIDR הזמינים שאליהם מתייחס השלב הבא. בפלט הקודם, טווחי ה-CIDR‏ 10.254.0.0/15 ו-10.253.0.0/16 זמינים. יכול להיות שיופיעו כמה רשתות משנה בפלט. שימו לב לכל בלוקי ה-CIDR הזמינים ולרשתות המשנה שלהם.

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

    לדוגמה, אם אתם צריכים בלוק CIDR של /13, אבל ה-CIDR הזמינים כוללים רק את /15 ו-/16, אתם צריכים להוסיף רשת משנה גלובלית חדשה של טווח הרשת ברמה הבסיסית. אם אתם צריכים רשת משנה של /15, אתם יכולים להקצות רשת משנה אזורית חדשה מבלוק ה-CIDR הקיים של /15.

  3. יוצרים את רשת המשנה החדשה בשרת ה-API הגלובלי:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: zone-network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      zone: ZONE_NAME
      propagationStrategy: SingleZone
      type: Branch
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: ORG_NAME
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫GLOBAL_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת ה-API הגלובלי. מידע נוסף זמין במאמר משאבים גלובליים של שרת API.
    • ‫SUBNET_NAME: השם של תת-הרשת החדשה.
    • ‫CIDR_PREFIX_LENGTH: אורך הקידומת של ה-CIDR של תת-הרשת החדשה שמוקצית באופן דינמי, למשל 20. כדי להגדיר את ה-CIDR באופן סטטי, מחליפים את השדה prefixLength בשדה cidr, ואז מגדירים את בלוק ה-CIDR, למשל 10.0.10.0/27.
    • ‫ZONE_NAME: האזור שבו מקצים את רשת המשנה, למשל zone1.
    • ‫PARENT_SUBNET_NAME: השם של רשת המשנה הראשית, כמו default-vpc-root-cidr, או רשת המשנה הגלובלית החדשה של טווח הבסיס של הרשת שיצרתם.
    • ‫ORG_NAME: שם הארגון.

    מידע נוסף מופיע במאמרי העזרה של ה-API בנושא המשאב Subnet.

  4. כדי לוודא שרשת המשנה מוכנה וזמינה בשרת ה-API הגלובלי, בודקים שסוג הסטטוס Ready שלה הוא true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    הפלט אמור להיראות כך:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    
  5. מוודאים שנוצרת רשת משנה אזורית בשרת ה-API לניהול אזורי, ושהסטטוס Ready שלה הוא מסוג true:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    מחליפים את הערך של MANAGEMENT_API_SERVER_KUBECONFIG בנתיב לקובץ kubeconfig של שרת ה-API לניהול. מידע נוסף זמין במאמר משאבים של שרת API לניהול אזורי.

    הפלט אמור להיראות כך:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:29:34Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

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

חלוקה של רשת משנה גלובלית ברמה הבסיסית (root) בלי הקצאת אזור

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

כדי לחלק את רשת המשנה ברמה הבסיסית (root) הגלובלית בתוך ההיקף הגלובלי, מבצעים את השלבים הבאים במרחב השמות platform:

  1. בחלון הטרמינל, מתארים את כל רשתות המשנה ברמה הבסיסית (root) של ה-VPC שמוגדר כברירת מחדל, ובודקים את בלוקי ה-CIDR הזמינים שלהן:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    מחליפים את GLOBAL_API_SERVER_KUBECONFIG בנתיב לקובץ kubeconfig של שרת ה-API הגלובלי. מידע נוסף זמין במאמר משאבים גלובליים של שרת API. התוויות קבועות וצריכות להישאר ללא שינוי.

    הפלט אמור להיראות כך:

    Name:         default-vpc-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=default-vpc-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/vpc=default-vpc
    Annotations:  <none>
    API Version:  ipam.global.gdc.goog/v1
    Kind:         Subnet
    Metadata:
      Creation Timestamp:  2025-06-18T23:05:38Z
      Finalizers:
        global-subnet-finalizer
      Generation:        1
      Resource Version:  439434
      UID:               5ed1c51a-b5ee-473e-a185-8e065a87ae8f
    Spec:
      ipv4Request:
        Cidr:                10.252.0.0/14
      Propagation Strategy:  None
      Type:                  Root
    Status:
      Children Refs:
        Name:       default-vpc-zone1-root-cidr
        Namespace:  platform
        Type:       SingleSubnet
      Conditions:
        Last Transition Time:  2025-06-18T23:05:38Z
        Message:               IP allocation finished successfully
        Observed Generation:   1
        Reason:                AllocationSucceeded
        Status:                True
        Type:                  Ready
      ipv4Allocation:
        Available CIDRs:
          10.254.0.0/15
          10.253.0.0/16
        Cidr:  10.252.0.0/14
    Events:    <none>
    

    שימו לב לערכים של Status.ipv4Allocation.Available CIDRs. הערכים האלה הם בלוקי ה-CIDR הזמינים שאליהם מתייחס השלב הבא. בפלט הקודם, טווחי ה-CIDR‏ 10.254.0.0/15 ו-10.253.0.0/16 זמינים. יכול להיות שיהיו כמה רשתות משנה בפלט, בהתאם למספר רשתות המשנה ברמה הבסיסית (root) שיש לכם. לכן, שימו לב לכל בלוקי ה-CIDR הזמינים, ושימו לב מאיזו רשת משנה מגיע בלוק ה-CIDR הזמין.

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

    לדוגמה, אם אתם צריכים בלוק CIDR של /13, אבל ה-CIDR הזמינים כוללים רק את /15 ו-/16, אתם צריכים ליצור רשת משנה גלובלית חדשה בטווח הבסיס של הרשת. אם אתם צריכים רשת משנה של /15, אתם יכולים להקצות את רשת המשנה הגלובלית החדשה מבלוק ה-CIDR הקיים של /15.

  3. יוצרים את רשת המשנה החדשה בשרת ה-API הגלובלי:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: zone-network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      propagationStrategy: None
      type: Branch
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: ORG_NAME
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫GLOBAL_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת ה-API הגלובלי. מידע נוסף זמין במאמר משאבים גלובליים של שרת API.
    • ‫SUBNET_NAME: השם של תת-הרשת החדשה.
    • ‫CIDR_PREFIX_LENGTH: אורך הקידומת של ה-CIDR של תת-הרשת החדשה שמוקצית באופן דינמי, למשל 20. כדי להגדיר את ה-CIDR באופן סטטי, מחליפים את השדה prefixLength בשדה cidr, ואז מגדירים את בלוק ה-CIDR, למשל 10.0.10.0/27.
    • ‫PARENT_SUBNET_NAME: השם של רשת המשנה הראשית, כמו default-vpc-root-cidr, או רשת המשנה הגלובלית החדשה של טווח הבסיס של הרשת שיצרתם.
    • ‫ORG_NAME: שם הארגון.

    מידע נוסף מופיע במאמרי העזרה של ה-API בנושא המשאב הגלובלי Subnet.

  4. כדי לוודא שרשת המשנה מוכנה וזמינה בשרת ה-API הגלובלי, בודקים שסוג הסטטוס Ready שלה הוא true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    הפלט אמור להיראות כך:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

רשת המשנה הגלובלית החדשה של הארגון שלכם זמינה ב-VPC שמוגדר כברירת מחדל. אפשר ליצור רשת משנה לאזור מסוים מרשת המשנה הגלובלית החדשה הזו.

הוספת רשת משנה גלובלית חדשה של טווח בסיס של רשת

רשתות משנה גלובליות עם התווית ipam.gdc.goog/usage: network-root-range מארחות את ה-CIDR לכל האזורים ברשת. אם ה-CIDR נוצל, צריך ליצור רשת משנה חדשה של טווח הבסיס של הרשת בשרת ה-API הגלובלי. אם צריך, אפשר ליצור כמה רשתות משנה גלובליות ברמה הבסיסית.

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

  • בחלון הטרמינל, יוצרים את תת-הרשת הגלובלית החדשה של טווח הבסיס של הרשת בשביל ה-VPC שמוגדר כברירת מחדל במרחב השמות platform:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        cidr: NEW_CIDR
      type: Root
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫GLOBAL_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת ה-API הגלובלי. מידע נוסף זמין במאמר משאבים גלובליים של שרת API.
    • ‫SUBNET_NAME: השם של תת-הרשת החדשה.
    • ‫NEW_CIDR: ה-CIDR החדש של רשת המשנה. טווח ה-CIDR הזה לא יכול לחפוף לאף טווח CIDR בכל רשתות המשנה הקיימות עם התווית ipam.gdc.goog/usage: network-root-range באותו שרת API גלובלי.

אפשר לחלק את רשת המשנה החדשה של טווח הבסיס הגלובלי בתוך שרת ה-API הגלובלי או להקצות אותה לאזור ספציפי.

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