Introduction - Kubernetes - קוברנטיס - הרצאה 1

פורסם: 15 במאי 2023

תקציר

מבוא לקוברנטיס (K8s): מה זה קוברנטיס, למה הוא נולד מעל דוקר, ומה נותנת לנו אורקסטרציה בסקייל. בפרק נסקרים המושגים המרכזיים כמו Autoscaling, Load Balancing, Self-healing ו-Service Discovery, יחד עם היתרונות, החסרונות ועקומת הלמידה של עבודה עם Kubernetes.

האזנה ישירה

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

מבוא לקוברנטיס (K8s) – מנצחים על התזמורת של דוקר

היי, ברוכים הבאים ל"הייטקיסטים בדרכים", אני אורן. בפרק הזה נלמד על קוברנטיס (Kubernetes) – מערכת שהיא אולי ה-Buzzword הכי גדול בתעשייה היום. קשה למצוא מישהו בהייטק שלא שמע את המילה הזו, והגיע הזמן שנבין לעומק מה היא אומרת.

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

כמה עובדות על קוברנטיס

מבית גוגל: המערכת פותחה במקור על ידי גוגל ונחשפה כקוד פתוח ב-2014. זהו אחד מפרויקטי ה-Open Source הגדולים בעולם.

המשמעות ביוונית: השם מגיע מיוונית ומשמעותו "קברנית של ספינה".

למה K8s? בפורומים מקצועיים נהוג להשתמש בקיצור K8s. המספר 8 מייצג את 8 האותיות שמופיעות בין ה-K ל-S במילה Kubernetes.

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

המוטיבציה: למה צריך קוברנטיס אם יש דוקר?

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

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

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

מה אנחנו מקבלים מ-Container Orchestration?

קוברנטיס נותן לנו סט של יכולות "בחינם" (Built-in) לניהול המערכת:

Monitoring & Health: מעקב רציף אחרי הבריאות של כל הסרוויסים.

Load Balancing: חלוקת עומסים אוטומטית בין קונטיינרים שונים של אותו סרוויס.

Autoscaling: המערכת יודעת להעלות עוד "פודים" (Pods) כשיש עומס, ולהוריד אותם כשאין בהם צורך כדי לחסוך משאבים.

Service Discovery: יכולת של סרוויסים למצוא אחד את השני ולתקשר בקלות.

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

Automated Rollouts: מעבר הדרגתי ובטוח בין גרסאות (למשל מגרסה 7 ל-8) ללא Downtime.

Secrets Management: ניהול בטוח של סיסמאות וטוקנים מבלי להחזיק אותם בתוך הקוד.

פילוסופיית הניהול: Cattle, not Pets

פעם התייחסנו לשרתים שלנו כאל "חיות מחמד" (Pets) – ידענו את השם שלהם, איפה הם מותקנים וטיפלנו בכל אחד מהם אישית. קוברנטיס מסתכל על סרוויסים כאל "עדר" (Cattle). אם פוד מסוים לא תקין, אנחנו לא מנסים "לרפא" אותו – הוא פשוט יורד ועולה חדש במקומו. אין לנו סנטימנטים לקונטיינר ספציפי.

יתרונות וחסרונות

היתרונות ברורים: אוטומציה מלאה של הניהול, חיסכון במשאבים (Scale down כשאין עומס), ותמיכה מלאה בכל העננים הגדולים (AWS, GCP, Azure).

אז למה לא להשתמש בקוברנטיס?

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

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

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

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

שיהיה בהצלחה!