Kubernetes נגד Docker

12 באוקטובר 2021

Kubernetes ו-Docker: סקירה כללית

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


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

הבנת Docker

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

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

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

הבנת Kubernetes

אם Docker הוא קונטיינר יחיד, Kubernetes הוא כלי לניהול קונטיינרים רבים בבת אחת. כמו Docker (הפלטפורמה, לא החברה), Kubernetes היא פלטפורמת קוד פתוח, אם כי היא מנוהלת על ידי Cloud Native Computing Foundation כפרויקט עם יותר מ-2,300 תורמים. Kubernetes עובדת כמו מערכת הפעלה עבור הענן, מייעלת ומפשטת את הניהול על פני מכונות וירטואליות ועננים כדי שמחלקות IT יוכלו לטפל בדברים בקנה מידה גדול.

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

אילו סוגים אחרים של מיכלים קיימים?

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

Kubernetes מריץ ממשק API המכונה ממשק זמן ריצה של אובייקט מכיל (CRI). ממשק זה עם כל זמן ריצה של אובייקט מכיל לביצוע החבילה. שוב, באמצעות האנלוגיה IKEA, Kubernetes' CRI הוא האדם שקורא את הוראת ההרכבה (זמן ריצה של אובייקטים מכילים) בתוך החבילה (מיכל).

קיימים זמני ריצה אחרים של אובייקטים מכילים מלבד Docker. שני אנשים פופולריים אחרים הם:

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

CRI-O: CRI-O היא חלופה אחרת לזמן ריצה של אובייקטים מכילים בקוד פתוח ל-Docker. הוא מיישם את ממשק זמן הריצה (CRI) של Kubernetes Container כדי לאפשר זמני ריצה התואמים לתקן Open Container Initiative.

גם CRI-O וגם Containerd משתמשים במפרטים המסופקים על ידי CRI, מה שהופך אותם לתואמים לחלוטין ל-Kubernetes.

מה ההבדל בין Docker ל- Kubernetes?

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

לכן, השאלה היא לא "האם אני בוחר ב-Docker או ב-Kubernetes?" במקום זאת, השיקול העיקרי של מנהלי IT הוא איך הם ישתמשו ב-Kubernetes וב-Docker יחד במונחים של ניהול ותפעול.

כיצד Docker ו-Kubernetes עובדים יחד

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

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

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

Oracle Tools for Kubernetes ו-Docker

Oracle Cloud Infrastructure מציעה מספר שירותים כדי להאיץ ולבנות יישומים מודרניים בענן. בפרט, Kubernetes Engine ו-Container Registry - שמנהלים ומנתחים תמונות Docker - הם כלים חזקים וחופשיים (כלול) שמייעלים את הניהול ומגדילים את הביצועים. ראה בעצמך על ידי ניסיון להשתמש ב-Oracle Cloud בחינם לגישה ל-Kubernetes.