במאמר הזה מפורטות דרישות הרשת להתקנה ולהפעלה של Google Distributed Cloud (תוכנה בלבד) בשרת פיזי.
הדף הזה מיועד לאדמינים ולארכיטקטים, למפעילים ולמומחים בתחום הרשתות שמנהלים את מחזור החיים של תשתית הטכנולוגיה הבסיסית, ומתכננים את הרשת של הארגון. כדי לקבל מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן בGoogle Cloud תוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE.
דרישות רשת חיצוניות
ל-Google Distributed Cloud נדרש חיבור לאינטרנט למטרות תפעוליות. המערכת מאחזרת רכיבי אשכול מ-Artifact Registry, והאשכול רשום ב-Connect Agent.
אפשר להתחבר ל-Google באמצעות האינטרנט הציבורי דרך HTTPS, רשת וירטואלית פרטית (VPN) או חיבור Dedicated Interconnect.
אם המכונות שבהן אתם משתמשים לתחנת העבודה של האדמין ולצמתי האשכול משתמשות בשרת proxy כדי לגשת לאינטרנט, שרת ה-proxy צריך לאפשר כמה חיבורים ספציפיים. פרטים נוספים זמינים בקטע 'דרישות מוקדמות' במאמר התקנה מאחורי שרת proxy.
דרישות לגבי רשת פנימית
Google Distributed Cloud יכול לפעול עם קישוריות שכבה 2 או שכבה 3 בין צמתי האשכול. הצמתים של איזון העומסים יכולים להיות הצמתים של מישור הבקרה או קבוצה ייעודית של צמתים. מידע נוסף זמין במאמר בנושא בחירה והגדרה של מאזני עומסים.
כשמשתמשים במאזן עומסים משולב בשכבה 2 עם MetalLB (spec.loadBalancer.mode: bundled ו-spec.loadBalancer.type: layer2), צמתי מאזן העומסים צריכים להיות סמוכים בשכבה 2. הדרישה לסמיכות בשכבה 2 חלה גם אם מריצים את מאזן העומסים בצמתי מישור הבקרה או בקבוצה ייעודית של צמתי איזון עומסים. מאזן עומסים משולב עם BGP תומך בפרוטוקול שכבה 3, ולכן לא נדרשת סמיכות בשכבה 2.
הדרישות לגבי מכונות מאזן העומסים הן:
- באיזון עומסים של Layer 2, כל מאזני העומסים של אשכול נתון נמצאים באותו דומיין Layer 2. גם הצמתים של מישור הבקרה צריכים להיות באותו דומיין Layer 2.
- באיזון עומסים משולב בשכבה 2, כל כתובות ה-IP הווירטואליות (VIP) צריכות להיות ברשת המשנה של מכונת מאזן העומסים, וצריך להיות אפשר לנתב אותן לשער של רשת המשנה.
- המשתמשים אחראים לאפשר תעבורת נתונים של מאזן עומסים של תעבורת נכנסת.
רשתות של Pods ושל Services
טווח כתובות ה-IP שזמין לשירותים ול-Pods מצוין בקובץ ההגדרות של האשכול. בקטעים הבאים מפורטות המגבלות המינימליות והמקסימליות של טווחי הכתובות, וחלק מהגורמים שקשורים לכך שצריך לקחת בחשבון כשמתכננים את התקנת האשכול.
מספר ה-Pods והשירותים שיכולים להיות באשכולות שלכם נקבע על ידי ההגדרות הבאות:
clusterNetwork.pods.cidrBlocksמציין את מספר ה-Pods שמותרים באשכול.
clusterNetwork.services.cidrBlocksמציין את מספר השירותים שמותרים באשכול.
nodeConfig.podDensity.maxPodsPerNodeמציין את המספר המקסימלי של פודים שיכולים לפעול בצומת יחיד.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: admin-basic
namespace: cluster-admin-basic
spec:
type: admin
profile: default
...
clusterNetwork:
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
...
nodeConfig:
podDensity:
maxPodsPerNode: 250
טווחים של כתובות IP ל-Pods ולשירותים
מציינים בלוק Classless Inter-Domain Routing (CIDR) של כתובות IP לשימוש ב-Pods, ועוד בלוק CIDR לשימוש בכתובות ClusterIP של שירותי Kubernetes. משתמשים בכתובות IP במרחב הכתובות הפרטי, כפי שמתואר ב-RFC 1918. קובץ התצורה של האשכול מאוכלס מראש בערכים שחלים עליהם המגבלות שמתוארות בטבלה הבאה:
| הגבלה | קבוצת Pod | שירותים |
|---|---|---|
| טווח מינימלי | ערך המסכה של /18 (16,384 כתובות) |
אנונימיזציה של הערך /24 (256 כתובות) |
| טווח במילוי מראש | ערך המסכה של /16 (65,536 כתובות) |
ערך המסכה של /20 (4,096 כתובות) |
| טווח מקסימלי | אנונימיזציה של הערך /8 (16,777,216 כתובות) |
הסתרת הערך של /12 (1,048,576 כתובות) |
כדי למנוע חפיפה עם כתובות IP שאפשר להגיע אליהן ברשת שלכם, יכול להיות שתצטרכו להשתמש בטווחים של CIDR ששונים מהערכים שמולאו מראש. במיוחד, הטווחים של השירות וה-Pod לא יכולים לחפוף עם הטווחים הבאים:
כתובות ה-IP של הצמתים בכל אשכול
כתובות VIP שמשמשות צמתים של רמת הבקרה ומאזני עומסים
כתובות IP של שרתי DNS או שרתי NTP
בדיקות מקדימות חוסמות את היצירה והשדרוגים של אשכולות אם מזוהות כתובות IP חופפות.
אחרי שיוצרים אשכול, אפשר להגדיל את טווח רשת השירות (clusterNetwork.services.cidrBlocks), אבל אי אפשר להקטין את מספר כתובות ה-IP שהוקצו או לשנות אותן. אפשר לשנות רק את הסיומת של בלוק ה-CIDR, ולהקטין את ערך המסכה כדי להגדיל את מספר כתובות ה-IP.
הערכים של clusterNetwork.pods.cidrBlocks ושל nodeConfig.podDensity.maxPodsPerNode (שמתוארים בקטע הבא) הם קבועים, ולכן חשוב לתכנן בקפידה את הגידול העתידי של האשכול כדי למנוע מצב שבו לא תהיה קיבולת בצמתים. כדי לראות את המקסימום המומלץ של פודים לכל אשכול, פודים לכל צומת וצמתים לכל אשכול על סמך בדיקות, אפשר לעיין במאמר בנושא מגבלות.
מספר הפודים המקסימלי לכל צומת
ב-bare metal, Google Distributed Cloud מאפשר להגדיר עד 250 פודים לכל צומת. Kubernetes מקצה בלוק CIDR לכל צומת, כך שלכל פוד יכולה להיות כתובת IP ייחודית. גודל בלוק ה-CIDR של ה-Pod תואם למספר המקסימלי של פודים לכל צומת.
בטבלה הבאה מפורט הגודל של בלוק ה-CIDR ש-Kubernetes מקצה לכל צומת על סמך מספר הפודים המקסימלי שהוגדר לכל צומת:
| מספר הפודים המקסימלי לכל צומת | חסימת CIDR לכל צומת | מספר כתובות ה-IP |
|---|---|---|
| 32 | /26 |
64 |
| 33-64 | /25 |
128 |
| 65-128 | /24 |
256 |
| 129-250 | /23 |
512 |
כדי להריץ 250 פודים לכל צומת, מערכת Kubernetes צריכה לשריין /23 בלוק CIDR לכל צומת. בהנחה שהאשכול שלכם משתמש בערך ברירת המחדל /16 בשדה clusterNetwork.pods.cidrBlocks, האשכול שלכם מוגבל ל-(2(23-16))=128 צמתים.
אם אתם מתכוונים להגדיל את האשכול מעבר למגבלה הזו, מומלץ מאוד להגדיר את clusterNetwork.pods.cidrBlocks לבלוק CIDR של פודים גדול בהרבה מהערך שמולא מראש.
למידע נוסף על האופן שבו מספר ה-Pods והשירותים וגורמים אחרים משפיעים על יכולת ההרחבה של האשכול, ראו הגדלת הקיבולת של אשכולות Google Distributed Cloud.
פריסת אשכול משתמש יחיד עם זמינות גבוהה
הדיאגרמה הבאה ממחישה מספר מושגי מפתח ברשתות של Google Distributed Cloud, באחת מתצורות הרשת האפשריות.
כדי לעמוד בדרישות של הרשת, כדאי לקרוא את המידע הבא:
- צמתי מישור הבקרה מריצים את מאזני העומסים, ולכולם יש קישוריות ברמה 2, בעוד שחיבורים אחרים, כולל צמתי העובדים, דורשים רק קישוריות ברמה 3.
- קבצי תצורה מגדירים כתובות IP למאגרי צמתים עובדים.
קובצי ההגדרות מגדירים גם כתובות IP וירטואליות למטרות הבאות:
- שירותים
- תעבורת נתונים נכנסת (Ingress)
- גישה למישור הבקרה דרך Kubernetes API
- צריך חיבור ל- Google Cloud.
שימוש ביציאות
בקטע הזה מפורטות דרישות היציאות עבור אשכולות של Google Distributed Cloud. בטבלאות הבאות מוצגות היציאות של UDP ו-TCP שבהן רכיבי Kubernetes משתמשים בצמתים של אשכולות ובצמתים של מאזני עומסים.
צמתים של מישור הבקרה
גרסה 1.33 ואילך
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול אדמין | תחנת עבודה לאדמין |
| TCP | לקבלת נתונים | 2379 - 2381 | etcd server client API, מדדים ובדיקות תקינות | kube-apiserver וגם etcd |
| TCP | לקבלת נתונים | 2382 - 2384 | etcd-events server client API, metrics and health | kube-apiserver וגם etcd-events |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 6444 | שרת Kubernetes API | הכול |
| TCP | לקבלת נתונים | 9100 | auth-proxy | node-exporter |
| TCP | לקבלת נתונים | 9101 | הצגת מדדים של צומת ב-localhost בלבד
(רלוונטי לגרסה 1.28 ואילך) |
node-exporter |
| TCP | לקבלת נתונים | 9192 (ברירת מחדל, אבל אפשר להגדיר) | היציאה של סוכן הצומת (רלוונטי רק לאשכולות שמשתמשים בסוכן הצומת)
(רלוונטי לגרסה 1.33 ואילך) |
node-agent-port |
| TCP | לקבלת נתונים | 9977 | קבלת אירוע ביקורת משרת API | audit-proxy |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 10257 | kube-controller-manager
(שינוי מספר היציאה לגרסה 1.28 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 10259 | kube-scheduler
(שינוי מספר היציאה לגרסה 1.28 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 11002 | GKE Identity Service core container נקשר ליציאה דרך hostPort
(רלוונטי לגרסה 1.29 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 14443 | ANG Webhook Service | kube-apiserver וגם ang-controller-manager |
גרסה 1.29-1.32
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול אדמין | תחנת עבודה לאדמין |
| TCP | לקבלת נתונים | 2379 - 2381 | etcd server client API, מדדים ובדיקות תקינות | kube-apiserver וגם etcd |
| TCP | לקבלת נתונים | 2382 - 2384 | etcd-events server client API, metrics and health | kube-apiserver וגם etcd-events |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 6444 | שרת Kubernetes API | הכול |
| TCP | לקבלת נתונים | 9100 | auth-proxy | node-exporter |
| TCP | לקבלת נתונים | 9101 | הצגת מדדים של צומת ב-localhost בלבד
(רלוונטי לגרסה 1.28 ואילך) |
node-exporter |
| TCP | לקבלת נתונים | 9977 | קבלת אירוע ביקורת משרת API | audit-proxy |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 10257 | kube-controller-manager
(שינוי מספר היציאה לגרסה 1.28 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 10259 | kube-scheduler
(שינוי מספר היציאה לגרסה 1.28 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 11002 | GKE Identity Service core container נקשר ליציאה דרך hostPort
(רלוונטי לגרסה 1.29 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 14443 | ANG Webhook Service | kube-apiserver וגם ang-controller-manager |
גרסה 1.28
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול אדמין | תחנת עבודה לאדמין |
| TCP | לקבלת נתונים | 2379 - 2381 | etcd server client API, מדדים ובדיקות תקינות | kube-apiserver וגם etcd |
| TCP | לקבלת נתונים | 2382 - 2384 | etcd-events server client API, metrics and health | kube-apiserver וגם etcd-events |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 6444 | שרת Kubernetes API | הכול |
| TCP | לקבלת נתונים | 8444 | GKE Identity Service core container נקשר ליציאה דרך
hostPort
(רלוונטי לגרסה 1.28 בלבד) |
הכול |
| TCP | לקבלת נתונים | 9100 | auth-proxy | node-exporter |
| TCP | לקבלת נתונים | 9101 | הצגת מדדים של צומת ב-localhost בלבד
(רלוונטי לגרסה 1.28 ואילך) |
node-exporter |
| TCP | לקבלת נתונים | 9977 | קבלת אירוע ביקורת משרת API | audit-proxy |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 10257 | kube-controller-manager
(שינוי מספר היציאה לגרסה 1.28 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 10259 | kube-scheduler
(שינוי מספר היציאה לגרסה 1.28 ואילך) |
עצמי |
| TCP | לקבלת נתונים | 14443 | ANG Webhook Service | kube-apiserver וגם ang-controller-manager |
גרסה 1.16
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול אדמין | תחנת עבודה לאדמין |
| TCP | לקבלת נתונים | 2379 - 2381 | etcd server client API, מדדים ובדיקות תקינות | kube-apiserver וגם etcd |
| TCP | לקבלת נתונים | 2382 - 2384 | etcd-events server client API, metrics and health
(רלוונטי לגרסה 1.16 ואילך) |
kube-apiserver וגם etcd-events |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 6444 | שרת Kubernetes API | הכול |
| TCP | לקבלת נתונים | 9100 | מדדים של הצגת מודעות | node-exporter |
| TCP | לקבלת נתונים | 9443 | הצגה/העברה של מדדים עבור רכיבי מישור הבקרה (הדרישה הזו לגבי יציאה היא לגרסה 1.16 של אשכול ומטה). | kube-control-plane-metrics-proxy |
| TCP | לקבלת נתונים | 9977 | קבלת אירוע ביקורת משרת API | audit-proxy |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10251 | kube-scheduler |
עצמי |
| TCP | לקבלת נתונים | 10252 | kube-controller-manager |
עצמי |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 14443 | ANG Webhook Service | kube-apiserver וגם ang-controller-manager |
גרסה 1.15 ומטה
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול אדמין | תחנת עבודה לאדמין |
| TCP | לקבלת נתונים | 2379 - 2381 | etcd server client API, מדדים ובדיקות תקינות | kube-apiserver וגם etcd |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 6444 | שרת Kubernetes API | הכול |
| TCP | לקבלת נתונים | 9100 | מדדים של הצגת מודעות | node-exporter |
| TCP | לקבלת נתונים | 9443 | הצגה/העברה של מדדים עבור רכיבי מישור הבקרה (הדרישה הזו לגבי יציאה היא לגרסה 1.16 של אשכול ומטה). | kube-control-plane-metrics-proxy |
| TCP | לקבלת נתונים | 9977 | קבלת אירוע ביקורת משרת API | audit-proxy |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10251 | kube-scheduler |
עצמי |
| TCP | לקבלת נתונים | 10252 | kube-controller-manager |
עצמי |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 14443 | ANG Webhook Service | kube-apiserver וגם ang-controller-manager |
צומתי עובד
גרסה 1.33 ואילך
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 9100 | auth-proxy | node-exporter |
| TCP | לקבלת נתונים | 9101 | הצגת מדדים של צומת ב-localhost בלבד
(רלוונטי לגרסה 1.28 ואילך) |
node-exporter |
| TCP | לקבלת נתונים | 9192 (ברירת מחדל, אבל אפשר להגדיר) | היציאה של סוכן הצומת (רלוונטי רק לאשכולות שמשתמשים בסוכן הצומת)
(רלוונטי לגרסה 1.33 ואילך) |
node-agent-port |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 30000 - 32767 | שירותי NodePort |
עצמי |
גרסה 1.29-1.32
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 9100 | auth-proxy | node-exporter |
| TCP | לקבלת נתונים | 9101 | הצגת מדדים של צומת ב-localhost בלבד
(רלוונטי לגרסה 1.28 ואילך) |
node-exporter |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 30000 - 32767 | שירותי NodePort |
עצמי |
גרסה 1.28
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 9100 | auth-proxy | node-exporter |
| TCP | לקבלת נתונים | 9101 | הצגת מדדים של צומת ב-localhost בלבד
(רלוונטי לגרסה 1.28 ואילך) |
node-exporter |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 30000 - 32767 | שירותי NodePort |
עצמי |
גרסה 1.16
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 9100 | מדדים של הצגת מודעות | node-exporter |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 30000 - 32767 | שירותי NodePort |
עצמי |
גרסה 1.15 ומטה
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 9100 | מדדים של הצגת מודעות | node-exporter |
| TCP | לקבלת נתונים | 10250 | kubelet API |
לעצמי ולמישור הבקרה |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 30000 - 32767 | שירותי NodePort |
עצמי |
צמתים של מאזן עומסים
גרסה 1.33 ואילך
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | לקבלת נתונים | 443 | ניהול אשכולות אפשר להגדיר את הפורט הזה בקובץ ההגדרות של האשכול באמצעות השדה |
הכול |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP ו-UDP | לקבלת נתונים | 7946 | בדיקת תקינות של MetalLB | צמתים של מאזן עומסים |
| TCP | לקבלת נתונים | 9192 (ברירת מחדל, אבל אפשר להגדיר) | היציאה של סוכן הצומת (רלוונטי רק לאשכולות שמשתמשים בסוכן הצומת)
(רלוונטי לגרסה 1.33 ואילך) |
node-agent-port |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 11000 | יציאה להאזנה למדדים של HAProxy (לא ניתן לשינוי)
(רלוונטי לגרסה 1.29 ואילך) |
הכול |
| TCP | לקבלת נתונים | 11001 | יציאה להקשבה של GKE Identity Service (קבועה)
(רלוונטי לגרסה 1.29 ואילך) |
הכול |
גרסה 1.29-1.32
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | לקבלת נתונים | 443 | ניהול אשכולות אפשר להגדיר את הפורט הזה בקובץ ההגדרות של האשכול באמצעות השדה |
הכול |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP ו-UDP | לקבלת נתונים | 7946 | בדיקת תקינות של MetalLB | צמתים של מאזן עומסים |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 11000 | יציאה להאזנה למדדים של HAProxy (לא ניתן לשינוי)
(רלוונטי לגרסה 1.29 ואילך) |
הכול |
| TCP | לקבלת נתונים | 11001 | יציאה להקשבה של GKE Identity Service (קבועה)
(רלוונטי לגרסה 1.29 ואילך) |
הכול |
גרסה 1.28
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | לקבלת נתונים | 443 | ניהול אשכולות אפשר להגדיר את הפורט הזה בקובץ ההגדרות של האשכול באמצעות השדה |
הכול |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP ו-UDP | לקבלת נתונים | 7946 | בדיקת תקינות של MetalLB | צמתים של מאזן עומסים |
| TCP | לקבלת נתונים | 8443 | יציאה להקשבה של GKE Identity Service (קבועה)
(רלוונטי לגרסה 1.28 בלבד) |
הכול |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
גרסה 1.16
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | לקבלת נתונים | 443 | ניהול אשכולות אפשר להגדיר את הפורט הזה בקובץ ההגדרות של האשכול באמצעות השדה |
הכול |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 7946 | בדיקת תקינות של MetalLB | צמתים של מאזן עומסים |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
גרסה 1.15 ומטה
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | לקבלת נתונים | 443 | ניהול אשכולות אפשר להגדיר את הפורט הזה בקובץ ההגדרות של האשכול באמצעות השדה |
הכול |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP | לקבלת נתונים | 7946 | בדיקת תקינות של MetalLB | צמתים של מאזן עומסים |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
דרישות ליציאות באשכולות מרובים
בהגדרה מרובת אשכולות, האשכולות שנוספו צריכים לכלול את היציאות הבאות כדי לתקשר עם אשכול הניהול.
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתי אשכול | כל הצמתים |
| TCP | לקבלת נתונים | 443 | שרת Kubernetes API לאשכול שנוסף אפשר להגדיר את היציאה הזו בהגדרות האשכול, באמצעות השדה |
צמתים של מישור הבקרה ומאזן העומסים |
הגדרת יציאות ב-firewalld
לא צריך להשבית את firewalld כדי להריץ את Google Distributed Cloud ב-Red Hat Enterprise Linux (RHEL). כדי להשתמש ב-firewalld, צריך לפתוח את יציאות ה-UDP וה-TCP שמשמשות את הצמתים של מישור הבקרה, העובד ומאזן העומסים, כמו שמתואר בקטע שימוש ביציאות בדף הזה. בדוגמאות ההגדרות הבאות מוסבר איך אפשר לפתוח יציאות באמצעות firewall-cmd, כלי שורת הפקודה של firewalld. צריך להריץ את הפקודות כמשתמש root.
הגדרה לדוגמה של צומת במישור הבקרה
בלוק הפקודות הבא מציג דוגמה לאופן שבו אפשר לפתוח את היציאות הנדרשות בשרתים שמריצים צמתים של מישור הבקרה:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=10257/tcp
firewall-cmd --permanent --zone=public --add-port=10259/tcp
firewall-cmd --permanent --zone=public --add-port=2379-2380/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
בקטע הקודם שימוש ביציאות מפורטות הדרישות הספציפיות ליציאות לגרסת האשכול שבה אתם מתכוונים להשתמש. מעדכנים את הפקודות לדוגמה בהתאם.
מחליפים את PODS_CIDR בבלוקים של CIDR ששמורים עבור הפודים שהוגדרו בשדה clusterNetwork.pods.cidrBlocks. בלוק ברירת המחדל של CIDR לפודים הוא 192.168.0.0/16.
דוגמה להגדרה של צומת עובד
בלוק הפקודות הבא מציג דוגמה לאופן שבו אפשר לפתוח את הפורטים הנדרשים בשרתים שמריצים צמתים של עובדים:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
בקטע הקודם שימוש ביציאות מפורטות הדרישות הספציפיות ליציאות לגרסת האשכול שבה אתם מתכוונים להשתמש. מעדכנים את הפקודות לדוגמה בהתאם.
מחליפים את PODS_CIDR בבלוקים של CIDR ששמורים עבור הפודים שהוגדרו בשדה clusterNetwork.pods.cidrBlocks. בלוק ברירת המחדל של CIDR לפודים הוא 192.168.0.0/16.
דוגמה להגדרת צומת של מאזן עומסים
בלוק הפקודות הבא מציג דוגמה לאופן שבו אפשר לפתוח את היציאות הנדרשות בשרתים שמריצים צמתים של איזון עומסים:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=7946/tcp
firewall-cmd --permanent --zone=public --add-port=7946/udp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
בקטע הקודם שימוש ביציאות מפורטות הדרישות הספציפיות ליציאות לגרסת האשכול שבה אתם מתכוונים להשתמש. מעדכנים את הפקודות לדוגמה בהתאם.
מחליפים את PODS_CIDR בבלוקים של CIDR ששמורים עבור הפודים שהוגדרו בשדה clusterNetwork.pods.cidrBlocks. בלוק ברירת המחדל של CIDR לפודים הוא 192.168.0.0/16.
הגדרות נוספות ל-RHEL 9.2 ו-9.4
גרסאות 9.2 ו-9.4 של Red Hat Enterprise Linux (RHEL) נתמכות כזמינות כללית בגרסאות 1.29.400 ואילך. בגרסאות RHEL 9.2 ו-9.4, צריך לבצע הגדרה נוספת של firewalld בצמתים כדי שהשירותים והפודים יפעלו בצורה תקינה:
כדי למצוא את ממשק הצומת הראשי, מציגים את רשימת הממשקים הפעילים של הצומת:
firewall-cmd --list-interfacesבהתאם למוסכמות למתן שמות לממשקי מכונות ב-Linux, השם של הממשק הראשי עשוי להיראות כך:
eth0, eno1, ens1אוenp2s0.כדי לראות באיזה אזור משתמש הממשק הראשי, מריצים את הפקודה הבאה:
firewall-cmd --list-all-zonesלדוגמה, אם הממשק הראשי הוא
eno1, הקטע הבא בתגובה מציין שהממשק הראשי נמצא באזורpublic:... public (active) target: default icmp-block-inversion: no interfaces: eno1 sources: ...מריצים את הפקודות הבאות של firewalld כדי להגדיר פרטים של אזור ומדיניות בהתאמה אישית ל-RHEL 9.2 או 9.4:
firewall-cmd --permanent --new-zone=cilium firewall-cmd --permanent --zone=cilium --add-interface=cilium_host firewall-cmd --permanent --zone=cilium --set-target ACCEPT firewall-cmd --permanent --zone=cilium --add-masquerade firewall-cmd --permanent --zone=cilium --add-forward firewall-cmd --permanent --new-policy cilium-host-port-forwarding firewall-cmd --permanent --policy cilium-host-port-forwarding --add-ingress-zone IN_ZONE firewall-cmd --permanent --policy cilium-host-port-forwarding --add-egress-zone cilium firewall-cmd --permanent --policy cilium-host-port-forwarding --set-target ACCEPT firewall-cmd --reloadמחליפים את
IN_ZONEבאחד מהערכים הבאים, בהתאם למה שמצאתם בשלבים הקודמים:-
public: אזור מוגדר מראש לשימוש באזורים ציבוריים שבהם מתקבלים רק חיבורים נכנסים נבחרים. -
trusted: אזור מוגדר מראש בסביבה מבוקרת שבה כל חיבורי הרשת מתקבלים. - השם של אזור מותאם אישית שהגדרתם.
-
פועלים לפי ההוראות במסמכי הספק כדי להגדיר את פתרון האחסון.
לדוגמה, אם אתם משתמשים ב-Portworx כדי לנהל עומסי עבודה עם שמירת מצב, בדרישות הרשת של Portworx מפורטות היציאות שצריכות להישאר פתוחות.
לכל אחת מהיציאות שמופיעות במסמכי הספק, מריצים את הפקודה הבאה:
firewall-cmd --permanent --zone=public --add-port=PORT_INFOמחליפים את
PORT_INFOבמספר היציאה או בטווח מספרי היציאה, ואחריו הפרוטוקול. לדוגמה,10250-10252/tcp.
אישור הגדרת היציאה
כדי לאמת את הגדרת היציאה, מבצעים את השלבים הבאים בצמתים של מישור הבקרה, העובד ומאזן העומסים:
מריצים את הפקודה הבאה של Network Mapper כדי לראות אילו יציאות פתוחות:
nmap localhostמריצים את הפקודות הבאות כדי לקבל את הגדרות התצורה של firewalld:
firewall-cmd --info-zone=public firewall-cmd --info-zone=k8s-pods firewall-cmd --list-all-policiesאם צריך, מריצים מחדש את הפקודות מהקטעים הקודמים כדי להגדיר את הצמתים בצורה תקינה. יכול להיות שתצטרכו להריץ את הפקודות כמשתמש root.
בעיה ידועה ב-firewalld
כשמריצים את Google Distributed Cloud עם firewalld שמופעל ב-Red Hat Enterprise Linux (RHEL), שינויים ב-firewalld יכולים להסיר את שרשראות iptables של Cilium ברשת המארחת. שרשראות iptables מתווספות על ידי Pod anetd כשהוא מופעל. אובדן של שרשראות iptables של Cilium גורם ל-Pod בצומת לאבד את הקישוריות לרשת מחוץ לצומת.
שינויים ב-firewalld שגורמים להסרת שרשראות iptables כוללים, בין היתר:
מתבצעת הפעלה מחדש של
firewalld, באמצעותsystemctlטעינה מחדש של
firewalldבאמצעות לקוח שורת הפקודה (firewall-cmd --reload)
כדי להחיל את השינויים ב-firewalld בלי להסיר שרשראות iptables, מפעילים מחדש את anetd בצומת:
מאתרים את
anetdPod ומוחקים אותו באמצעות הפקודות הבאות כדי להפעיל מחדש אתanetd:kubectl get pods -n kube-system kubectl delete pods -n kube-system ANETD_XYZמחליפים את ANETD_XYZ בשם של ה-Pod
anetd.