יצירת אשכול מבוסס-נתיבים

בדף הזה מוסבר איך ליצור אשכול מבוסס-מסלולים ב-Google Kubernetes Engine ‏ (GKE).

סקירה כללית

ב-GKE, אפשר להבחין בין אשכולות לפי האופן שבו הם מנתבים תנועה מ-Pod אחד ל-Pod אחר. אשכול שמשתמש בGoogle Cloud נתיבים נקרא אשכול מבוסס-נתיבים. אשכול שמשתמש בכתובות IP של כינוי נקרא אשכול המותאם ל-VPC.

VPC-native הוא הסוג המומלץ, והוא ברירת המחדל באשכולות חדשים בגרסאות GKE‏ 1.21.0-gke.1500 ואילך. כדי ליצור אשכול מבוסס-נתיבים, צריך להשבית באופן מפורש את האפשרות של רשת VPC מקורית.

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

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

יצירת אשכול מבוסס-נתיבים

אפשר ליצור אשכול מבוסס-מסלולים באמצעות CLI של gcloud או מסוףGoogle Cloud .

gcloud

כדי ליצור אשכול מבוסס-נתיבים, כוללים את הדגל --no-enable-ip-alias בפקודה ליצירת האשכול:

gcloud container clusters create CLUSTER_NAME --no-enable-ip-alias

מחליפים את CLUSTER_NAME בשם שבוחרים לאשכול.

המסוף

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר אל יצירת אשכול Kubernetes

  2. מזינים שם לאשכול.

  3. בחלונית הניווט, בקטע Cluster, לוחצים על Networking.

  4. בקטע Advanced networking options (אפשרויות מתקדמות של רשת), מבטלים את הסימון בתיבת הסימון Enable VPC-native traffic routing (uses alias IP) (הפעלת ניתוב תנועה מקורי של VPC (שימוש בכתובת IP של כינוי)).

  5. לוחצים על יצירה.

יצירת אשכול מבוסס-מסלולים ובחירת טווח כתובות ה-IP של מישור הבקרה

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

gcloud

יצירת אשכול עם Private Service Connect:

gcloud container clusters create CLUSTER_NAME --no-enable-ip-alias \
    --private-endpoint-subnetwork=SUBNET_NAME \
    --location=CONTROL_PLANE_LOCATION

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

  • CLUSTER_NAME: השם של אשכול GKE.
  • SUBNET_NAME: השם של תת-רשת קיימת.
  • CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.

המסוף

דרישות מוקדמות

כדי להקצות רשת משנה למישור הבקרה של אשכול חדש, קודם צריך להוסיף רשת משנה.

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

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר אל יצירת אשכול Kubernetes

  2. מזינים שם לאשכול.

  3. בחלונית הניווט, בקטע Cluster, לוחצים על Networking.

  4. בקטע Control Plane Access, מגדירים את הגישה לנקודות הקצה של מישור הבקרה.

  5. בקטע Advanced networking options, מסמנים את התיבה Override control plane's default private endpoint subnet.

  6. ברשימה Private endpoint subnet, בוחרים את רשת המשנה שיצרתם.

  7. מבטלים את הסימון של התיבה הפעלת ניתוב תעבורה מקורי של VPC (שימוש בכתובת IP של כינוי).

  8. לוחצים על יצירה.

אימות השימוש במסלולים באשכול

gcloud

מציגים את רשימת הצמתים באשכול:

kubectl get nodes

הפלט מציג את השמות של הצמתים:

NAME                                 STATUS   ...     AGE    VERSION
gke-xxx-default-pool-83e239a7-kcg8   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-qm6b   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-wnrq   Ready    ...     42m    1.9.7-gke.6

כדי לראות את רשימת המסלולים:

gcloud compute routes list

בפלט הזה, בעמודה NEXT_HOP, מחפשים את השם של אחד מצמתי האשכול:

NAME                 NETWORK        DEST_RANGE         NEXT_HOP
...
[ROUTE_NAME]         default        10.24.0.0/24       [YOUR_NODE_NAME]
...

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

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לבדוק.

  3. בדף פרטי האשכול, לוחצים על הכרטיסייה צמתים.

  4. בקטע Nodes (צמתים), רושמים את השמות של הצמתים.

  5. נכנסים לדף Routes במסוף Google Cloud .

    לדף Routes

  6. ברשימת המסלולים, בעמודה Next hop (הניתוב הבא), מחפשים את השם של אחד מצמתי האשכול. לוחצים על שם המסלול בשורה הרלוונטית.

  7. בדף פרטי המסלול, בודקים את הקטע הניתוב הבא כדי לוודא שהמסלול מספק ניתוב הבא לכל מנה שמועברת לטווח כתובות של Pod מסוים.

‫Pods per node

באשכול מבוסס-מסלולים, לכל צומת מוקצה טווח של כתובות IP מסוג ‎ /24 בשביל ה-Pods. בטווח ‎ /24, יש 256 כתובות, אבל המספר המקסימלי של Pods לכל צומת הוא 110. ב-Kubernetes יש בערך פי שניים יותר כתובות IP זמינות ממספר ה-Pods האפשרי, ולכן המערכת יכולה לצמצם את השימוש החוזר בכתובות IP כשמוסיפים Pods לצומת ומסירים ממנו Pods.

