דרישות רשת

במאמר הזה מפורטות דרישות הרשת להתקנה ולהפעלה של 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 והשירותים שיכולים להיות באשכולות שלכם נקבע על ידי ההגדרות הבאות:

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 בתצורת רשת אפשרית אחת.

תצורת רשת אופיינית של 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 ניהול אשכולות

אפשר להגדיר את הפורט הזה בקובץ התצורה של האשכול באמצעות השדה controlPlaneLBPort.

הכול
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 ניהול אשכולות

אפשר להגדיר את הפורט הזה בקובץ התצורה של האשכול באמצעות השדה controlPlaneLBPort.

הכול
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 ניהול אשכולות

אפשר להגדיר את הפורט הזה בקובץ התצורה של האשכול באמצעות השדה controlPlaneLBPort.

הכול
TCP שני הסוגים 4240 בדיקת תקינות של CNI הכול
UDP לקבלת נתונים 6081 GENEVE Encapsulation עצמי
‫TCP ו-UDP לקבלת נתונים 7946 בדיקת תקינות של MetalLB צמתים של מאזן עומסים
TCP לקבלת נתונים 8443 יציאת האזנה של שירות הזהויות של GKE (קבועה)

(רלוונטי לגרסה 1.28 בלבד)

הכול
TCP לקבלת נתונים 10256 בדיקת תקינות של צומת הכול

גרסה 1.16

פרוטוקול כיוון טווח יציאות מטרה בשימוש על ידי
TCP לקבלת נתונים 22 הקצאה ועדכון של צמתים באשכול משתמשים צמתים של אשכול אדמין
TCP לקבלת נתונים 443 ניהול אשכולות

אפשר להגדיר את הפורט הזה בקובץ התצורה של האשכול באמצעות השדה controlPlaneLBPort.

הכול
TCP שני הסוגים 4240 בדיקת תקינות של CNI הכול
UDP לקבלת נתונים 6081 GENEVE Encapsulation עצמי
TCP לקבלת נתונים 7946 בדיקת תקינות של MetalLB צמתים של מאזן עומסים
TCP לקבלת נתונים 10256 בדיקת תקינות של צומת הכול

גרסה 1.15 ומטה

פרוטוקול כיוון טווח יציאות מטרה בשימוש על ידי
TCP לקבלת נתונים 22 הקצאה ועדכון של צמתים באשכול משתמשים צמתים של אשכול אדמין
TCP לקבלת נתונים 443 ניהול אשכולות

אפשר להגדיר את הפורט הזה בקובץ התצורה של האשכול באמצעות השדה controlPlaneLBPort.

הכול
TCP שני הסוגים 4240 בדיקת תקינות של CNI הכול
UDP לקבלת נתונים 6081 GENEVE Encapsulation עצמי
TCP לקבלת נתונים 7946 בדיקת תקינות של MetalLB צמתים של מאזן עומסים
TCP לקבלת נתונים 10256 בדיקת תקינות של צומת הכול

דרישות לניוד בין אשכולות

בהגדרה של כמה אשכולות, האשכולות שנוספו צריכים לכלול את היציאות הבאות כדי לתקשר עם אשכול האדמין.

פרוטוקול כיוון טווח יציאות מטרה בשימוש על ידי
TCP לקבלת נתונים 22 הקצאה ועדכון של צמתי אשכול כל הצמתים
TCP לקבלת נתונים 443 שרת Kubernetes API לאשכול שנוסף

אפשר להגדיר את הפורט הזה בהגדרות האשכול באמצעות השדה controlPlaneLBPort.

מישור הבקרה וצמתי מאזן העומסים

הגדרת יציאות ב-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 בצמתים כדי שהשירותים והפודים יפעלו בצורה תקינה:

  1. כדי למצוא את ממשק הצומת הראשי, מציגים את רשימת הממשקים הפעילים של הצומת:

    firewall-cmd --list-interfaces
    

    בהתאם למוסכמות למתן שמות לממשקי מכונות ב-Linux, השם של הממשק הראשי יכול להיות אחד מהשמות הבאים: eth0, ‏eno1, ‏ens1 או enp2s0.

  2. כדי לראות באיזה אזור משתמש הממשק הראשי, מריצים את הפקודה הבאה:

    firewall-cmd --list-all-zones
    

    לדוגמה, אם הממשק הראשי הוא eno1, הקטע הבא בתגובה מציין שהממשק הראשי נמצא באזור public:

    ...
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: eno1
      sources:
      ...
    
  3. מריצים את הפקודות הבאות של 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: אזור מוגדר מראש בסביבה מבוקרת שבה כל חיבורי הרשת מתקבלים.
    • השם של אזור מותאם אישית שהגדרתם.
  4. פועלים לפי ההוראות במסמכי הספק כדי להגדיר את פתרון האחסון.

    לדוגמה, אם אתם משתמשים ב-Portworx כדי לנהל עומסי עבודה עם שמירת מצב, בדרישות הרשת של Portworx מפורטות היציאות שצריכות להישאר פתוחות.

    לכל אחת מהיציאות שמופיעות במסמכי הספק, מריצים את הפקודה הבאה:

    firewall-cmd --permanent --zone=public --add-port=PORT_INFO
    

    מחליפים את PORT_INFO במספר היציאה או בטווח מספרי היציאה, ואחריו הפרוטוקול. לדוגמה, 10250-10252/tcp.

אישור הגדרת היציאה

כדי לאמת את הגדרת היציאה, מבצעים את השלבים הבאים בצמתים של מישור הבקרה, העובד ומאזן העומסים:

  1. מריצים את הפקודה הבאה של Network Mapper כדי לראות אילו יציאות פתוחות:

    nmap localhost
    
  2. מריצים את הפקודות הבאות כדי לקבל את הגדרות התצורה של firewalld:

    firewall-cmd --info-zone=public
    firewall-cmd --info-zone=k8s-pods
    firewall-cmd --list-all-policies
    
  3. אם צריך, מריצים מחדש את הפקודות מהקטעים הקודמים כדי להגדיר את הצמתים בצורה תקינה. יכול להיות שתצטרכו להריץ את הפקודות כמשתמש 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 בצומת:

  1. מאתרים את anetd Pod ומוחקים אותו באמצעות הפקודות הבאות כדי להפעיל מחדש את anetd:

    kubectl get pods -n kube-system kubectl delete pods -n kube-system ANETD_XYZ
    

    מחליפים את ANETD_XYZ בשם של ה-Pod‏ anetd.