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

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

בפלט הזה, המסלול מספק את הצעד הבא לכל מנה (packet) שמיועדת לטווח כתובות מסוים של 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 בשביל הפודים. בטווח ‎ /24 יש 256 כתובות, אבל המספר המקסימלי של Pods לכל צומת הוא 110. ב-Kubernetes יש בערך פי שניים יותר כתובות IP זמינות ממספר ה-Pods האפשרי, ולכן המערכת יכולה לצמצם את השימוש החוזר בכתובות IP כשמוסיפים ומסירים 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, מזינים 10.96.0.0/16.

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

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

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

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

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

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

לדוגמה, אם אתם מתכננים ליצור אשכול עם 900 צמתים, רשת המשנה של האשכול צריכה להיות בגודל ‎ /22 לפחות. טווח ‎ /22 כולל 210 = 1,024 כתובות. מפחיתים את 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 יש טווח גדול יותר של כתובות שניתן להשתמש בהן.
  • באשכולות מבוססי-נתיבים אין תמיכה ברשתות עם פרוטוקול כפול.

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