הגדרת רשת VPC

‫Google Cloud Managed Lustre פועל בענן וירטואלי פרטי (VPC) שמספק פונקציונליות של רשתות למכונות וירטואליות (VM) של Compute Engine, לאשכולות של Google Kubernetes Engine‏ (GKE) ולעומסי עבודה ללא שרת.

צריך לציין את אותה רשת VPC כשיוצרים את מופע Managed Lustre ואת מכונות ה-VM של הלקוח ב-Compute Engine או את אשכולות Google Kubernetes Engine.

ההרשאות הנדרשות

אתם צריכים את הרשאות ה-IAM הבאות:

  • serviceusage.services.enable
  • compute.networks.create
  • compute.addresses.create
  • compute.addresses.get
  • compute.firewalls.create
  • servicenetworking.services.addPeering

אפשר להעניק את ההרשאות האלה על ידי הוספה של כל התפקידים המוגדרים מראש הבאים:

אפשר גם ליצור תפקיד בהתאמה אישית עם הרשאות ספציפיות.

כדי להקצות תפקיד למשתמש:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:EMAIL_ADDRESS"
  --role=ROLE

יצירה והגדרה של ה-VPC

  1. מפעילים את Service Networking.

    gcloud services enable servicenetworking.googleapis.com
    
  2. יוצרים רשת VPC במצב מותאם אישית.

    gcloud compute networks create NETWORK_NAME \
      --subnet-mode=custom \
      --mtu=8896
    
  3. יוצרים רשת משנה ראשית למשאבי GKE או Compute Engine.

    gcloud compute networks subnets create SUBNET_NAME \
      --network=NETWORK_NAME \
      --range=10.128.0.0/20 \
      --region=REGION
    
  4. הקצאת טווח כתובות IP לגישה לשירותים פרטיים.

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

    כל מופע של Managed Lustre דורש בלוק CIDR רציף עם אורך קידומת של לפחות 23.

    מומלץ ליצור טווח IP גדול יותר של ‎ /20 כדי לאפשר יצירה של כמה מופעים של Managed Lustre או שימוש בשירותים אחרים של Google Cloud .

    gcloud compute addresses create IP_RANGE_NAME \
      --global \
      --purpose=VPC_PEERING \
      --prefix-length=20 \
      --description="Managed Lustre VPC Peering" \
      --network=NETWORK_NAME
    
  5. מקבלים את בלוק ה-CIDR שמשויך לטווח שיצרתם בשלב הקודם.

    CIDR_BLOCK=$(
      gcloud compute addresses describe IP_RANGE_NAME \
        --global  \
        --format="value[separator=/](address, prefixLength)"
    )
    
  6. יוצרים כלל חומת אש שמאפשר תעבורת TCP מטווח כתובות ה-IP שיצרתם.

    gcloud compute firewall-rules create FIREWALL_NAME \
      --allow=tcp:988,tcp:6988 \
      --network=NETWORK_NAME \
      --source-ranges=$CIDR_BLOCK
    
  7. מחברים את ה-peering.

    gcloud services vpc-peerings connect \
      --network=NETWORK_NAME \
      --ranges=IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

יצירת רשתות משנה נוספות לשימוש בכמה כרטיסי רשת

אם אתם מתכננים להשתמש בכמה כרטיסי ממשק רשת (multi-NIC) כדי לצבור רוחב פס, אתם צריכים ליצור תת-רשת נפרדת ברשת ה-VPC לכל כרטיס ממשק רשת.

כדי ליהנות מיתרונות השימוש בכמה כרטיסי NIC, צריך להשתמש בסוגי מכונות של Compute Engine עם כמה כרטיסי NIC פיזיים שמצורפים ל-VPC רגילים. אי אפשר להשתמש ב-NIC שמצורפים ל-VPC עם פרופילים של רשת RDMA כדי להגדיל את רוחב הפס הכללי של הרשת. פרטים נוספים זמינים במאמר בנושא מכונות GPU ורשת.

כדי ליצור רשת משנה עבור כרטיס רשת פיזי נוסף:

gcloud compute networks subnets create SUBNET_NAME_2 \
  --network=NETWORK_NAME \
  --range=10.130.0.0/20 \
  --region=REGION

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

VPC Service Controls

‫Managed Lustre תומך ב-VPC Service Controls ‏ (VPC-SC). פרטים נוספים מופיעים במאמר בנושא אבטחת מופעים באמצעות גבולות גזרה לשירות.

פתרון בעיות בהגדרת VPC

אין הרשאה להוסיף קישור בין רשתות עבור השירות servicenetworking.googleapis.com

ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.

השגיאה הזו מציינת שאין לכם הרשאת servicenetworking.services.addPeering IAM בחשבון המשתמש.

במאמר בקרת גישה באמצעות IAM מוסבר איך להוסיף לחשבון אחד מהתפקידים הבאים:

  • roles/compute.networkAdmin או
  • roles/servicenetworking.networksAdmin

אי אפשר לשנות את הטווחים שהוקצו ב-CreateConnection

ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection."

השגיאה הזו מוחזרת אם כבר יצרתם VPC Peering ברשת הזו עם טווחי כתובות IP שונים. יש שתי אפשרויות לפתרון:

מחליפים את טווחי כתובות ה-IP הקיימים:

gcloud services vpc-peerings update \
  --network=NETWORK_NAME \
  --ranges=IP_RANGE_NAME \
  --service=servicenetworking.googleapis.com \
  --force

אפשר גם להוסיף את טווח כתובות ה-IP החדש לחיבור הקיים:

  1. אחזור הרשימה של טווחי ה-IP הקיימים עבור הפירינג:

    EXISTING_RANGES="$(
      gcloud services vpc-peerings list \
        --network=NETWORK_NAME \
        --service=servicenetworking.googleapis.com \
        --format="value(reservedPeeringRanges.list())" \
        --flatten=reservedPeeringRanges
    )
    
  2. לאחר מכן, מוסיפים את הטווח החדש לקישור:

    gcloud services vpc-peerings update \
      --network=NETWORK_NAME \
      --ranges="${EXISTING_RANGES}",IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

טווח כתובות ה-IP מוצה

אם יצירת המכונה נכשלת עם שגיאה שטווח כתובות ה-IP מוצה:

ERROR: (gcloud.alpha.Google Cloud Managed Lustre.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted

פועלים לפי המדריך ל-VPC כדי לשנות את החיבור הפרטי הקיים ולהוסיף טווחי כתובות IP.

מומלץ להגדיר אורך קידומת של ‎ /20 לפחות (4,096 כתובות).

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