בדף הזה מתוארות תכונות הרשת של Google Distributed Cloud במודל מחובר, כולל רשתות משנה, סשנים של BGP Peering ואיזון עומסים.
ההליכים בדף הזה רלוונטיים רק למתלים של Google Distributed Cloud במודל מחובר, למעט איזון עומסים, שרלוונטי גם למתלים של Google Distributed Cloud במודל מחובר וגם לשרתים של Google Distributed Cloud במודל מחובר.
רשתות עם מחסנית כפולה של IPv4/IPv6
Distributed Cloud Connected מאפשר ליצור אשכולות שמשתמשים ברשתות עם תמיכה כפולה ב-IPv4/IPv6. כדי להשתמש בפונקציונליות הזו, צריך להזמין את Distributed Cloud עם הפעלה של רשתות IPv4/IPv6 כפולות. אי אפשר להגדיר מחדש פריסה קיימת של Distributed Cloud שמבוססת על IPv4 בלבד ומחוברת לרשת עם פרוטוקול כפול IPv4/IPv6. כדי לבדוק אם הפריסה תומכת ברשתות עם מחסנית כפולה של IPv4/IPv6, פועלים לפי ההוראות במאמר קבלת מידע על מכונה ובודקים את הערך שמוחזר של התווית dualstack_capable.
בצביר עם תמיכה כפולה, מחסנית IPv4 משתמשת במצב איים, ומחסנית IPv6 משתמשת במצב שטוח. לכן, צריך לציין כתובות IPv6 נפרדות של צמתים ושל פודים ששייכות לאותה תת-רשת. מידע נוסף זמין במאמר בנושא מודלים של רשתות: שטוח לעומת איים.
לדוגמה, אם הצמתים המחוברים של Distributed Cloud ומכונות מקומיות אחרות נמצאים באותו דומיין Layer 2, אפשר לציין את בלוקי ה-CIDR של IPv6 עבור האשכול באופן הבא:
| מטרת החסימה | חסימת טווח | גודל הבלוק |
|---|---|---|
| רשת משנה של IPv6 | fd12::/56 | 2^72 |
| קבוצת Pod | fd12::1:0/59 | 2^69 |
| שירותים | fd12::2:0/59 | 2^69 |
בדוגמה הזו אנחנו מניחים את הפרטים הבאים:
- בלוקי ה-CIDR של הצומת, ה-Pod והשירות שייכים לרשת העל fd:12::/56.
- כתובות ה-IP של הצומת, ה-Pod והשירות הן תת-רשתות של בלוק ה-CIDR שצוין.
- אף אחת מרשתות המשנה לא חופפת.
רשתות עם סטאק כפול של IPv4/IPv6 דורשות איזון עומסים בשכבה 2 עבור שיוך BGP של IPv4, ואיזון עומסים בשכבה 3 עבור שיוך IPv6. מידע נוסף זמין במאמר בנושא איזון עומסים.
מידע נוסף על פריסת עומסי עבודה באשכולות עם מחסנית כפולה של IPv4/IPv6 זמין במאמרים הבאים:
הפעלת Distributed Cloud Edge Network API
כדי להגדיר רשת בפריסה מחוברת של Distributed Cloud, צריך להפעיל את Distributed Cloud Edge Network API. כדי לעשות זאת, צריך לבצע את השלבים שבקטע הזה. כברירת מחדל, שרתים של Distributed Cloud במודל מחובר נשלחים עם Distributed Cloud Edge Network API שכבר מופעל.
המסוף
במסוף Google Cloud , נכנסים לדף Distributed Cloud Edge Network API.
לוחצים על Enable.
gcloud
משתמשים בפקודה הבאה:
gcloud services enable edgenetwork.googleapis.com
הגדרת רשת ב-Distributed Cloud במודל מחובר
בקטע הזה מוסבר איך להגדיר את רכיבי הרשת בפריסה המחוברת של Distributed Cloud.
המגבלות הבאות חלות על שרתים מחוברים של Distributed Cloud:
- אפשר להגדיר רק רשתות משנה, וגם
- רשתות משנה תומכות רק במזהי VLAN. אין תמיכה ברשתות משנה שמבוססות על CIDR.
הגדרת רשת טיפוסית ל-Distributed Cloud Connected כוללת את השלבים הבאים:
אופציונלי: מאתחלים את הגדרות הרשת של אזור היעד, אם צריך.
יוצרים רשת.
יוצרים רשת משנה אחת או יותר בתוך הרשת.
מקימים סשנים של BGP peering בכיוון צפון עם נתבי ה-PE באמצעות חיבורי ה-Interconnect המתאימים.
יוצרים סשנים של BGP peering לכיוון דרום עם הפודים שמריצים את עומסי העבודה באמצעות רשתות המשנה המתאימות.
אופציונלי: הקמת סשנים של BGP peering ב-loopback לזמינות גבוהה.
בודקים את ההגדרה.
מחברים את ה-Pods לרשת.
אתחול תצורת הרשת של אזור Distributed Cloud
צריך לאתחל את הגדרת הרשת של אזור מחובר ב-Distributed Cloud מיד אחרי התקנת החומרה של Distributed Cloud connected במקום. אתחול הגדרות הרשת של אזור הוא תהליך חד-פעמי.
כשמפעילים את ההגדרה הראשונית של הרשת באזור, נוצר נתב ברירת מחדל בשם default ורשת ברירת מחדל בשם default. הוא גם מגדיר את נתב default ליצירת קשר עם כל החיבורים ההדדיים שביקשתם כשביצעתם הזמנה של ציוד מחובר ל-Distributed Cloud, על ידי יצירת קבצים מצורפים מתאימים של חיבורים הדדיים. ההגדרה הזו מספקת לפריסה המחוברת של Distributed Cloud קישוריות בסיסית של העלאה לרשת המקומית.
הוראות מפורטות מופיעות במאמר בנושא איך מאתחלים את הגדרת הרשת של אזור.
יצירת רשת
כדי ליצור רשת חדשה, פועלים לפי ההוראות במאמר יצירת רשת. בנוסף, אתם צריכים ליצור לפחות רשת משנה אחת בתוך הרשת כדי לאפשר לצמתים מחוברים של Distributed Cloud להתחבר לרשת.
יצירת רשת משנה אחת או יותר
כדי ליצור רשת משנה, פועלים לפי ההוראות במאמר בנושא יצירת רשת משנה. כדי שהצמתים יוכלו לגשת לרשת, צריך ליצור ברשת לפחות רשת משנה אחת. רשת ה-VLAN שמתאימה לכל רשת משנה שיוצרים זמינה אוטומטית לכל הצמתים באזור.
בשרתים שמחוברים ל-Distributed Cloud, אפשר להגדיר רק רשתות משנה באמצעות מזהי VLAN. אין תמיכה ברשתות משנה שמבוססות על CIDR.
יצירת סשנים של קישור BGP בין רשתות שכנות (peering) בכיוון צפון
כשיוצרים רשת ורשתות משנה תואמות, הן מקומיות לאזור המחובר של Distributed Cloud. כדי להפעיל קישוריות יוצאת, צריך ליצור לפחות סשן אחד של BGP peering צפונה בין הרשת לבין נתבי הקצה של ה-peering.
כדי ליצור סשן BGP peering צפונה:
מפרטים את החיבורים הזמינים באזור ואז בוחרים את חיבור ה-Interconnect שאליו רוצים לטרגט את סשן ה-Peering הזה.
יוצרים חיבור אחד או יותר ל-Interconnect ב-Interconnect שנבחר. קבצים מצורפים של קישוריות בין-אזורים מקשרים את הנתב שיוצרים בשלב הבא לקישוריות בין-אזורים שנבחרה.
יצירת נתב הנתב הזה מעביר תעבורה בין הקישוריות לבין הרשת שלכם באמצעות חיבורי הקישוריות שיצרתם בשלב הקודם.
מוסיפים ממשק לנתב לכל קובץ מצורף של קישוריות הדדית שיצרתם קודם בהליך הזה. לכל ממשק, משתמשים בכתובת ה-IP של מתג ה-ToR המתאים במתלה המחובר ל-Distributed Cloud. הוראות מפורטות מופיעות במאמר יצירת סשן של שיתוף פעולה בין רשתות (Peering) בכיוון צפון.
מוסיפים עמית לכל ממשק שיצרתם בנתב בשלב הקודם.
הקמת סשנים של קישור BGP בין רשתות שכנות (peering) מדרום לצפון
כדי להפעיל קישוריות נכנסת לעומסי העבודה מהרשת המקומית, צריך ליצור סשן אחד או יותר של BGP peering לכיוון דרום בין נתבי ה-peering edge לבין רשת המשנה שאליה שייכים הפודים. כתובת ה-IP של השער לכל רשת משנה היא כתובת ה-IP של מתג ה-ToR התואם במתלה המחובר של Distributed Cloud.
כדי ליצור סשן BGP peering מדרום לצפון:
מוסיפים ממשק לנתב ברשת היעד לכל רשת משנה שרוצים להקצות לה קישוריות נכנסת. הוראות מופיעות במאמר בנושא יצירת סשן של שיתוף פעולה עם שרתים במורד הזרם.
מוסיפים עמית לכל ממשק שיצרתם בנתב בשלב הקודם.
אופציונלי: יצירת סשנים של קישור BGP בין רשתות שכנות מסוג loopback
כדי להפעיל קישוריות בזמינות גבוהה בין עומסי העבודה לבין הרשת המקומית, אפשר ליצור סשן של BGP peering מסוג loopback בין הפוד של היעד לבין שני מתגי ToR במתלה שמחובר ל-Distributed Cloud. סשן של peering מסוג loopback יוצר שני סשנים נפרדים של peering עבור ה-pod, אחד עם כל מתג ToR.
כדי ליצור סשן BGP peering של Loopback:
מוסיפים ממשק מסוג loopback לנתב ברשת היעד. הוראות מופיעות במאמר בנושא יצירת סשן של שיתוף פעולה מסוג Loopback.
מוסיפים עמית לממשק הלולאה החוזרת.
בדיקת ההגדרה
כדי לבדוק את ההגדרה של רכיבי הרשת שיצרתם:
חיבור של ה-Pods לרשת
כדי לחבר את ה-Pods לרשת ולהגדיר פונקציות רשת מתקדמות, צריך לפעול לפי ההוראות במאמר בנושא Network Function operator. הפונקציונליות הזו לא זמינה לעומסי עבודה של מכונות וירטואליות.
(אופציונלי) הגדרת בידוד של רשת האשכול
Distributed Cloud במודל מחובר תומך בבידוד של רשתות אשכולות. צמתים
שהוקצו לאשכול מבודד ברשת לא יכולים לתקשר עם צמתים אחרים באותו אזור מחובר של Distributed Cloud. כדי להפעיל בידוד של רשת האשכול, משתמשים בדגל --enable-cluster-isolation כשיוצרים או משנים אשכול.
מידע נוסף מופיע במאמר בנושא יצירה וניהול של אשכולות.
(אופציונלי) הגדרת מצב אי
Distributed Cloud Connected תומך במצב איים עבור מערכת המשנה של הרשת הווירטואלית. מצב Island מאפשר לציין טווח כתובות IP מבודד בממשק הרשת המשני של Pod. טווח הכתובות המבודד הזה לא תלוי בטווח הכתובות של ה-VLAN של ממשק הרשת הראשי. לפודים שהוגדרו למצב איים מוקצות רק כתובות מטווח הכתובות המבודד הזה של 'האי'. מידע נוסף זמין במאמר בנושא מודלים של רשתות: שטוח לעומת אי.
טווח כתובות ה-IP המבודד שאתם מציינים למצב איים לא יכול להיות זהה לטווחים הבאים של כתובות IP:
- ה-CIDR של ה-VLAN הראשי לכל רשת שמוגדרת באשכול
- טווח כתובות ה-IP הווירטואליות של מאזן העומסים שצוין בהערה
networking.gke.io/gdce-lb-service-vip-cidrsבמשאבNetwork - טווחי כתובות ה-IP שמשמשים למצב איים ברשתות אחרות באשכול
הגדרת מצב אי
כדי להגדיר מצב איים ברמת ה-Pod, מוסיפים את ההערה networking.gke.io/gdce-pod-cidr למשאב המותאם אישית Network המתאים. מגדירים את ערך ההערה לטווח כתובות ה-IP המבודד של היעד
ומחילים את משאב Network ששונה על האשכול. לדוגמה:
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
צריך גם להגדיר את הפרמטרים הבאים:
- הערך של
typeחייב להיותL3. - הערך של
IPAMModeחייב להיותInternal.
לדוגמה:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: my-network
annotations:
# Enable island mode and specify the isolated address range.
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
# Specify the VLAN ID for this secondary network.
networking.gke.io/gdce-vlan-id: "561"
# Specify the CIDR block for load balancer services on this network.
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
spec:
# Network type must be L3 for island mode.
type: L3
# IPAMMode must be Internal for island mode.
IPAMMode: Internal
nodeInterfaceMatcher:
interfaceName: gdcenet0.561 # The name for the target network interface.
gateway4: 172.20.5.177 # Gateway IP address; must be unique in this CR.
externalDHCP4: false
dnsConfig:
nameservers:
- 8.8.8.8
כדי לוודא שמצב 'אי' מופעל:
יוצרים Pod לבדיקה ומחילים אותו על האשכול. לדוגמה:
apiVersion: v1 kind: Pod metadata: name: island-pod-tester annotations: networking.gke.io/interfaces: '[{"interfaceName":"eth1","network":"test-network-vlan561"}]' networking.gke.io/default-interface: "eth1" spec: containers: - name: sample-container image: busybox command: ["/bin/sh", "-c", "sleep 3600"]קבלת כתובת ה-IP של ה-Pod:
kubectl get pod island-pod-tester -o wideהפקודה מחזירה את כתובת ה-IP של ה-Pod, שנמצאת בטווח הכתובות המבודד שציינתם.
הגדרת מצב אי עם שירות ClusterIP
כדי להגדיר מצב איים באמצעות שירות ClusterIP, צריך לבצע את השלבים שבקטע הקודם, ואז להוסיף את ההערה networking.gke.io/gke-gateway-clusterip-cidr למשאב Network ולהגדיר את הערך שלה בהתאם לצרכים העסקיים. טווח הכתובות שצוין במשאב Network לא יכול להיות חופף. לדוגמה:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
annotations:
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
networking.gke.io/gdce-vlan-id: "561"
networking.gke.io/gke-gateway-clusterip-cidr: 10.20.1.0/28
name: test-network-vlan561
spec:
IPAMMode: Internal
dnsConfig:
nameservers:
- 8.8.8.8
externalDHCP4: false
gateway4: 172.20.5.177
nodeInterfaceMatcher:
interfaceName: gdcenet0.561
type: L3
איזון עומסים
Distributed Cloud מגיע עם פתרונות איזון העומסים הבאים:
- איזון עומסים בשכבה 2 באמצעות MetalLB
- איזון עומסים בשכבה 3 באמצעות מאזני עומסים של Google Distributed Cloud
פתרונות איזון העומסים שמוטמעים ב-Distributed Cloud Connected לא יכולים להשתמש בקידומות חופפות של כתובות IP וירטואליות של שירות Kubernetes. אם יש לכם פריסה קיימת של Distributed Cloud שמחוברת ומשתמשת באיזון עומסים של MetalLB בשכבה 2, ואתם רוצים לעבור לאיזון עומסים בשכבה 3 באמצעות מאזני עומסים של Google Distributed Cloud, אתם צריכים להשתמש בקידומת של כתובת IP וירטואלית של שירות שלא חופפת לקידומת שבה נעשה שימוש בהגדרת איזון העומסים של MetalLB בשכבה 2.
איזון עומסים בשכבה 2 באמצעות MetalLB
Distributed Cloud מגיע עם פתרון משולב לאיזון עומסים ברשת שמבוסס על MetalLB במצב Layer 2. אתם יכולים להשתמש בפתרון הזה כדי לחשוף שירותים שפועלים באזור של Distributed Cloud לעולם החיצוני באמצעות כתובות IP וירטואליות (VIP) באופן הבא:
- מנהל הרשת מתכנן את טופולוגיית הרשת ומציין את רשת המשנה הנדרשת של כתובות IPv4 ו-IPv6 וירטואליות כשמזמינים את Distributed Cloud. Google מגדירה את הציוד של Distributed Cloud בהתאם לפני המסירה.
חשוב לזכור:
- רשת המשנה של כתובות ה-VIP משותפת לכל אשכולות Kubernetes שפועלים באזור Distributed Cloud.
- מסלול לרשת המשנה של ה-VIP המבוקש מפורסם באמצעות סשנים של BGP בין אזור Distributed Cloud לבין הרשת המקומית.
- הכתובות הראשונה (מזהה הרשת), השנייה (שער ברירת המחדל) והאחרונה (כתובת השידור) ברשת המשנה שמורות לפונקציונליות של מערכת הליבה. אל תקצו את הכתובות האלה למאגרי הכתובות של הגדרות MetalLB.
- כל אשכול חייב להשתמש בטווח VIP נפרד שנמצא בתוך רשת המשנה של ה-VIP שהוגדרה.
- כשיוצרים אשכול באזור Distributed Cloud, האדמין של האשכול מציין את מאגרי הכתובות של הפודים ושירות ClusterIP באמצעות סימון CIDR. מנהל הרשת מספק את רשת המשנה המתאימה של כתובת ה-VIP לאדמין של האשכול.
LoadBalancer אחרי שיוצרים את האשכול, האדמין של האשכול מגדיר את מאגרי כתובות ה-VIP המתאימים. כשיוצרים את האשכול, צריך לציין את מאגרי כתובות ה-VIP באמצעות הדגל
--external-lb-address-pools. הדגל מקבל קובץ עם מטען ייעודי (payload) בפורמט YAML או JSON, בפורמט הבא:addressPools: - name: foo addresses: - 10.2.0.212-10.2.0.221 - fd12::4:101-fd12::4:110 avoid_buggy_ips: true manual_assign: false - name: bar addresses: - 10.2.0.202-10.2.0.203 - fd12::4:101-fd12::4:102 avoid_buggy_ips: true manual_assign: falseכדי לציין מאגר כתובות VIP, צריך לספק את הפרטים הבאים במטען הייעודי (payload):
-
name: שם תיאורי שמזהה באופן ייחודי את מאגר כתובות ה-IP הווירטואליות הזה. -
addresses: רשימה של כתובות IPv4 ו-IPv6, טווחי כתובות ורשתות משנה שייכללו במאגר הכתובות הזה. -
avoid_buggy_ips: החרגה של כתובות IP שמסתיימות ב-.0או ב-.255. -
manual_assign: מאפשר להקצות כתובות באופן ידני מהמאגר הזה בהגדרות של שירות היעדLoadBalancer, במקום שהן יוקצו אוטומטית על ידי בקר MetalLB.
מידע נוסף על הגדרת מאגרי כתובות VIP זמין במאמר בנושא ציון מאגרי כתובות במסמכי התיעוד של MetalLB.
-
האדמין של האשכול יוצר את שירותי
LoadBalancerKubernetes המתאימים.
צמתים של Distributed Cloud במאגר צמתים יחיד חולקים דומיין משותף בשכבה 2, ולכן הם גם צמתים של מאזן העומסים MetalLB.
איזון עומסים בשכבה 3 באמצעות מאזני עומסים של Google Distributed Cloud
Google Distributed Cloud במודל מחובר כולל פתרון משולב לאיזון עומסים ברשת שמבוסס על מאזני העומסים המשולבים של Google Distributed Cloud במצב Layer 3, שמוגדרים כרכיבי BGP. אתם יכולים להשתמש בפתרון הזה כדי לחשוף שירותים שפועלים באזור המחובר של Distributed Cloud לעולם החיצוני באמצעות כתובות IP וירטואליות.
אפשר לציין את טווחי כתובות ה-VIP עבור שירותי LoadBalancer המתאימים באמצעות metallb-config ConfigMap. לדוגמה:
kind: ConfigMap
apiVersion: v1
data:
config: |
address-pools:
- name: default
protocol: bgp
addresses:
- 10.100.10.66/27
metadata:
name: metallb-config
namespace: metallb-system
בדוגמה הקודמת, לכל שירות LoadBalancer שאתם מגדירים מוקצית באופן אוטומטי כתובת IP וירטואלית מהטווח 10.100.10.66/27 שצוין ב-ConfigMap. כתובות ה-VIP האלה מפורסמות צפונה על ידי רכיבי BGP של Distributed Cloud שהוגדרו במתגי ToR באמצעות משאבי BGPPeer.
כשיוצרים אשכול של Distributed Cloud, המשאבים הבאים נוצרים אוטומטית באשכול הזה:
BGPLoadBalancerמשאב שמייצר את מאזן העומסים של BGP.- משאב
NetworkGatewayGroupשמציין את כתובות ה-IP הצפות המקומיות שבהן יש להשתמש עבור רכיבי ה-BGP. כתובות ה-IP האלה מוגדרות אוטומטית כשתי כתובות ה-IP האחרונות של תת-הרשת של צומת Kubernetes שהוקצתה לאשכול.
אחרי שיוצרים את המשאבים האלה, אפשר להגדיר סשנים של BGP למתגי ToR של Distributed Cloud על ידי הגדרת משאבי BGPPeer מתאימים. כדי לעשות זאת, צריכים להיות לכם מספרי המערכת האוטונומית (ASN) הנדרשים וכתובות ה-IP של עמיתי ה-loopback עבור מתגי ה-ToR. כתובות ה-IP האלה משמשות כנקודות קצה של סשן BGP במתג ToR במשאב הרשת שמוגדר כברירת מחדל. חשוב לזכור שהערך של הפרמטר network חייב להיות pod-network.
דוגמה לשני משאבי BGPPeer:
kind: BGPPeer
apiVersion: networking.gke.io/v1
metadata:
name: bgppeertor1
labels:
cluster.baremetal.gke.io/default-peer: "true"
namespace: kube-system
spec:
network: pod-network
localASN: 64777
peerASN: 64956
peerIP: 10.112.0.10
sessions: 1
kind: BGPPeer
apiVersion: networking.gke.io/v1
metadata:
name: bgppeertor2
labels:
cluster.baremetal.gke.io/default-peer: "true"
namespace: kube-system
spec:
network: pod-network
localASN: 64777
peerASN: 64956
peerIP: 10.112.0.11
sessions: 1
הגדרת אוטומציה של איזון עומסים BGP בשכבה 3 עבור קישור IPv6
כדי להתחיל להשתמש ב-Peering של IPv6 באשכול של רשתות עם מחסנית כפולה של IPv4/IPv6, צריך לפנות לתמיכה של Google כדי להפעיל אוטומציה של איזון עומסים ב-Google Distributed Cloud בפריסה המקושרת של Distributed Cloud.
יצירת שירות LoadBalancer בשכבה 3
אחרי שמפעילים אוטומציה של איזון עומסים ב-Google Distributed Cloud בפריסה שמחוברת ל-Distributed Cloud, צריך ליצור מופע של שירות LoadBalancer בשכבה 3. לדוגמה:
apiVersion: v1
kind: Service
metadata:
name: my-service
labels:
app.kubernetes.io/name: MyApp
spec:
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv6
- IPv4
selector:
app.kubernetes.io/name: MyApp
type: LoadBalancer
ports:
- protocol: TCP
port: 80
בדיקת המצב של סשן ה-BGP ושירותי איזון העומסים
כדי לבדוק את המצב של סשן ה-BGP, משתמשים בפקודה הבאה:
kubectl get bgpsessions.networking.gke.io -A
הפקודה מחזירה פלט שדומה לדוגמה הבאה:
NAMESPACE NAME LOCAL ASN PEER ASN LOCAL IP PEER IP STATE LAST REPORT
kube-system bgppeertor1-np-den6-120demo-den6-04-6ad5b6f4 64777 64956 10.100.10.61 10.112.0.10 Established 2s
kube-system bgppeertor2-np-den6-120demo-den6-04-6ad5b6f4 64777 64956 10.100.10.61 10.112.0.11 Established 2s
כדי לוודא שהשירותים של LoadBalancer מפורסמים על ידי רכיבי BGP, משתמשים בפקודה הבאה:
kubectl get bgpadvertisedroutes.networking.gke.io -A
הפקודה מחזירה פלט שדומה לדוגמה הבאה:
NAMESPACE NAME PREFIX METRIC
kube-system bgplb-default-service-tcp 10.100.10.68/32
kube-system bgplb-default-service-udp 10.100.10.77/32
תעבורת נתונים נכנסת (ingress) ב-Distributed Cloud
בנוסף לאיזון עומסים, Distributed Cloud Connected תומך גם במשאבי Kubernetes Ingress. משאב Ingress של Kubernetes שולט בזרימת התנועה של HTTP(S) לשירותי Kubernetes שפועלים באשכולות המחוברים ל-Distributed Cloud. בדוגמה הבאה מוצג משאב Ingress אופייני:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
service:
name: my-service
port:
number: 80
path: /foo
pathType: Prefix
כשמגדירים את שירות istio-ingress, תנועת הרשת עוברת דרכו. כברירת מחדל, מוקצית לו כתובת IP אקראית ממאגרי ה-VIP שצוינו בהגדרות של MetalLB. אתם יכולים לבחור כתובת IP ספציפית או כתובת IP וירטואלית מתוך ההגדרה של MetalLB באמצעות השדה loadBalancerIP בהגדרת השירות istio-ingress. לדוגמה:
apiVersion: v1
kind: service
metadata:
labels:
istio: ingress-gke-system
release: istio
name: istio-ingress
namespace: gke-system
spec:
loadBalancerIP: <targetLoadBalancerIPaddress>
הפונקציונליות הזו לא זמינה בשרתים מקושרים של Distributed Cloud.
השבתה של משאב Distributed Cloud Ingress שמוגדר כברירת מחדל
כברירת מחדל, כשיוצרים אשכול מחובר של Distributed Cloud, מערכת Distributed Cloud מגדירה אוטומטית את שירות istio-ingress לאשכול. יש לכם אפשרות ליצור אשכול מחובר של Distributed Cloud בלי שירות istio-ingress. כדי לעשות זאת, פועלים לפי השלבים הבאים:
gcloud
יוצרים קובץ הגדרות YAML בשם
SystemsAddonConfig.yamlעם התוכן הבא:systemAddonsConfig: ingress: disabled: true
מעבירים את הקובץ
SystemsAddonConfig.yamlבאמצעות הדגל--system-addons-configבפקודת יצירת האשכול. כדי להשתמש בתכונה הזו, צריך להשתמש בגרסהgcloud alpha. לדוגמה:gcloud alpha edge-cloud container clusters create MyGDCECluster1 --location us-west1 \ --system-addons-config=SystemsAddonConfig.yamlמידע נוסף על יצירת אשכול Distributed Cloud זמין במאמר יצירת אשכול.
API
מוסיפים את תוכן ה-JSON הבא למטען הייעודי (payload) של ה-JSON בבקשה ליצירת אשכול:
"systemAddonConfig" { "ingress" { "disabled": true } }שולחים את בקשת יצירת האשכול כמו שמתואר במאמר יצירת אשכול.
שירות NodePort
Distributed Cloud connected תומך בשירות Kubernetes NodePort שמחכה לחיבורים בצומת Distributed Cloud במספר יציאה שתבחרו. שירות NodePort תומך בפרוטוקולים TCP, UDP ו-SCTP. לדוגמה:
apiVersion: v1
kind: pod
metadata:
name: socat-nodeport-sctp
labels:
app.kubernetes.io/name: socat-nodeport-sctp
spec:
containers:
- name: socat-nodeport-sctp
...
ports:
- containerPort: 31333
protocol: SCTP
name: server-sctp
---
apiVersion: v1
kind: service
metadata:
name: socat-nodeport-sctp-svc
spec:
type: NodePort
selector:
app.kubernetes.io/name: socat-nodeport-sctp
ports:
- port: 31333
protocol: SCTP
targetPort: server-sctp
nodePort: 31333
תמיכה ב-SCTP
Distributed Cloud connected תומך בפרוטוקול Stream Control Transmission Protocol (SCTP) בממשק הרשת הראשי עבור רשתות פנימיות וחיצוניות. התמיכה ב-SCTP כוללת את סוגי השירות NodePort, LoadBalancer ו-ClusterIP. פודים יכולים להשתמש ב-SCTP כדי לתקשר עם פודים אחרים ועם משאבים חיצוניים. בדוגמה הבאה מוצג איך להגדיר את IPERF כClusterIP שירות באמצעות SCTP:
apiVersion: v1
kind: pod
metadata:
name: iperf3-sctp-server-client
labels:
app.kubernetes.io/name: iperf3-sctp-server-client
spec:
containers:
- name: iperf3-sctp-server
args: ['-s', '-p 31390']
ports:
- containerPort: 31390
protocol: SCTP
name: server-sctp
- name: iperf3-sctp-client
...
---
apiVersion: v1
kind: service
metadata:
name: iperf3-sctp-svc
spec:
selector:
app.kubernetes.io/name: iperf3-sctp-server-client
ports:
- port: 31390
protocol: SCTP
targetPort: server-sctp
הפונקציונליות הזו לא זמינה בשרתים מקושרים של Distributed Cloud.
מודולים של ליבת SCTP
החל מגרסה 1.5.0, Distributed Cloud connected מגדיר את מודול הליבה של sctp Edge OS כמודול שאפשר לטעון. כך אפשר לטעון את מחסניות פרוטוקול ה-SCTP שלכם במרחב המשתמש של ליבת המערכת.
בנוסף, במודל מחובר של Distributed Cloud, המודולים הבאים נטענים לליבה כברירת מחדל:
| שם המודול | שם ההגדרה |
|---|---|
fou |
CONFIG_NET_FOU |
nf_conntrack_proto_gre |
CONFIG_NF_CT_PROTO_GRE |
nf_conntrack_proto_sctp |
CONFIG_NF_CT_PROTO_SCTP |
inotify |
CONFIG_INOTIFY_USER |
xt_redirect |
CONFIG_NETFILTER_XT_TARGET_REDIRECT |
xt_u32 |
CONFIG_NETFILTER_XT_MATCH_U32 |
xt_multiport |
CONFIG_NETFILTER_XT_MATCH_MULTIPORT |
xt_statistic |
CONFIG_NETFILTER_XT_MATCH_STATISTIC |
xt_owner |
CONFIG_NETFILTER_XT_MATCH_OWNER |
xt_conntrack |
CONFIG_NETFILTER_XT_MATCH_CONNTRACK |
xt_mark |
CONFIG_NETFILTER_XT_MARK |
ip6table_mangle |
CONFIG_IP6_NF_MANGLE |
ip6_tables |
CONFIG_IP6_NF_IPTABLES |
ip6table_filter |
CONFIG_IP6_NF_FILTER |
ip6t_reject |
CONFIG_IP6_NF_TARGET_REJECT |
iptable_mangle |
CONFIG_IP_NF_MANGLE |
ip_tables |
CONFIG_IP_NF_IPTABLES |
iptable_filter |
CONFIG_IP_NF_FILTER |
משאב ClusterDNS
Google Distributed Cloud במודל מחובר תומך במשאב ClusterDNS של Google Distributed Cloud להגדרת שרתי שמות במעלה הזרם לדומיינים ספציפיים באמצעות הקטע spec.domains. מידע נוסף על הגדרת המשאב הזה זמין במאמר spec.domains.
הפונקציונליות הזו לא זמינה בשרתים מקושרים של Distributed Cloud.