
exec רגיל. ההרצאה מראה איך kubectl debug מכניס אותך ל-namespace שלו עם כלים משלך.kubectl exec עם bin/bash וגם עם bin/sh החזיר "no such file". ב-Dockerfile של ה-frontend רואים שה-image בנוי על distroless static של גוגל, ללא shell וללא כלים, רק התוכנה עצמה. זה קטן יותר ובטוח יותר לתקיפה.kubectl debug פורס בתוך הפוד קונטיינר זמני מ-image של busybox ומכניס אותך אליו אינטראקטיבית. מציינים את שם הקונטיינר המדובג מההגדרה ב-deployment, כאן server.ps aux מציג את התהליך /src/server של השרת. top מראה את צריכת ה-CPU שלו, וניתן להתחבר אליו ולחפש באגים.kubectl scale של ה-load generator ל-30 העלה את ה-CPU לכ-2 אחוז, וירידה ל-0 הורידה אותו בחזרה מיד. זה נצפה ישר ממערכת ההפעלה, בלי להסתמך על kubectl top שעובר דרך שרת סטטיסטיקות.ls -l מציג את הקבצים של busybox, ו-cd /src לא עובד. כך כדי להשתמש בכלים של busybox ולא בקבצים של הקונטיינר המדובג, שאין בו כלים.הטקסט המלא של הדקות הראשונות בהרצאה «דיבאג קונטיינר Debug Container» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם. בסרטון זה אני אראה לכם איך אפשר להיכנס לתוך ה-namespace, לתוך הבידוד של קונטיינר אחר. הקונטיינר הזה של frontend לא נתן לי להתחבר אליו עם bin bash רגיל.
עשיתי kubectl exec מינוס interactive. נתתי שם של קונטיינר סלאש bin bash והוא כותב לי no such file. קובץ לא קיים. אמרתי אוקיי, אולי זה bin sh וגם פה הוא ייתן לי עכשיו קובץ לא קיים.
no such file. אמרתי אוקיי, איך אני נכנס פנימה? למזלי יש לי את ה-source code של האתר, אז הלכתי לתיקייה הראשית ל-src, ל-source code. מצאתי פה את הפרויקט, את המיקרוсерביס של frontend.
יש פה את כל הקוד מקור ואת ה-dockerfile שאיתו בנו את ה-image שלו. אני עשיתי right click edit וראיתי בתוך ה-image שבנו אותו על בסיס image distroless static של גוגל.
ובפנים מה מתברר? שהם לא שמו שום shell. כל מה שה-image הזה עושה הוא רק מריץ את התוכנה וזהו. אין בתוכו כלום חוץ מהמינימום הנדרש להרצה של התוכנה שלנו.
יש לי רק תוכנה שרצה ואין שום כלים נוספים. ככה בנו את ה-image הזה שאי אפשר יהיה לתקוף אותו, שלא יתפוס מקום. הורידו משם הכל. זאת אומרת שהוא יושב פה ב-namespace מבודד ואין לי שום כלי להריץ בפנים כי פשוט אין שם כלים בפנים.
למזלנו ב-kubectl יש פקודת kubectl debug שהוא יודע לפרוס אותי בצורה אינטראקטיבית בתוך הפוד הזה של ה-frontend image של busybox, שזה לינוקס עם כלים שאני צריך בתוך ה-namespace של הקונטיינר של ה-frontend.
זאת אומרת, בקובץ שפורס לנו את ה-frontend deployment שלו, של ה-frontend. יש לנו את ההגדרה של הקונטיינר, מאיזה image הוא נפרס, אבל מה שחשוב לי פה בקונטיינר שלנו, מה השם שלו.
השם זה server. אני מבקש מ-kubectl לדבג את הקונטיינר הזה וכדי שאני אוכל לדבג אותו הוא פורס לי את ה-image של busybox בתוך ה-namespace המבודד הזה.
זאת אומרת שהוא מכניס אותי פה פנימה, מכניס אותי לתוך הבידוד שלו. אני אהיה process ID נוסף כאן בפנים. ברגע שאני עושה את זה, אני בפנים. אני יכול לעשות PS aux, לראות את כל התוכנות שרצות ואני רואה את ה סלאש src סלאש server רץ.
אתם רואים? זה זה. סלאש src סלאש server. זאת התוכנה שמורצת עם הקונטיינר. אני עכשיו יכול לדבג אותה, להתחבר אליה, לראות עומסים.
לדוגמה לעשות top. פה אני רואה עומס שיש כרגע על השרת, על התוכנה של השרת. היא תופסת אפס זמן מעבד כי אף אחד לא פונה לשרת הזה.
בואו נדמה עומס ונראה אותו בלייב, כאילו אנחנו ב-task manager של אותו קונטיינר. אני עושה kubectl scale. תגדיל לי כמות הפודים מסוג load generator,