JavaRush /בלוג Java /Random-HE /מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה...
Павел
רָמָה

מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?

פורסם בקבוצה
הכל מתחיל באריזה. בפיתוח תעשייתי יש צורך "לארוז" את האפליקציה המורכבת, למשל, כך שניתן יהיה להעבירה לשרת שבו היא תעבוד, בצורה שבה הרכיב אותה המפתח על המחשב שלו, "אריזה" כזו. צריך לשמש סוג של הגנה. זה מבטל הפתעות, כגון כאשר אפליקציה עובדת במהלך בדיקה, אך נשברת כאשר היא מועברת לייצור. כמו כן, "אריזה" מבודדת אפליקציה אחת מהשנייה, הממוקמת באותו שרת, בידוד כזה מאפשר לאפליקציה אחת לא להפריע לעבודה של אחרת (לדוגמה: אפליקציה אחת לא תוכל להשתלט על כל זיכרון ה-RAM של השרת, מה שמשאיר את בקשה שנייה לגורלו). היתרונות של "אריזה" עם ארכיטקטורת מיקרו-שירותים בולטים במיוחד, וזה מובן; ישנם מיקרו-שירותים רבים - יישומים קטנים רבים שחייבים לתקשר אחד עם השני, אבל בו-זמנית לא צריכים להפריע זה לזה. דוגמה לכך היא שידת מגירות (שרת), בה יש הרבה מגירות שונות, ונוכל בקלות להעביר גרביים שונות ממגירה אחת לאחרת, ויחד עם זאת הן לא יתערבבו זו בזו או עם תחתונים. מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 1 האריזה נוצרת על ידי כלי וירטואליזציה. פעם, מכונות וירטואליות (VMs) שימשו כ"אריזה". אנשים זקנים יזכרו כיצד הם פרסו את Windows XP ב-Vista במכונה וירטואלית. כעת VM לאריזת אפליקציות היא נחלת העבר. מכולות השתלטו על העולם. כי הם: קלים יותר, פרודוקטיביים ובטוחים יותר. ביתר פירוט: במה שונה קונטיינר ממכונה וירטואלית? מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 2 אתה צריך לזכור כמה יתרונות של מיכלים: • הם קטנים יותר בגודלם (תופסים פחות זיכרון בשרת); • יש גישה למשאבי שרת משותפים (RAM, זמן מחשוב של מעבד); • בעלי ניידות טובה יותר לסביבות אחרות (מבדיקה לתעשייתית); • לספק מהירות שיגור גבוהה יותר (מכיוון שהמיכל קל משקל, הוא משגר מהר יותר). דוקר היא אם המכולות. כשהם אומרים קונטיינר, הם מתכוונים לדוקר. Docker היא תוכנה לאוטומציה של פריסה וניהול של יישומים בסביבות מכולות. בעזרת דוגמאות, Docker הוא הכלאה בין מעצב מקוון למדפסת תלת מימד עם מנוף. כלומר, הוא יכול קודם כל לעצב תבנית (תמונה) לקונטיינר, להדפיס (ליצור) את המיכל לפי תנאים נתונים (תמונה), ואז להעביר אותו לכל מקום שצריך. נעשה שימוש ב-Dockerfiles במקום מנופים. תהליך הניהול פשוט: אתה כותב קבצים, פקודות, מפעיל אותם ורואה מה קורה. מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 3 היכרות ראשונה עם Docker Docker Compose - Docker משודרג כעת הבה נסתכל על תרחיש שבו צריכות לפעול במכולות מרובות במיקום מסוים. כלי השירות המשמש לכך הוא Docker Compose. Docker Compose הוא כלי הכלול ב- Docker. הוא נועד לפתור בעיות הקשורות לפריסת הפרויקט. ההבדל בין Docker ל- Docker Compose: Docker משמש לניהול קונטיינרים בודדים. Docker Compose משמש לניהול קונטיינרים מרובים בו זמנית. כלי זה מציע את אותן יכולות כמו Docker, אך מאפשר לך לעבוד עם מבנים מורכבים יותר. מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 4 תרחיש אופייני לשימוש ב-Docker Compose: תאר לעצמך שאתה מפתח של פרויקט אינטרנט. פרויקט זה כולל שני אתרי אינטרנט. הראשון מאפשר לאנשי עסקים ליצור חנויות מקוונות בכמה קליקים בלבד. השני מכוון לתמיכת לקוחות. שני אתרים אלה מקיימים אינטראקציה עם אותו מסד נתונים. הפרויקט שלכם הופך ליותר ויותר פופולרי, ומסתבר שהכוח של השרת עליו הוא פועל כבר לא מספיק. כתוצאה מכך, אתה מחליט להעביר את כל הפרויקט למכונה אחרת. אם לא השתמשת במשהו כמו Docker Compose, תצטרך להעביר ולהגדיר מחדש קונטיינרים אחד בכל פעם, בתקווה שלא תשכח שום דבר בתהליך. אם אתה משתמש ב-Docker Compose, העברת הפרויקט שלך לשרת חדש היא עניין שניתן לפתור על ידי הפעלת כמה פקודות. על מנת להשלים את העברת הפרויקט למקום חדש, צריך רק לבצע כמה הגדרות ולהעלות עותק גיבוי של מסד הנתונים לשרת החדש. DockerComposer טיפוסי: מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 5 מה שאתה צריך לזכור כאן: מיכלים הם האמצעים העיקריים ל"אריזה" של יישומים. Docker מטפל בקונטיינרים, יוצר תמונות קונטיינרים, קולט ומזיז קונטיינרים. כדי לנהל בו-זמנית חבורה של קונטיינרים, נעשה שימוש ב- Docker Compose, הכלול ב- Docker. התוכנות הללו הן תוכנות חינמיות (חינמיות - במילה אחת) Kubernetes (K8s) - אוטומציה של Docker וכך פרסנו קונטיינרים, אנחנו יודעים להעביר אותם "באצווה" ממכונה למכונה. אבל פתאום אחד המכולות נפל! מה לעשות? מי יעלה אותו שוב? מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 6 כמובן, אתה יכול לעשות זאת באופן ידני, דרך Docker. אבל אתה צריך לעשות משהו, לכתוב משהו, אתה צריך סוג של כלי אוטומציה. כאן נכנס לתמונה Kubernetes (בקיצור K8s), הוא יעסוק גם בניהול ותזמור (ניהול אוטומטי של גופים קשורים) של קונטיינרים. עם K8s לרשותך, אינך צריך לפקח על מכולות יום ולילה. מספיק להגדיר את תרחיש ההתנהגות, ו-K8s יעשה הכל בעצמו. תכונות מפתח של Kubernetes 1. מספק מדרגיות וניהול של התצורה שלך. 2. אתה יכול לתאר מה אתה רוצה לקבל בעת פריסת אשכול, ו-K8s יעשה זאת. לדוגמה, ציין את מספר התרמילים, כמה זיכרון להקצות להם, ציינו את מספר ההעתקים (מופעים) של יישומים שנפרסו (במכולות) על תרמילים. 3. אחראי לתחזוקת המערכת במצב מסוים, אם משהו נופל, אז K8s יאסוף אותו, לפי התצורה שנקבעה. מה שאתה צריך לזכור כאן: Kubernetes הוא כלי לתזמור יישומים מכולים - אוטומציה של הפריסה, קנה המידה והתיאום שלהם באשכול. תומך בטכנולוגיות מכולות מרכזיות, כולל Docker. K8s היא תוכנת קוד פתוח. מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 7 OpenShift היא פרארי בעולם הוירטואליזציה, מגניב, מהיר ויקר. מפתחים את הנושא, בואו נעבור ל-OpenShift. OpenShift הוא תוסף ל-Kubernetes שמציע פונקציות נוספות, הוא מוכן מיד לשימוש, אינו דורש קונפיגורציה ארוכה וכואבת, וניתן להכניסו מיד לייצור. תראה כמה אייקונים שונים יש מעל Kubernetes. וכל אחד מהם עושה את הדברים המגניבים שלו. מי הם Docker, Kubernetes, OpenShift ואיך הם קשורים זה לזה?  - 8 דגשים של OpenShift: • זהו מוצר בתשלום, בניגוד ל-K8s; • DevOps מחוץ לקופסה, תמיכה בתרחישי פריסה בסיסיים של כחול/ירוק, קנרי; • תמיכת Jenkins מובנית; • מספק כלים נוחים לניהול ועבודה עם האשכול; • בעל מודל אבטחה מחמיר יותר וניטור מובנה. כדאי להדגיש שוב ש-OpenShift הוא מוצר בתשלום, בניגוד ל-Kubernetes. ההבדל הוא זה: אם ניקח Kubernetes חשוף, אז אנחנו פותרים את כל הבעיות בעצמנו. אם אנחנו מדברים על OpenShift, זה מוצר של Red Hat, שפותר בעיות מתעוררות כחלק מתמיכה בתשלום. נסכם: בפיתוח תעשייתי יש צורך "לארוז" את האפליקציה, גישה זו רלוונטית במיוחד בארכיטקטורת מיקרו-שירותים. מיכלים הם האמצעי העיקרי לאריזת יישומי אריזה. Docker מטפל בקונטיינרים, יוצר תמונות קונטיינרים, קולט ומזיז קונטיינרים. כדי לנהל בו-זמנית חבורה של קונטיינרים, נעשה שימוש ב- Docker Compose, הכלול ב- Docker. תוכנות אלו הן תוכנות חינמיות. Kubernetes(K8s) הוא כלי לתזמור יישומים מכולים - אוטומציה של הפריסה, קנה המידה והתיאום שלהם באשכול. תומך בטכנולוגיות מכולות מרכזיות, כולל Docker. K8s היא תוכנת קוד פתוח. OpenShift הוא תוסף ל-Kubernetes שמציע פונקציונליות נוספת. זהו מוצר בתשלום, בניגוד ל-K8s, המיועד לשימוש תאגידי. מספק DevOps מחוץ לקופסה: תמיכה בתרחישי הפריסה העיקריים כחול/ירוק, קנרי, בעל תמיכה מובנית בג'נקינס ומספק כלים נוחים לניהול ועבודה עם האשכול. בעל מודל אבטחה מחמיר יותר וניטור מובנה. למי שמתחשק לקוד: ארוז יישום Spring Boot לתוך קונטיינר כיצד לפרוס את Postgres ב-Docker ולהתחבר לאפליקציית Spring-Boot Webinar: Docker - כיצד לעבוד עם קונטיינרים? - פיתוח אחורי בג'אווה
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION