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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • בחלון הטרמינל, יוצרים את רשת המשנה העליונה בשרת של Management 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 הגלובלי, צריך לבצע את השלבים הבאים עבור רשת ה-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. מוודאים שנוצרה רשת משנה אזורית בשרת של Zonal Management 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 בודדת ישירות לעומס עבודה פנימי.

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

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

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

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