בדף הזה מוסבר איך להקצות רשתות משנה נוספות לאשכול המותאם ל-VPC. אם מקצים לאשכול רשתות משנה נוספות, אפשר ליצור מאגרי צמתים חדשים שבהם כתובות ה-IPv4 של הצמתים וגם של ה-Pods מגיעות מטווחים של רשתות משנה נוספות.
הדף הזה מיועד למומחי רשתות שתפקידם לתכנן את הרשת של הארגון. מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן בתוכן של Cloud de Confiance by S3NS , זמין במאמר תפקידים נפוצים של משתמשים ב-GKE ומשימות.
סקירה כללית
כשיוצרים אשכול GKE מקורי של VPC, בוחרים תת-רשת שמוגדרת כברירת מחדל לאשכול. רשת המשנה שמוגדרת כברירת מחדל באשכול מספקת כתובות IPv4 לצמתים, ל-Pods ולשירותים, כפי שמתואר במאמר טווחים של כתובות IP לאשכולות מקוריים של VPC.
אפשר להקצות עד שמונה רשתות משנה נוספות לאשכול מקורי של VPC, וכך לאפשר לאשכול לגדול באופן משמעותי. כל תת-רשת נוספת שמוקצית נקראת תת-רשת שאינה ברירת מחדל.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
דרישות ומגבלות
בקטע הזה מתוארות הדרישות והמגבלות שחלות כשמקצים ומשתמשים ברשתות משנה נוספות באשכול. כדי להקצות רשתות משנה נוספות, צריך לעמוד בכל הדרישות.
- מוודאים שאשכול GKE הוא אשכול מקורי של VPC שפועל ב-GKE מגרסה 1.30.3-gke.1211000 ואילך. אשכולות מבוססי-נתיבים ואשכולות ברשתות מדור קודם לא תומכים ברשתות משנה נוספות.
- אפשר להקצות עד שמונה רשתות משנה נוספות לכל אשכול.
- רשתות המשנה הנוספות מספקות רק כתובות IPv4 לצמתים ול-Pods. אי אפשר להשתמש ברשתות משנה נוספות כדי לספק כתובות IPv6 לצמתים או ל-Pods.
- רק מאגרי צמתים חדשים יכולים להשתמש בתתי-הרשתות הנוספות, ולא מאגרי צמתים קיימים. כשיוצרים מאגר צמתים חדש ויש כמה רשתות משנה שאינן ברירת המחדל, מערכת GKE בוחרת את רשת המשנה הטובה ביותר למאגר הצמתים על סמך הדרישות לכתובות IP והזמינות של כתובות IP בכל רשתות המשנה של האשכול.
- אי אפשר לקבוע באיזו רשת משנה שאינה ברירת המחדל ישתמש מאגר צמתים חדש. לדוגמה, אם באשכול יש רשת משנה שמוגדרת כברירת מחדל (זו שנעשה בה שימוש במהלך יצירת האשכול) ושתי רשתות משנה שלא מוגדרות כברירת מחדל, אי אפשר לציין באיזו מבין רשתות המשנה שלא מוגדרות כברירת מחדל צריך להשתמש במאגר צמתים חדש.
- אפשר להשתמש בטווחי כתובות IPv4 משניים של רשת משנה בתת-רשת לא ברירת מחדל רק באשכול אחד.
- אי אפשר להשתמש ברשתות משנה נוספות עם שערי גישה מרובי-אשכולות.
- אם אתם משתמשים בתמיכה בריבוי רשתות עבור Pods, טווחי כתובות ה-IPv4 הראשיות של ה-Pod ושל רשת משנה נוספת לא יכולים לחפוף לטווחי CIDR שהוגדרו בהגדרת ריבוי הרשתות. תת-רשתות נוספות שאתם מגדירים חלות רק על הרשת שמוגדרת כברירת מחדל. ההגבלה הזו אומרת שממשקי רשת נוספים בצמתים וב-Pods לא יכולים להשתמש בכתובות ה-IP שסופקו על ידי רשתות המשנה הנוספות האלה.
- כשמוסיפים רשת משנה לאשכולות שמופעל בהם Cloud Service Mesh, הרשת לא יכולה לנתב תעבורה ל-Pods ברשת המשנה שאינה ברירת המחדל.
דרישות של מאזן עומסים לאשכולות עם רשתות משנה נוספות
בקטע הזה מתוארות הדרישות של מאזן העומסים שחלות כשמשתמשים בתתי-רשתות נוספות באשכול. הדרישות האלה חלות בכל פעם שיוצרים שירות חיצוני של תעבורת נתונים נכנסת (ingress), שער חיצוני או מאזן עומסים חיצוני.
- כדי להשתמש בשירות חיצוני מסוג Ingress, Gateway או LoadBalancer באשכול עם רשתות משנה נוספות, האשכול צריך להריץ את GKE בגרסה 1.33.2-gke.4780000 ואילך.
- אובייקטים חיצוניים של Ingress שמשתמשים בבקר Ingress של GKE חייבים להשתמש באיזון עומסים ברמת הקונטיינר.
- הפעלת חלוקת משנה (subsetting) ב-GKE לשירותי LoadBalancer פנימיים. החלוקה לקבוצות משנה ב-GKE משפיעה רק על שירותים פנימיים חדשים של איזון עומסים. לכן, אחרי שמפעילים את התכונה 'חלוקת משנה של GKE', צריך למחוק את כל השירותים הקיימים באשכול וליצור אותם מחדש.
כדי ליצור מאזן עומסי רשת חיצוני להעברת סיגנל ללא שינוי שמבוסס על שירות לקצה העורפי, שירותי LoadBalancer חיצוניים חדשים צריכים לכלול את ההערה
cloud.google.com/l4-rbs: "enabled". ההערה הזו משפיעה רק על שירותים חדשים של איזון עומסים חיצוניים, ולא חלה על שירותים קיימים של איזון עומסים חיצוניים. מחיקה ויצירה מחדש של כל שירותי LoadBalancer חיצוניים שנוצרו ללא ההערהcloud.google.com/l4-rbs: "enabled".סוג הקצה העורפי שבו משתמשים (
GCE_VM_IPקצוות עורפיים של NEG או קצוות עורפיים של קבוצת מופעים) תלוי בגרסת GKE כשיוצרים את שירות LoadBalancer החיצוני. מידע נוסף מופיע במאמר בנושא קיבוץ צמתים.
הוספת רשת משנה חדשה עם טווח כתובות IPv4 של Pod אחד
יוצרים רשת משנה חדשה ומוסיפים טווח כתובות IPv4 משניות חדש לרשת המשנה. תת-הרשת צריכה להיות באותו אזור ובאותה רשת VPC כמו האשכול:
gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK \ --region=REGION \ --range=PRIMARY_RANGE \ --secondary-range=POD_RANGE_NAME=SECONDARY_RANGE \ --enable-private-ip-google-accessמחליפים את מה שכתוב בשדות הבאים:
-
SUBNET_NAME: השם של תת-הרשת החדשה. -
NETWORK: השם של רשת ה-VPC שמכילה את תת-הרשת החדשה. -
REGION: האזור שבו נמצאת רשת המשנה. -
PRIMARY_RANGE: טווח ה-IPv4 הראשי של תת-הרשת החדשה, בסימון CIDR. מידע נוסף זמין במאמר בנושא טווחים של רשתות משנה ב-IPv4. -
POD_RANGE_NAME: שם לטווח המשני. -
SECONDARY_RANGE: טווח כתובות ה-IPv4 המשני בסימון CIDR. לעיון בטווחי כתובות תקינים, אפשר לעבור אל טווחי כתובות של רשתות משנה IPv4.
מידע נוסף זמין במאמר בנושא עבודה עם רשתות משנה.
-
כדי לעדכן את האשכול כך שישתמש ברשת המשנה הנוספת, משתמשים ב-CLI של gcloud:
gcloud container clusters update CLUSTER_NAME \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול הקיים. -
SUBNET_NAME: השם של תת-הרשת החדשה שיצרתם. -
POD_RANGE_NAME: השם של טווח כתובות ה-IPv4 המשני של רשת המשנה שרוצים להשתמש בו לטווח כתובות ה-IPv4 של ה-Pod.
-
הוספת רשת משנה חדשה עם כמה טווחים של כתובות IPv4 של Pod
יוצרים תת-רשת חדשה באותו אזור ובאותה רשת VPC כמו האשכול. מגדירים את טווח כתובות ה-IPv4 הראשי של רשת המשנה לטווח כתובות IPv4 נוסף לצמתים.
לכל טווח כתובות IPv4 נוסף של Pod שצריך, מוסיפים טווח כתובות IPv4 משני חדש של רשת משנה לרשת המשנה שיצרתם בשלב הקודם.
כדי לעדכן את האשכול כך שישתמש ברשת המשנה הנוספת, משתמשים ב-CLI של gcloud. בדוגמה הבאה מוסיפים רשת משנה אחת עם שני טווחי כתובות IPv4 משניות של רשתות משנה עבור Pods.
gcloud container clusters update CLUSTER_NAME \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_1 \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_2מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול הקיים. -
SUBNET_NAME: השם של תת-הרשת החדשה שיצרתם. -
POD_RANGE_NAME_1ו-POD_RANGE_NAME_2: השמות של טווחי כתובות ה-IPv4 המשניים של רשת המשנה שבהם רוצים להשתמש לטווחי כתובות ה-IPv4 של ה-Pod.
-
אימות רשתות המשנה
לפי אשכול: כדי לראות את הפרטים של כל רשתות המשנה שמשויכות לאשכול, מריצים את הפקודה הבאה:
gcloud container clusters describe CLUSTER_NAME
מחליפים את CLUSTER_NAME בשם האשכול.
הפלט אמור להיראות כך:
ipAllocationPolicy:
additionalIPRangesConfig:
- podIpv4RangeNames:
- pod-range-1
subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets
לפי מאגר צמתים: כדי לראות את הפרטים של כל רשתות המשנה שמשויכות למאגר צמתים, מריצים את הפקודה הבאה:
gcloud container node-pools describe POOL_NAME \
--cluster=CLUSTER_NAME \
מחליפים את מה שכתוב בשדות הבאים:
-
POOL_NAME: השם של מאגר הצמתים. -
CLUSTER_NAME: שם האשכול.
הפלט אמור להיראות כך:
name: pool-1
networkConfig:
podRange: pod-range-1
subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets
הסרת תת-רשת שאינה ברירת מחדל
הסרה של רשת משנה שאינה ברירת מחדל מאשכול גורמת לאשכול להפסיק להשתמש בטווחים של רשת המשנה בכל מאגרי הצמתים של האשכול. להסרה יש את ההשפעות הבאות:
- אי אפשר להשתמש בטווח הכתובות הראשי של IPv4 ברשת המשנה שלא מוגדרת כברירת מחדל לטווח כתובות IPv4 של הצמתים.
- אי אפשר להשתמש בטווחי ה-IPv4 המשניים של תת-הרשת בתת-הרשת שאינה ברירת המחדל לטווחי IPv4 של Pod.
לפני שמסירים רשת משנה שאינה ברירת המחדל, צריך למחוק את כל מאגרי הצמתים שמשתמשים ברשת המשנה הזו. השלב הראשון המומלץ הוא להגדיר את רשת המשנה למצב ניקוז. רשתות משנה במצב ניקוז לא ייכללו בשימוש על ידי מאגרי צמתים שנוצרו לאחרונה. כך נמנעת בחירה של רשת המשנה שרוצים להסיר בפעולות של מידרוג אוטומטי של האשכול (כמו הגדלה של מאגר הצמתים), בלי להשבית את ההתאמה האוטומטית לעומס של האשכול כולו.
כדי להסיר רשת משנה:
- מגדירים את רשת המשנה שאינה ברירת המחדל לסטטוס 'הוצאה משימוש'. הפעולה הזו מונעת ממאגרי צמתים חדשים לבחור את רשת המשנה הזו, וזה שימושי כשמפעילים את התכונה להתאמה אוטומטית לעומס באשכול.
- מוחקים את כל מאגרי הצמתים שמשתמשים ברשת המשנה הזו.
- מסירים את רשת המשנה מהאשכול.
כדי להסיר רשת משנה שאינה ברירת המחדל מהאשכול, מריצים את הפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \
--remove-additional-ip-ranges=subnetwork=SUBNET_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
SUBNET_NAME: השם של רשת המשנה שרוצים להסיר מהאשכול.
כדי להגדיר את הסטטוס של רשת משנה שאינה ברירת המחדל ל'הוצאה משימוש', מריצים את הפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \
--drain-additional-ip-ranges=subnetwork=SUBNET_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
SUBNET_NAME: השם של רשת המשנה שרוצים להגדיר לה סטטוס ניקוז.
כדי לבטל את הניקוז של רשת משנה שאינה ברירת המחדל, מריצים את הפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \
--undrain-additional-ip-ranges=subnetwork=SUBNET_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
SUBNET_NAME: השם של רשת המשנה שרוצים לבטל את הניקוז שלה.
אחרי שמסירים מהאשכול רשת משנה שאינה ברירת המחדל, אפשר למחוק את רשת המשנה שאינה ברירת המחדל.
הסרה של טווח משני של כתובות IPv4 ברשת משנה שאינה ברירת המחדל
כשמסירים מאשכול טווח משני של כתובות IPv4 של רשת משנה שאינה ברירת המחדל, GKE מורה לאשכול לא להשתמש בטווח הזה לטווחים של כתובות IPv4 של Pod בכל מאגר צמתים. אם טווח המשנה של כתובות IPv4 שאינו ברירת המחדל שהסרתם הוא הטווח היחיד של רשת המשנה שאינה ברירת המחדל שמשמש את האשכול הזה, GKE גם מורה לאשכול להפסיק להשתמש בכתובת ה-IPv4 הראשית של רשת המשנה הזו עבור כתובות ה-IPv4 של הצמתים.
לפני שמסירים טווח משני של כתובות IPv4 ברשת משנה שאינה ברירת המחדל, צריך למחוק את כל מאגרי הצמתים שמשתמשים בטווח הזה לכתובות IPv4 של Pod.
כדי להסיר מטווח משני של IPv4 ברשת משנה שלא מוגדרת כברירת מחדל מהאשכול, מריצים את הפקודה הבאה:
gcloud container clusters update CLUSTER_NAME \
--remove-additional-ip-ranges=\
subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
SUBNET_NAME: השם של תת-הרשת שאינה ברירת המחדל. -
POD_RANGE_NAME: השם של טווח ה-IPv4 המשני של רשת המשנה שאינה מוגדרת כברירת מחדל שרוצים להסיר מהאשכול.
אחרי שמסירים מהאשכול טווח משני של כתובות IPv4 בתת-רשת שאינה ברירת המחדל, אפשר למחוק את הטווח המשני של כתובות IPv4 בתת-רשת שאינה ברירת המחדל.
שימוש בתת-רשתות נוספות ב-VPC משותף
לפני שממשיכים, חשוב לוודא שיש לכם:
- סביבת VPC משותפת שפועלת, שבה הפרויקט המארח והפרויקט של השירות מצורפים. הוראות מפורטות מופיעות במאמר הגדרת אשכול עם VPC משותף.
- אשכול GKE פעיל שנמצא בפרויקט השירות.
- כל ממשקי ה-API הנדרשים מופעלים בפרויקט המארח ובפרויקט השירות.
יוצרים רשת משנה נוספת בפרויקט המארח באותה רשת של אשכול ה-GKE:
gcloud compute networks subnets create ADDITIONAL_SUBNET_NAME \ --project HOST_PROJECT_ID \ --network shared-net \ --range 172.16.4.0/22 \ --region COMPUTE_REGION \ --secondary-range ADDITIONAL_SUBNET_NAME-services=172.16.16.0/20,ADDITIONAL_SUBNET_NAME-pods=172.20.0.0/14קבלת מדיניות IAM. כדי לאפשר לאשכול GKE בפרויקט השירות לגשת לרשתות משנה נוספות ב-VPC המשותף של הפרויקט המארח, צריך להגדיר את הרשאות ה-IAM הנדרשות. אם ההרשאות לא הוגדרו עדיין, ממשיכים לשלבים הבאים. אם ההרשאות כבר קיימות, לא צריך לעשות כלום.
gcloud compute networks subnets get-iam-policy ADDITIONAL_SUBNET_NAME \ --project HOST_PROJECT_ID \ --region COMPUTE_REGIONהפלט מכיל את השדה
etag. רושמים את הערךetag.יוצרים קובץ בשם ADDITIONAL_SUBNET_NAME-policy.yaml עם התוכן הבא:
bindings: - members: - serviceAccount:SERVICE_PROJECT_NUM@cloudservices.s3ns-system.iam.gserviceaccount.com - serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.s3ns-system.iam.gserviceaccount.com role: roles/compute.networkUser etag: ETAG_STRINGמחליפים את
ETAG_STRINGבערךetagשרשמתם קודם.מגדירים את מדיניות ה-IAM עבור רשת המשנה ADDITIONAL_SUBNET_NAME:
gcloud compute networks subnets set-iam-policy ADDITIONAL_SUBNET_NAME \ ADDITIONAL_SUBNET_NAME-policy.yaml \ --project HOST_PROJECT_ID \ --region COMPUTE_REGIONמאמתים את תת-הרשתות שניתן להשתמש בהן ואת טווחי כתובות ה-IP המשניות, כמו שמתואר במאמר אימות תת-רשתות שניתן להשתמש בהן ב-VPC משותף.
מעדכנים את אשכול ה-VPC המשותף של רשתות המשנה הנוספות:
gcloud container clusters update CLUSTER_NAME \
--project=SERVICE_PROJECT_ID \
--location=CONTROL_PLANE_LOCATION \
--additional-ip-ranges=subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/ADDITIONAL_SUBNET_NAME,pod-ipv4-range=ADDITIONAL_SUBNET_NAME-pods
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_NAME: השם של אשכול GKE בפרויקט השירות.
- ADDITIONAL_SUBNET_NAME: השם של רשת המשנה הנוספת שיצרתם בפרויקט המארח (למשל, tier-2).
- HOST_PROJECT_ID: מזהה פרויקט המארח.
- SERVICE_PROJECT_NUM: שם פרויקט השירות.
- COMPUTE_REGION: האזור שבו נמצאת רשת המשנה.
כך תוכלו להשתמש ברשתות המשנה הנוספות בסביבת VPC משותף.
המאמרים הבאים
- מידע נוסף על אשכולות המותאמים ל-VPC
- קראו עוד על איך להוסיף טווחי כתובות IPv4 של Pod.
- מידע נוסף על אופטימיזציה של הקצאת כתובות IP על ידי הגדרת מספר מקסימלי של Pods לכל צומת