בדף הזה מוסבר על תכונות הרשת של Google Distributed Cloud, כולל רשתות משנה, סשנים של BGP peering ואיזון עומסים.
הפעלת 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 כוללת את השלבים הבאים:
אופציונלי: מאתחלים את הגדרות הרשת של אזור היעד, אם צריך.
יוצרים רשת.
יוצרים רשת משנה אחת או יותר בתוך הרשת.
מקימים סשנים של BGP peering בכיוון צפון עם נתבי ה-PE באמצעות חיבורי ה-Interconnect המתאימים.
יוצרים סשנים של BGP peering מדרום לצפון עם ה-Pods שמריצים את עומסי העבודה באמצעות רשתות המשנה המתאימות.
אופציונלי: הקמת סשנים של BGP peering ב-loopback לזמינות גבוהה.
בודקים את ההגדרה.
מחברים את ה-Pods לרשת.
אופציונלי: אתחול הגדרות הרשת של אזור Distributed Cloud
צריך לאתחל את הגדרות הרשת של אזור Distributed Cloud במקרים הבאים:
- מיד אחרי שהחומרה של Distributed Cloud מותקנת במקום.
- שדרגתם ל-Distributed Cloud גרסה 1.3.0 ואילך בפריסת Distributed Cloud קיימת, אבל לא השתתפתם בתצוגה המקדימה הפרטית של Distributed Cloud Edge Network API.
כשמפעילים את ההגדרה הראשונית של הרשת באזור, נוצר נתב ברירת מחדל בשם default ורשת ברירת מחדל בשם default. הוא גם מגדיר את נתב default ליצירת קשר עם כל החיבורים ההדדיים שביקשתם כשביצעתם הזמנה של ציוד Distributed Cloud, על ידי יצירת קבצים מצורפים מתאימים של חיבורים הדדיים. ההגדרה הזו מספקת לפריסת Distributed Cloud קישוריות בסיסית להעלאה לרשת המקומית.
אתחול הגדרת הרשת של אזור הוא תהליך חד-פעמי. הוראות מלאות זמינות במאמר בנושא איך מאתחלים את הגדרת הרשת של אזור.
יצירת רשת
כדי ליצור רשת חדשה, פועלים לפי ההוראות במאמר יצירת רשת. בנוסף, אתם צריכים ליצור לפחות רשת משנה אחת בתוך הרשת כדי לאפשר לצמתים של Distributed Cloud להתחבר לרשת.
יצירת רשת משנה אחת או יותר
כדי ליצור רשת משנה, פועלים לפי ההוראות במאמר בנושא יצירת רשת משנה. כדי שהצמתים יוכלו לגשת לרשת, צריך ליצור ברשת לפחות רשת משנה אחת. רשת ה-VLAN שמתאימה לכל רשת משנה שיוצרים זמינה אוטומטית לכל הצמתים באזור.
יצירת סשנים של קישור 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
כדי לאפשר קישוריות בזמינות גבוהה בין עומסי העבודה לבין הרשת המקומית, אפשר ליצור סשן של קישור בין רשתות שכנות (peering) מסוג BGP מסוג loopback בין ה-Pod של היעד לבין שני מתגי ToR במתלה של Distributed Cloud. סשן של שיתוף פעולה עם עצמו (loopback peering) יוצר שני סשנים עצמאיים של שיתוף פעולה עם עצמו עבור ה-Pod, אחד עם כל מתג ToR.
כדי ליצור סשן BGP peering של Loopback:
מוסיפים ממשק מסוג loopback לנתב ברשת היעד. הוראות מופיעות במאמר בנושא יצירת סשן של שיתוף פעולה מסוג Loopback.
מוסיפים עמית לממשק הלולאה החוזרת.
בדיקת ההגדרה
כדי לבדוק את ההגדרה של רכיבי הרשת שיצרתם:
חיבור מכשירי Pod לרשת
כדי לחבר את ה-Pods לרשת ולהגדיר פונקציות רשת מתקדמות, פועלים לפי ההוראות במאמר בנושא Network Function operator.
איזון עומסים
Distributed Cloud מגיע עם פתרון משולב לאיזון עומסים ברשת שמבוסס על MetalLB במצב Layer 2. אתם יכולים להשתמש בפתרון הזה כדי לחשוף שירותים שפועלים באזור של Distributed Cloud לעולם החיצוני באמצעות כתובות IP וירטואליות (VIP) באופן הבא:
- אדמין הרשת מתכנן את טופולוגיית הרשת ומציין את רשת המשנה הווירטואלית של כתובת IPv4 הנדרשת כשמזמינים את Distributed Cloud. Google מגדירה את הציוד של Distributed Cloud בהתאם לפני המסירה.
חשוב לזכור:
- רשת המשנה של כתובות ה-VIP משותפת לכל אשכולות Kubernetes שפועלים באזור Distributed Cloud.
- מסלול לרשת המשנה של ה-VIP המבוקש מפורסם באמצעות סשנים של BGP בין אזור Distributed Cloud לבין הרשת המקומית.
- הכתובות הראשונה (מזהה הרשת), השנייה (שער ברירת המחדל) והאחרונה (כתובת השידור) ברשת המשנה שמורות לפונקציונליות של מערכת הליבה. אל תקצו את הכתובות האלה למאגרי הכתובות של הגדרות MetalLB.
- כל אשכול חייב להשתמש בטווח VIP נפרד שנמצא בתוך רשת המשנה של ה-VIP שהוגדרה.
- כשיוצרים אשכול באזור Distributed Cloud, האדמין של האשכול מציין את מאגרי הכתובות של שירות Pod ו-ClusterIP באמצעות סימון CIDR. מנהל הרשת מספק את רשת המשנה המתאימה של כתובת ה-VIP לאדמין של האשכול.
LoadBalancer אחרי שיוצרים את האשכול, האדמין של האשכול מגדיר את מאגרי כתובות ה-VIP המתאימים. עבור אשכולות של מישור בקרה מרחוק, צריך לערוך את
metallb-configConfigMap במרחב השמותmetallb-systemבאמצעות הפקודהkubectl editאוkubectl replace. אל תשתמשו בפקודהkubectl applyכי Distributed Cloud ידרוס את השינויים שלכם אם תשתמשו בה.הדוגמה הבאה ממחישה הגדרה כזו:
# metallb-config.yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: metallb-config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.2-192.168.1.254במקרה של אשכולות של מישור בקרה מקומי, צריך לציין את מאגרי כתובות ה-VIP באמצעות הדגל
--external-lb-ipv4-address-poolsכשיוצרים את האשכול. מידע נוסף זמין במאמר בנושא מצב זמינות.האדמין של האשכול יוצר את השירותים המתאימים של Kubernetes
LoadBalancer.
צמתים של Distributed Cloud במאגר צמתים יחיד חולקים דומיין משותף בשכבה 2, ולכן הם גם צמתים של מאזן העומסים MetalLB. צמתים של מישור הבקרה של Distributed Cloud שפועלים ב-Google Cloud לא מתפקדים כצמתים של איזון עומסים.
תעבורת נתונים נכנסת (ingress) ב-Distributed Cloud
בנוסף לאיזון עומסים, Distributed Cloud תומך גם במשאבי 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 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 } }שולחים את בקשת יצירת האשכול כמו שמתואר במאמר יצירת אשכול.
תמיכה ב-SCTP
Distributed Cloud תומך בפרוטוקול 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
מודולים של ליבת SCTP
החל מגרסה 1.5.0, Distributed Cloud מגדיר את מודול הליבה של 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
Distributed Cloud תומך במשאב Google Distributed Cloud ClusterDNS להגדרת שרתי שמות במעלה הזרם עבור דומיינים ספציפיים באמצעות הקטע spec.domains. מידע נוסף על הגדרת המשאב הזה זמין במאמר spec.domains.