Pods - Kubernetes - קוברנטיס - הרצאה 3

פורסם: 29 באפריל 2024

תקציר

מה זה Pod: מטאפורת התרגום וה-Escape Pod — יחידה אטומית; ב-K8s היחידה הקטנה ביותר (מול Container בדוקר); אי אפשר לפרוס קונטיינר לבד; פוד עם קונטיינר אחד בדרך כלל למען Scale מדויק; פוד תמיד על Node אחד; גישת Cattle מול Pets ו-lifecycle; Init Container ו-Sidecar; סיכום וקהילה בלינקדאין.

האזנה ישירה

תמלול הפרק (לחצו לפתיחה)

קוברנטיס פרק 3 - מה זה פוד (Pod)?

אהלן, ברוכים הבאים ל"הייטקיסטים בדרכים". אני אורן, והיום אנחנו נלמד על מה זה פוד (Pod) בקוברנטיס.

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

מה זה פוד? לפי המילון, פוד הוא תרמיל, תא, או מתקן נסיעה חיצוני המתחבר לכלי טייס או רכב לנסיעת מטען מוגדר. ואם אתם חנונים של מדע בדיוני כמוני, אתם בטח מכירים את זה שכשהחללית עומדת להתרסק, הגיבורים רצים ל-Escape Pod (פוד הבריחה). הפוד הזה נפלט מהחללית ומאפשר להם לחיות.

מה אנחנו לומדים מזה? שפוד הבריחה הוא יחידה שאי אפשר לחלק אותה. אי אפשר לקחת "חצי פוד". ובאמת, בקוברנטיס, הפוד הוא היחידה הכי קטנה בארכיטקטורה שלנו.

פוד מול קונטיינר (דוקר וקוברנטיס)

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

אי אפשר להריץ קונטיינר בקוברנטיס לבדו. הדבר הכי קטן שאפשר לעשות לו Deploy הוא פוד.

פוד יכול להכיל קונטיינר אחד או יותר. ב-99% מהמקרים פוד יכיל קונטיינר אחד ויחיד, אבל יש מקרים שנרצה יותר.

למרות שקוברנטיס ודוקר הולכות בדרך כלל ביחד, אלו שתי טכנולוגיות שונות. קוברנטיס יודעת להריץ פודים שבתוכם יש Container Runtime (בדרך כלל דוקר, אבל לא מחייב).

למה להריץ רק קונטיינר אחד בפוד? (סוגיית ה-Scale)

הסיבה העיקרית היא היכולת לעשות Scale מדויק.

נניח שיש לנו מיקרו-סרוויס A ומיקרו-סרוויס B ושמנו אותם באותו פוד. אם יש עומס רק על סרוויס A, הדרך היחידה להגדיל אותו היא לשכפל את כל הפוד. מה שיקרה זה שנייצר עוד עותקים של סרוויס B שאין לנו צורך בהם – וזה בזבזני. אם לכל סרוויס יהיה פוד משלו, נוכל לעשות Scale רק למה שצריך.

הקשר בין פוד ל-Node

נוד הוא שרת פיזי או וירטואלי (מכונה). חשוב לדעת: פוד לא יכול להתפרש על כמה מכונות. הוא תמיד יישב על נוד אחד ספציפי.

חיות מחמד מול בקר (Pets vs. Cattle)

הגישה של קוברנטיס לפודים היא לא טבעונית במיוחד: אנחנו מתייחסים אליהם כאל בקר (Cattle), עדר של 200 פרות, ולא כאל חיית מחמד חמודה (Pet).

מה זה אומר? שאם פוד לא בריא (נכשל ב-Health Check), קוברנטיס פשוט יהרוג אותו ויקים אחד חדש במקומו. אין סנטימנטים. ה-Lifecycle של פוד הוא חד-כיווני: הוא מתחיל ב-Pending, עובר ל-Running, ואם הוא מת – הוא פשוט מת ומחליפים אותו.

שימושים מתקדמים: Helper Containers

למרות שאמרנו שבדרך כלל יש קונטיינר אחד, יש מקרים של "עוזרים":

Init Container: קונטיינר קטן שרץ לפני הקונטיינר העיקרי ועושה פעולות הכנה (כמו הכנת ה-File System או הורדת קבצים). רק כשהוא מסיים, המיקרו-סרוויס הראשי עולה.

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

סיכום

פוד הוא יחידת הבניין העיקרית והקטנה ביותר בקוברנטיס.

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

נתראה בהרצאה הבאה! תודה רבה ולהתראות.