בדף הזה מוסבר איך ליצור אשכול מבוסס-נתיבים ב-Google Kubernetes Engine (GKE).
סקירה כללית
ב-GKE, אפשר להבחין בין אשכולות לפי האופן שבו הם מנתבים תנועה מ-Pod אחד ל-Pod אחר. אשכול שמשתמש בGoogle Cloud נתיבים נקרא אשכול מבוסס-נתיבים. אשכול שמשתמש בכתובות IP חלופיות נקרא אשכול המותאם ל-VPC.
VPC-native הוא הסוג המומלץ, והוא מוגדר כברירת מחדל לאשכולות חדשים בגרסאות GKE 1.21.0-gke.1500 ואילך. כדי ליצור אשכול מבוסס-נתיבים, צריך להשבית באופן מפורש את האפשרות VPC-native.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-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 בשם שבוחרים לאשכול.
המסוף
נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .
מזינים שם לאשכול.
בחלונית הניווט, בקטע Cluster, לוחצים על Networking.
בקטע Advanced networking options, מבטלים את הסימון של התיבה Enable VPC-native traffic routing (uses alias IP).
לוחצים על יצירה.
יצירת אשכול מבוסס-נתיבים ובחירת טווח כתובות ה-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 של מישור הבקרה
נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .
מזינים שם לאשכול.
בחלונית הניווט, בקטע Cluster, לוחצים על Networking.
בקטע Control Plane Access, מגדירים את הגישה לנקודות הקצה של מישור הבקרה.
בקטע Advanced networking options, מסמנים את התיבה Override control plane's default private endpoint subnet.
ברשימה Private endpoint subnet, בוחרים את רשת המשנה שיצרתם.
מבטלים את הסימון של התיבה Enable VPC-native traffic routing (uses alias IP).
לוחצים על יצירה.
איך מוודאים שהאשכול משתמש בנתיבים
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 מסוים.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לבדוק.
בדף Cluster details, לוחצים על הכרטיסייה Nodes.
בקטע Nodes, שימו לב לשמות של הצמתים.
נכנסים לדף Routes במסוף Google Cloud .
ברשימת המסלולים, בעמודה Next hop, מחפשים את השם של אחד מהצמתים באשכול. לוחצים על שם הנתיב בשורה הזו.
בדף Route details, בודקים את הקטע Next hop כדי לוודא שהמסלול מספק הצעד הבא לכל חבילה שמיועדת לטווח כתובות Pod מסוים.
פודים לכל צומת
באשכול מבוסס-נתיבים, לכל צומת מוקצה טווח של כתובות IP ב-/24 לפודים. בטווח /24 יש 256 כתובות, אבל המספר המקסימלי של Pods לכל צומת הוא 110. כשיש בערך פי שניים כתובות IP זמינות מאשר Pods אפשריים, Kubernetes יכול לצמצם את השימוש החוזר בכתובות IP כשמוסיפים Pods לצומת ומסירים אותם ממנו.
טווח הכתובות של Pod
לאשכול מבוסס-נתיבים יש טווח של כתובות IP שמשמשות ל-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 בשם שבוחרים לאשכול.
המסוף
נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .
מזינים שם לאשכול.
בחלונית הניווט, בקטע Cluster, לוחצים על Networking.
בקטע Advanced networking options, מבטלים את הסימון של התיבה Enable VPC-native traffic routing (uses alias IP).
בשדה Pod address range, מזינים
10.96.0.0/16.לוחצים על יצירה.
שיקולים לגבי גודל האשכול
המספר המקסימלי של צמתים, Pods ו-Services באשכול GKE נתון נקבע לפי גודל רשת המשנה של האשכול וגודל טווח הכתובות של ה-Pod. אי אפשר לשנות את גודל טווח הכתובות של Pod אחרי שיוצרים אשכול. כשיוצרים אשכול, חשוב לבחור טווח כתובות Pod שיהיה גדול מספיק כדי להכיל את הגידול הצפוי של האשכול.
בטבלה הבאה מוסבר איך לבחור טווחי כתובות שמתאימים לאשכול עם 900 צמתים:
| טווח | הדרכה |
|---|---|
| צמתים |
כתובות ה-IP של הצמתים נלקחות מהטווח הראשי של רשת המשנה של האשכול. רשת המשנה של האשכול צריכה להיות גדולה מספיק כדי להכיל את המספר הכולל של הצמתים באשכול. לדוגמה, אם אתם מתכננים ליצור אשכול של 900 צמתים, גודל רשת המשנה של האשכול צריך להיות לפחות /22. בטווח /22 יש 210 = 1,024 כתובות. מפחיתים את 4 כתובות ה-IP שלא ניתן להשתמש בהן, ומקבלים 1,020, שזה מספיק ל-900 הצמתים. |
| טווח הכתובות של Pod |
לכל צומת יש טווח /24 של כתובות IP לפודים. טווח של /24 כולל 28 = 256 כתובות. זכרו ש-4,096 כתובות בטווח הכתובות של Pod משמשות לשירותים. החלק הנותר של טווח הכתובות של Pod משמש לפודים, והוא חייב להיות גדול מספיק כדי להכיל את מספר הצמתים כפול 256 כתובות. נניח שאתם מתכננים ליצור אשכול עם 900 צמתים. אז צריך 900 x 256 = 230,400 כתובות לפודים. עכשיו נניח שיש לכם טווח כתובות Pod של /14. טווח של /14 כולל 218 = 262,144 כתובות. מפחיתים את 4,096 הכתובות שמשמשות לשירותים, ומקבלים 258,048, שזה מספיק ל-900 צמתים. |
ברירות מחדל ומגבלות על גודל הטווחים
בטבלה הבאה מפורטים הגדלים המינימליים, המקסימליים וברירת המחדל של רשת המשנה של האשכול ושל טווח הכתובות של ה-Pod.
| טווח | ברירת מחדל של גודל | גודל מינימלי | גודל מקסימלי |
|---|---|---|---|
| צמתים | /20, שכולל 212 = 4,096 כתובות. אם מחסירים 4 כתובות שמורות, מקבלים 4,092 כתובות לצמתים. |
/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 יש טווח גדול יותר של כתובות שניתן להשתמש בהן.
- אשכולות מבוססי-נתיבים לא תומכים ברשתות עם מחסנית כפולה.