טווח כתובות של ה-Pod

לאשכול מבוסס-ניתוב יש טווח של כתובות IP שמשמשות ל-Pods ול-Services. למרות שהטווח משמש גם ל-Pods וגם ל-Services, הוא נקרא טווח כתובות ה-Pods. החלק האחרון של טווח הכתובות של ה-Pod, שמתחיל ב-‎ /20, משמש לשירותים. טווח ‎ /20 כולל ‎212 = 4,096 כתובות. לכן, 4,096 כתובות משמשות לשירותים, והשאר משמשות ל-Pods.

בפלט של הפקודה, טווח הכתובות של ה-Pod נקרא clusterIpv4Cidr, וטווח הכתובות שמשמשות לשירותים נקרא servicesIpv4Cidr. לדוגמה, הפלט של gcloud container clusters describe כולל פלט שדומה לזה:

clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20

טווח הכתובות של ה-Pod יכול להיות מכל בלוק RFC 1918: ‏10.0.0.0/8,‏ 172.16.0.0/12 או 192.168.0.0/16.

אפשר להתאים אישית את טווח הכתובות של ה-Pod על ידי ציון טווח CIDR. לדוגמה, אפשר לציין את הטווח 10.96.0.0/16.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --no-enable-ip-alias \
    --cluster-ipv4-cidr 10.96.0.0/16

מחליפים את CLUSTER_NAME בשם שבוחרים לאשכול.

המסוף

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר אל יצירת אשכול Kubernetes

  2. מזינים שם לאשכול.

  3. בחלונית הניווט, בקטע Cluster, לוחצים על Networking.

  4. בקטע Advanced networking options (אפשרויות מתקדמות של רשת), מבטלים את הסימון בתיבת הסימון Enable VPC-native traffic routing (uses alias IP) (הפעלת ניתוב תנועה מקורי של VPC (שימוש בכתובת IP של כינוי)).

  5. בשדה Pod address range (טווח כתובות של פוד), מזינים 10.96.0.0/16.

  6. לוחצים על יצירה.

שיקולים לגבי גודל האשכול

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

בטבלה הבאה מוסבר איך לבחור טווחי כתובות שמתאימים לאשכול עם 900 צמתים:

טווח הדרכה
צמתים

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

לדוגמה, אם אתם מתכננים ליצור אשכול עם 900 צמתים, רשת המשנה של האשכול צריכה להיות בגודל של לפחות ‎ /22. טווח ‎ /22 כולל ‎210 = 1024 כתובות. מפחיתים את 4 כתובות ה-IP שלא ניתן להשתמש בהן, ומקבלים 1,020, שזה מספיק ל-900 הצמתים.

טווח כתובות של ה-Pod

לכל צומת יש טווח של כתובות IP מסוג /24 עבור Pods. בטווח ‎ /24 יש 28 = 256 כתובות. חשוב לזכור ש-4,096 כתובות בטווח הכתובות של ה-Pod משמשות לשירותים. החלק הנותר של טווח כתובות ה-Pod משמש ל-Pods, והוא צריך להיות גדול מספיק כדי להכיל את מספר הצמתים כפול 256 כתובות.

נניח שאתם מתכננים ליצור אשכול עם 900 צמתים. אז צריך 900 x 256 = 230,400 כתובות בשביל ה-Pods. נניח שיש לכם טווח כתובות של פוד /14. טווח ‎ /14 כולל 218 = 262,144 כתובות. מפחיתים את 4,096 הכתובות שמשמשות לשירותים, ומקבלים 258,048, שזה מספיק ל-900 צמתים.

ערכי ברירת מחדל ומגבלות לגבי גדלי טווח

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

טווח ברירת מחדל של גודל גודל מינימלי גודל מקסימלי
צמתים

‫‎/20, שיש בו 212 = 4,096 כתובות. מפחיתים 4 כתובות שמורות, ומקבלים 4092 כתובות לצמתים.

‫‎/29, שיש בו 23 = 8 כתובות. מחסרים 4 כתובות שמורות ומקבלים 4 כתובות לצמתים.

‫‎/7, שיש בו 225 כתובות. זה בערך 33 מיליון כתובות לצמתים.

טווח כתובות של ה-Pod

‫‎/14, שיש בו 218 = 262,144 כתובות.

‫‎/19, שיש לה 213 = 8,192 כתובות.

‫‎/9, שכולל 223 = 8,388,608 כתובות.

הגבלות

  • אי אפשר להעביר אשכול שמותאם ל-VPC לאשכול מבוסס-נתיבים.
  • אי אפשר להעביר אשכול מבוסס-נתיבים לאשכול מקורי ב-VPC.
  • אפשר להשתמש בכתובות בטווח RFC 1918 רק עבור כתובות IP פרטיות באשכולות מבוססי-מסלולים. באשכולות המותאמים ל-VPC יש טווח גדול יותר של כתובות שניתן להשתמש בהן.
  • באשכולות מבוססי-נתיבים אין תמיכה ברשתות עם פרוטוקול כפול.

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