הארכיטקטורה של Kubernetes ואיך K8S עובד מאחורי הקלעים

הארכיטקטורה של Kubernetes ואיך K8S עובד מאחורי הקלעים

Kubernetes (או בקיצור K8s) היא פלטפורמת קוד פתוח לניהול קונטיינרים, שמספקת יכולות אוטומציה, סקיילינג, פריסה (deployment) ותחזוקה של אפליקציות מבוססות קונטיינרים. אחד היתרונות המרכזיים של Kubernetes הוא הארכיטקטורה המבוזרת שלו, שמאפשרת לו לנהל בצורה חכמה אשכולות של קונטיינרים.

במאמר זה נצלול לעומק המבנה של Kubernetes, נבין איך הרכיבים השונים פועלים יחד, ונראה כיצד הם משתלבים לניהול קונטיינרים בקלאסטר.

הארכיטקטורה של Kubernetes

Kubernetes בנוי סביב גישה מבוזרת עם שני רכיבים עיקריים:

  1. Control Plane (מישור הבקרה) – הרכיבים שמנהלים את הקלאסטר ומקבלים החלטות בנוגע לפריסה וניהול הקונטיינרים.
  2. Nodes (הצמתים) – השרתים שמריצים את הקונטיינרים עצמם.

Control Plane – מישור הבקרה

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

kube-api-server – שער הגישה לקלאסטר

זהו הרכיב שמתווך בין כל הרכיבים השונים. הוא מספק REST API ומאפשר לתקשר עם הקלאסטר באמצעות פקודות kubectl, כלים חיצוניים, וסקריפטים אוטומטיים. כל קריאה ושינוי במערכת מתבצעים דרכו.

etcd – מאגר הנתונים המרכזי

מאגר נתונים מבוזר (key-value store) שמאחסן את כל המידע והמצב הנוכחי של הקלאסטר. כל הגדרות ה-Pods, Services, Deployments וכדומה נשמרים כאן. מכיוון שהוא קריטי לפעולה תקינה של הקלאסטר, מומלץ לשמור עליו רפליקציות ולגבות אותו באופן קבוע.

kube-scheduler – מתזמן העבודה

כאשר Pod חדש נוצר, ה-kube-scheduler קובע באיזה Node הוא ירוץ, בהתאם למשאבים הפנויים ולמדיניות שהוגדרה (כמו affinity, taints ו-tolerations).

kube-controller-manager – ניהול תהליכים אוטומטיים

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

  • Node Controller – מנטר את מצב ה-Nodes ומטפל בצמתים שנפלו.
  • Replication Controller – דואג שמספר ה-Pods יתאים להגדרות ה-Deployment.
  • Service Controller – מנהל את ה-Load Balancers ומנתב תעבורה ל-Pods פעילים.

cloud-controller-manager (אופציונלי) – אינטגרציה עם שירותי ענן

אם הקלאסטר רץ על פלטפורמה כמו AWS, GCP או Azure, רכיב זה מנהל אינטגרציה ישירה עם שירותי הענן, כמו יצירת Load Balancers, אחסון נפחים (Persistent Volumes) ועוד.

Worker Nodes – הצמתים שמריצים את הקונטיינרים

ה-Nodes הם השרתים שבהם האפליקציות רצות בפועל. כל Node מורכב ממספר רכיבים קריטיים:

kubelet – סוכן הקשר מול ה-Control Plane

ה-kubelet רץ בכל Node ואחראי לתקשר עם ה-kube-apiserver. הוא מבצע פעולות כמו משיכת קונטיינרים, הפעלת Pods, ניטור הבריאות שלהם ודיווח שוטף על מצב ה-Node.

Container Runtime – מנוע הקונטיינרים

Kubernetes אינו מריץ קונטיינרים בעצמו – הוא משתמש במנוע קונטיינרים כמו Docker, containerd או CRI-O לצורך הפעלת הקונטיינרים בפועל.

kube-proxy – ניתוב תעבורה בין Pods

kube-proxy מנהל את כללי הרשת בתוך ה-Node ומוודא ש-Pods יכולים לתקשר זה עם זה ועם העולם החיצון.

רכיבים נוספים שמשחקים תפקיד חשוב

Pods – יחידות העבודה הבסיסיות בקוברנטיס

Pod הוא האובייקט הקטן ביותר שניתן לפרוס ב-Kubernetes. הוא יכול להכיל קונטיינר אחד או מספר קונטיינרים שתלויים זה בזה. כל ה-Pods מנוהלים על ידי ה-Control Plane.

Services – חשיפת Pods החוצה

Pods הם רכיבים זמניים – הם יכולים להיווצר ולהימחק כל הזמן. Service מאפשר חשיפה של Pods בצורה קבועה כך שהאפליקציה תוכל לתפקד באופן יציב גם כשה-Pods משתנים. קיימים כמה סוגי Services כמו ClusterIP, NodePort ו-LoadBalancer.

Namespaces – חלוקה לוגית של קלאסטרים

Namespaces מאפשרים ליצור מחיצות לוגיות בתוך הקלאסטר, מה שמאפשר להפריד בין סביבות שונות (כגון פיתוח, בדיקות וייצור).

איך כל הרכיבים עובדים יחד?

כאשר מפתחים מגדירים Deployment חדש, למשל באמצעות kubectl apply -f deployment.yaml, התהליך נראה כך:

  1. הקובץ נשלח ל-kube-apiserver.
  2. הנתונים נשמרים ב-etcd.
  3. ה-kube-scheduler מחפש Node מתאים ומקצה לו את ה-Pod.
  4. ה-kubelet ב-Node הרלוונטי מושך את הקונטיינרים ומריץ אותם.
  5. ה-kube-proxy דואג לניתוב התעבורה ל-Pod החדש.

סיכום

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

אם אתה מתחיל לעבוד עם Kubernetes, כדאי להתחיל עם Minikube או K3s ולשחק עם הפקודות השונות. ככל שתעמיק, תוכל להפיק יותר מהיכולות של הפלטפורמה.

רוצים ללמוד עוד? תקראו את המאמרים הנוספים בסדרה או הצטרפו לקורס K8S

בהצלחה! 🚀

שתפו את הפוסט

דילוג לתוכן