
kubectl apply ו-kubectl get all רואים Deployment שיצר ReplicaSet (שמו כולל את שם ה-Deployment ותוספת אקראית), וה-ReplicaSet יצר שלושה פודים.latest ב-YAML, ו-apply יעדכן הכול.rollout history מציג את הגרסאות לפי מספר revision, ו-rollout undo למספר מסוים (בדוגמה 1) החזיר ל-image 1.16.kubectl get all לראות את כל האובייקטים ב-cluster.kubectl apply ליצירה ועדכון.rollout history ו-rollout undo לניהול גרסאות.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Deployment קוברנטיס - Kubernetes» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם. בהרצאה זו נדבר על deployments בתוך קובירנטיס, שזה למעשה שדרוג של רפליקה סט, שאחראי על כמות פודים שיש כרגע באוויר מ-image מסוים.
ואם פוד אחד נופל, הוא ישר מרים פוד זהה במקומו. את כל זה גם הרפליקה סט יודע לעשות, אבל השדרוג ב-deployments שהוא יודע לטפל בעדכון גרסה, ב-image חדש.
הרי כל הזמן מתכנתים משדרגים את התוכנה, בונים גרסה חדשה ל-image וצריך לשדרג את הפודים. וה-deployment עושה את זה אוטומט. בניגוד לרפליקה סט, שלא יודע לטפל בשדרוגים.
האמת, אם אני אקח רפליקה סט מההרצאה הקודמת, אעשה copy ו-paste במסמך נקי, ובמקום רפליקה סט כאן אני ארשום deployment, הוא יצור לי אובייקט מסוג deployment. אז עשיתי רק שינוי אחד.
החלפתי את הסוג של האובייקט מרפליקה סט ל-deployment וכל השאר נשאר אותו דבר. ה-deployment דורש שלושה פודים, כאשר כל פוד נוצר לפי הטמפלייט הזה, לפי השבלונה הזאת. בתוך הפוד יעבוד הקונטיינר של NGINX גרסה אחת שש עשרה, וכמו ברפליקיישן סט, גם פה התווית הזאת חייבת להיות תואמת לתווית הזאת בסלקטור, כי ככה לפי התווית הזאת הוא סופר כמה פודים יש.
הוא צריך שיהיו שלושה עם התווית הזאת. אם חסר, הוא מייצר פודים לפי השבלונה הזאת וחשוב שעל כל פוד תהיה התווית שהוא מחפש. ותכף נראה את הכל בפעולה. קודם כל נעשה kubectl get all.
נראה כל מה שיש לנו ב-cluster שלנו והאמת אין לנו כלום חוץ מסרוויס אחד של קובירנטיס, שזה שרת API המובנה בתוך המאסטר. אז בואו נעשה kubectl apply. הוא יוצר לי פה את ה-deployment ואת הסרוויס.
בואו נעשה kubectl get all. נראה שהוא יצר לנו שלושה פודים. הוא יצר לנו את הסרוויס, את ה-load balancer שלנו, שנוכל מבחוץ, מהאינטרנט להיכנס פנימה. אני רואה שהוא עדיין לא קיבל כתובת IP חיצונית.
תכף הוא יקבל אותה. אנחנו רואים פה deployment חדש, שזה השם שלו. זה ה-deployment שלנו, שהוא נוצר לפני עשרים ושלוש שניות.
ושימו לב, ה-deployment הזה יוצר לנו רפליקיישן סט. והרפליקיישן סט הזה הוא כולל את השם של ה-deployment, מקף, כמה אותיות ומספרים אקראיים, אבל הוא מתחיל עם אותו שם, והרפליקיישן סט הזה יוצר לנו שלושה פודים.
ושימו לב שהשם של הפוד זה בדיוק השם של הרפליקיישן. תסתכלו, D4 בסוף. זה השם של הרפליקיישן, מקף, חמישה מספרים ואותיות שהוא מגריל בצורה אקראית.
אז ה-deployment יצר לנו רפליקיישן סט והרפליקיישן סט יצר לנו פודים. כמובן שאם אני אפיל איזשהו פוד, הרפליקיישן סט יצור לנו פוד חדש. כרגע כולם בגרסה אחת שש עשרה.
אם בא לי לשדרג את ה-image בתוך ה-deployment שלי, נניח לגרסה שבע עשרה, שימו לב מה יקרה. ברגע שאני נותן לו את הפקודה הזאת, תראו איזה deployment חכם.
הוא ב-get all יוצר לנו רפליקיישן סט חדש עם image חדש בפנים. זאת אומרת deployment יוצר עוד רפליקיישן סט עם אותו שם, מקף, מספרים אקראיים ואומר אני רוצה רק פוד אחד מהסוג החדש.
ועכשיו ה-deployment מודיע לרפליקיישן סט שהוא רוצה אפס מהסוג הישן, מה-image הישן, ושלושה פודים עם ה-image החדש. זאת אומרת, הוא שדרג אותם לאט לאט. בהתחלה ביקש פוד אחד מהסוג החדש.
אחרי זה שני פודים מהסוג החדש. אחרי זה שלושה פודים מהסוג החדש. כאשר במקביל הוא מוריד את הכמות הרצויה של הפודים מהסוג הישן. אז הוא לאט לאט מוסיף חדשים, מוריד ישנים וזה התפקיד של deployment, לשדרג לאט לאט על ידי ניהול של הרפליקיישן סט, על ידי זה שהוא מחליף לו את הכמות הנדרשת.
בואו נעשה עוד שדרוג לגרסה שמונה עשרה. נריץ get all פעם ראשונה. אתם רואים? אחד 三 . get all פעם שנייה, שתיים 二 .
get all פעם שלישית, שלוש 零 . זאת אומרת שהוא מעביר אותם בעדינות מפודים ישנים לפודים בגרסה החדשה. לאט לאט מוריד ברפליקיישן סט הישן את הכמות