במאמר הזה מפורטות דרישות הרשת להתקנה ולהפעלה של Google Distributed Cloud (תוכנה בלבד) בשרת פיזי.
הדף הזה מיועד לאדמינים ולארכיטקטים, למפעילים ולמומחי רשתות שמנהלים את מחזור החיים של תשתית הטכנולוגיה הבסיסית, ומתכננים ומעצבים את הרשת בארגון שלהם. כדי לקבל מידע נוסף על תפקידים נפוצים ועל משימות לדוגמה שאנחנו מתייחסים אליהן בGoogle Cloud תוכן, אפשר לעיין במאמר תפקידים נפוצים של משתמשי GKE ומשימות.
דרישות רשת חיצוניות
כדי להפעיל את Google Distributed Cloud, נדרש חיבור לאינטרנט. 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 תומך בפרוטוקול Layer 3, כך שלא נדרשת סמיכות קפדנית של Layer 2.
הדרישות לגבי מכונות מאזן העומסים הן:
- באיזון עומסים משולב בשכבה 2, כל מאזני העומסים באותו אשכול נמצאים באותו דומיין בשכבה 2. הצמתים של מישור הבקרה צריכים להיות גם הם באותו דומיין של שכבה 2.
- באיזון עומסים של שכבה 2 בחבילה, כל כתובות ה-IP הווירטואליות (VIP) צריכות להיות ברשת המשנה של מכונת מאזן העומסים, וניתנות לניתוב לשער של רשת המשנה.
- המשתמשים אחראים לאפשר תעבורת נתונים של מאזן עומסים של תעבורת נתונים נכנסת.
רשתות של פודים ושירותים
טווח כתובות ה-IP שזמין לשירותים ול-Pods מצוין בקובץ התצורה של האשכול. בקטעים הבאים מפורטות המגבלות המינימליות והמקסימליות של טווחי הכתובות, וחלק מהגורמים הקשורים שצריך לקחת בחשבון כשמתכננים את התקנת האשכול.
מספר ה-Pods והשירותים שיכולים להיות באשכולות שלכם נקבע על ידי ההגדרות הבאות:
clusterNetwork.pods.cidrBlocksמציין את מספר ה-Pods שמותרים באשכול.
clusterNetwork.services.cidrBlocksמציין את מספר השירותים שמותרים באשכול.
nodeConfig.podDensity.maxPodsPerNodeמציין את המספר המקסימלי של Pods שיכולים לפעול בצומת יחיד.
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 ושירותים
מציינים טווח של כתובות IP כבלוק Classless Inter-Domain Routing (CIDR) לשימוש ב-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 ששונים מהערכים שמולאו מראש. בפרט, טווחי ה-Service וה-Pod לא יכולים לחפוף לטווחי ה-Service וה-Pod הבאים:
כתובות ה-IP של הצמתים בכל אשכול
כתובות VIP שמשמשות צמתים של רמת הבקרה ומאזני עומסים
כתובות IP של שרתי DNS או שרתי NTP
בדיקות מקדימות חוסמות את היצירה והשדרוגים של אשכולות אם מזוהות כתובות IP חופפות.
אחרי שיוצרים אשכול, אפשר להגדיל את טווח רשת השירות (clusterNetwork.services.cidrBlocks), אבל אי אפשר להקטין את מספר כתובות ה-IP שהוקצו או לשנות אותן. אפשר לשנות רק את הסיומת של בלוק ה-CIDR, ולהקטין את ערך המסכה כדי להגדיל את מספר כתובות ה-IP.
המאפיינים clusterNetwork.pods.cidrBlocks ו-nodeConfig.podDensity.maxPodsPerNode (שמתוארים בקטע הבא) הם קבועים, ולכן חשוב לתכנן בקפידה את הגידול העתידי של האשכול כדי להימנע ממצב שבו לא יהיה מספיק קיבולת בצומת. במאמר מגבלות מפורטות המגבלות המומלצות על מספר ה-Pods בכל אשכול, מספר ה-Pods בכל צומת ומספר הצמתים בכל אשכול, על סמך בדיקות.
מספר הפודים המקסימלי לכל צומת
ב-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 קבוצות Pod לכל צומת, מערכת Kubernetes צריכה לשריין /23 בלוק CIDR לכל צומת. בהנחה שהערך שמוגדר בשדה clusterNetwork.pods.cidrBlocks הוא ערך ברירת המחדל /16, למערכת יש מגבלה של (2(23-16))=128 צמתים.
אם אתם מתכוונים להגדיל את האשכול מעבר למגבלה הזו, מומלץ מאוד להגדיר את clusterNetwork.pods.cidrBlocks לבלוק CIDR של פודים גדול בהרבה מהערך שמולא מראש.
למידע נוסף על האופן שבו מספר ה-Pods והשירותים וגורמים אחרים משפיעים על יכולת ההרחבה של האשכול, ראו הגדלת הקיבולת של אשכולות Google Distributed Cloud.
פריסת אשכול משתמש יחיד עם זמינות גבוהה
הדיאגרמה הבאה ממחישה מספר מושגי רישות מרכזיים עבור Google Distributed Cloud בתצורת רשת אפשרית אחת.
כדי לעמוד בדרישות של הרשת, כדאי לעיין במידע הבא:
- צמתי מישור הבקרה מריצים את מאזני העומסים, ולכולם יש קישוריות ברמה 2, בעוד שחיבורים אחרים, כולל צמתי העובדים, דורשים רק קישוריות ברמה 3.
- קבצי התצורה מגדירים כתובות IP למאגרי צמתי העובדים.
קובצי ההגדרות מגדירים גם כתובות VIP למטרות הבאות:
- שירותים
- תעבורת נתונים נכנסת (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, מדדים ומצב | 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 (ברירת מחדל, אבל אפשר להגדיר) | יציאת Node Agent (רלוונטי רק לאשכולות שמשתמשים ב-Node Agent)
(רלוונטי לגרסה 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, מדדים ומצב | 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, מדדים ומצב | 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, מדדים ומצב
(רלוונטי לגרסה 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 (ברירת מחדל, אבל אפשר להגדיר) | יציאת Node Agent (רלוונטי רק לאשכולות שמשתמשים ב-Node Agent)
(רלוונטי לגרסה 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 (ברירת מחדל, אבל אפשר להגדיר) | יציאת Node Agent (רלוונטי רק לאשכולות שמשתמשים ב-Node Agent)
(רלוונטי לגרסה 1.33 ואילך) |
node-agent-port |
| TCP | לקבלת נתונים | 10256 | בדיקת תקינות של צומת | הכול |
| TCP | לקבלת נתונים | 11000 | יציאה להאזנה למדדים של HAProxy (אי אפשר לשנות)
(רלוונטי לגרסה 1.29 ואילך) |
הכול |
| TCP | לקבלת נתונים | 11001 | יציאת האזנה של שירות הזהויות של GKE (קבועה)
(רלוונטי לגרסה 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 (קבועה)
(רלוונטי לגרסה 1.29 ואילך) |
הכול |
גרסה 1.28
| פרוטוקול | כיוון | טווח יציאות | מטרה | בשימוש על ידי |
|---|---|---|---|---|
| TCP | לקבלת נתונים | 22 | הקצאה ועדכון של צמתים באשכול משתמשים | צמתים של אשכול אדמין |
| TCP | לקבלת נתונים | 443 | ניהול אשכולות אפשר להגדיר את הפורט הזה בקובץ התצורה של האשכול באמצעות השדה |
הכול |
| TCP | שני הסוגים | 4240 | בדיקת תקינות של CNI | הכול |
| UDP | לקבלת נתונים | 6081 | GENEVE Encapsulation | עצמי |
| TCP ו-UDP | לקבלת נתונים | 7946 | בדיקת תקינות של MetalLB | צמתים של מאזן עומסים |
| TCP | לקבלת נתונים | 8443 | יציאת האזנה של שירות הזהויות של GKE (קבועה)
(רלוונטי לגרסה 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) נתמכות כזמינות כללית (GA) בגרסאות 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 מתווספות על ידי anetd Pod
כשהוא מופעל. הניתוק של שרשראות Cilium iptables גורם לאובדן הקישוריות לרשת של ה-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.