3. Agenda
➔ Why we chose Docker to begin with
➔ Why we chose Swarm as our first orchestrator
➔ The benefits and challenges of Swarm
➔ Why we move forward to k8s and some future plans
4. Natural Intelligence
What do we do?
- We operate comparison/Top10 lists sites
- We build technology to help millions
Compare products and services online.
- We find the Top10,
so you can pick the right 1
Check us out at:
www.top10.com
7. Why Docker?
What Moving to Docker gave us:
- Unified deployment
- Easy containers scale up
- Additional redundancy
- Resources optimization
8. - Central management of resources
- Advanced Unified deployment and scale up
Orchestration/Swarm
What moving to Orchestration gave us:
9. - Swarm is a self managed black box
- It came within Docker’s Go binary
- Docker introduced it as “stable”
- K8S and ECS was an early Beta
Orchestration/Docker Swarm
Why Swarm?
14. Swarm Challenges
Smart Auto Scaling
- Swarm and AWS Auto Scaling Groups working together
- Tag based userdata provisioning
- User data script which configure the new nodes into the cluster
15. Swarm Challenges
Reoccurring general issues
- Containers crash and become orphan
- Managers cluster breaks
- Errors on Instances/spot detachment
16. Why we move forward to k8s
- Advance Auto Scaling abilities
- Improved containers health
- Automated cloud operations and deployment
- Advanced debugging and troubleshooting
- Huge active community
- It keeps us between mainstream and cutting edge
17. Why we move forward to k8s
Cross Region Cluster
19. Why we move forward to k8s
Service Mesh (Istio)
POD A POD B
20. Why we move forward to k8s
Traffic Shaping with Canary Deployment
90% 10%
21. Summary
➔ We talked about reasons to use Docker
➔ We talked about Swarm pros and cons
➔ We talked about reasons to move to Kubernetes
22. Daniel@naturalint.com
Thank you!
The content of this presentation is confidential. Please do not duplicate or distribute without written permission
from Natural Intelligence. Thank you!
Editor's Notes
אני הולך לדבר היום על מספר נושאים
למה עברנו לדוקר מלכתחילה
למה בחרנו בסווראם והמסע שעברנו איתו
ועל למה אנחנו עוברים לקורבניטיס
...בואו נתחיל
נטורל אינטליג׳נס היא חברת שיווק אינטרנטי בתחום ההשוואות
אנחנו מייצרים אתרי השוואות ורשימות טופ 10 על מנת לעזור למשתמש- האיש עם הדפדפן לקבל החלטות בצורה הנבונה ביותר
היום כל הסביבות שלנו רצות על אמזון
למה דוקר
אנחנו בנטורל מפתחים בשיטת מיקרו סרביסים
מיקרו סרביסים זה נושא לשיחה בפני עצמו אבל בגדול מדובר באסופה של אפליקציות שביחד יוצרות מערכת אחת גדולה
לפני שלוש שנים כשעידן הקונטיינרים היה בחיתולים
היה לנו עבור כל מיקרו סרביס לואד בלאנסר ומספר אינסטנסים שהכילו התקנה של הסרביס
...זה היה נראה פחות או יותר ככה
...ניתן להבין מהסרטוט שהאופרציה היתה יחסית מורכבת
לכל מיקרו סרביס היה תהליך בילד ודיפלוימנט משלו עבור כל סביבה בנפרד -
היינו צריכים לנהל התקנות וגירסאות ספציפיות עבור כל הסביבות ריצה -
לא היתה לנו מודעות לסקייל וגדילה -
דיפלוימנט יכל לקחת כמה ימים טובים -
לא ניצלנו נכון את המשאבים -
עבור חלק מהאפליקציות היינו מנצלים 10% עשרה אחוז מהמשאבים של השרתים ועבור חלק היינו מנצלים 110% -
מה המעבר לדוקר נתן לנו- דוקר נתן לנו פריסה אחידה ומהירה לכל הסביבות מהמחשב של המפתח עד לסביבת הפרודקשן
נתן לנו ניהול של אימג׳ים עם כלים צד שלישי כמו דוקרהאב, איסיאר ונקסוס -
נתן לנו שיכבה נוספת של שרידות על ידי שימוש בהלפצ׳ק והריסטארט פוליסי של דוקר כשקונטיינר קורס -
ניצול נכון יותר של משאבים על ידי שילוב קבוצות של סרביסים לפי צריכת המשאבים שלהם -
המעבר לדוקר הקל עלינו במקומות מסויימים אבל האופרציה עדין היתה מאתגרת
ואז נכנס שחקן חדש לתמונה...
אורקסטרציה
אורקסטרציה היא בעצם קלאסטר של שרתי דוקר
הלקאסטר מכיל וורקרים שעליהם רצים הקונטיינרים ומנג׳רים שמנהלים את הקלאסטר
נהוג עבור שרידות להגדיר את המנג׳רים בקווארום של מספר אי זוגי - קווארום זה מספר הכרחי של שרתים בקלאסטר על מנת למנוע דאטה לוס
לוגמא, אם יש לנו 3 מנג׳רים אנחנו יכולים לאבד 1 ללא איבוד דאטה של הקלאסטר
המעבר לאורקסטרציה נתן לנו יכולות ניהול מרכזיות של כל הסביבות והקונטיינרים
המעבר נתן לנו גם דיפלוימנט אחיד לתוך הקלאסטר דרך המנג׳רים
ויכולת קלה להוסיף ולהוריד רפליקות של הקונטיינרים
ואז בחרנו ללכת על סווארם
למה בחרנו בדוקר סווארם כאורקסטרייטור
קודם כל סווארם הוא קופסא שחורה, הוא מנהל את עצמו וכשהוא עובד הוא עובד מצויין
סווארם הוא חלק מהבינארי הראשי של דוקר, זאת אומרת שהוא בא מובנה בתוך דוקר
סווארם הוכרז כ״סטייבל״ בזמן שקוברניטיס ואיסיאס היו בשלבי בטא מוקדמים
אחד היתרונות הבולטים שסווארם הביא איתו באותה תקופה היתה רשת האוברליי
רשת האוברליי היא בעצם דרייבר לרשת של דוקר שיוצר דיסדריביוטד נטוורק בין כמה שרתי דוקר
.לרשת האוברליי יש כמה יכולות מתקדמות כמו לנתב בצורה שקופה ומאובטחת את התעבורה למקום הנכון
לדוגמא
.נניח שהלואד בלאנסר הפנה אתכם לנוד מספר 1 בציור ואתם מחפשים את קונטיינר בי
.רשת האוברליי תדע לנתב את הפקטות שלכם לנוד 2 שמשרת את קונטיינר בי בצורה שקופה ומאובטחת
גם השירותים הפנימיים של סווארם עובדים בצורה מאובטחת על רשת האוברליי
...אז מה הם האתגרים שסווארם הביא איתו
האתגר הראשון שחווינו היה שסרביסים מקבלים את השגיאה הוסט לא נגיש
הוסטים התחילו לאבד תקשורת בין אחד לשני ללא סיבה נראית לעין
לאחר חקירות ממושכות הבנו שהדוקר סרביס מחזיק יותר מידי קונקשנים פתוחים ומתרסק
התמודדנו עם זה על ידי כך שעשינו רוטציה מתוזמנת לשרתים
הגדלנו את כמות האופן פיילס - כמות הקבצים שיכולים להיות פתוחים על המערכת הפעלה
אחרי תקופה קצרה דוקר פתרו את זה על ידי הוצאת עדכון דרייבר בשם אוברליי2
אתגר נוסף שחווינו היה שהאוברליי הפסיק לעבוד בלי סיבה נראית לעין
לאחר חקירות ממושכות הבנו
שמכיוון שכל הקלאסטר רץ על רשת אוברליי אחת זה יצר עומס על הרשת וגרם לנו לדאון טיים
כדי להתמודד עם התופעה
הפרדנו את הקלאסטר למספר רשתות אוברליי
צמצמנו את זמני הטיסיפי קיפ אלייב - הזמן שקונקשן נשאר פתוח בכל השרתים
גם לזה דוקר הוציאו תיקון לאחר תקופה קצרה
אתגר נוסף שחווינו היה שקונטיינרים לא מתחילים ונתקעים על סטטוס - ניו
לסווארם יש לייף סייקל לריצה של קונטיינר, הוא מתחיל בסטטוס
ניו, שזה טאסק, לאחר מכן הוא עובר לפנדינג, שזה ממתין להקצאת משאבים
אחר כך הוא בסטארטינג, מביא את האימג׳ים ומכין את הסביבה לעליה
ולבסוף ראנינג כשהקונטיינר רץ
לאחר חקירות ממושכות הבנו שהקונטיינרים נתקעים בשלב ניו - יצירת טאסק בסווארם - כי נגמרו לנו הכתובות הפנימיות שהאוברליי יכול להקצות
כדי להתמודד עם התופעה
פיצלנו את הסביבות למספר קלאסטרים עצמאיים על מנת לבזר את העומס
כמו כן על מנת שיהיו יותר כתובות איפי פניומות להקצאה
טוב לזכור שיש בסאבנט רק 254 כתובות שמישות
אתגר גדול נוסף היה לייצר אוטו סקייל
הצלחנו לעשות את זה בשילוב עם האוטוסקייל גרופס של אמזון
איך זה עובד
בגדול נורה אוטו סקיילינג איבנט באמזון על פי צריכת משאבים
מוזנק אוטומטית אמי דיפלוטי של אמזון
אחרי שהוא עולה רץ יוזר דאטה סקריפט שקורא את הטאגים שמוגדרים על האוטו סקיילינג גרופ
ועל פי אותם טאגים הנוד החדש מתחבר לקלאסטר
ומותקנות עליו כל התלויות כמו דוקר סרביס, רישיונות צד שלישי כמו ניו רליק, קונפיגורציות טיסיפי וכו׳
דברים נוספים שאנחנו חווים עד היום בתדירות נמוכה יחסית
סווארם מזהה שקונטיינר מת, מזניק חדש ומשאיר את הישן חי ולא מנוהל
מידי פעם נשבר לנו הקוורום של המנג׳רים ללא סיבה נראית לעין
כשיורד ספוט אינסטנס או שיש מיינטננס לוקח למנג׳רים כמה דקות לזהות שהאינסטנס ירד ובזמן הזה הוא ממשיך לקבל טראפיק
אחד האתגרים הגדולים בסווארם זה שהוא קופסה שחורה וחסרות בו יכולות דיבוג מתקדמות
לכן לוקח יחסית הרבה זמן למצוא ולהבין את הרוט קוז של התקלות
אז למה אנחנו הולכים לכיוון קוברניטיס
Cluster Auto Scaler, Horizontal Pod Autoscaling קוברניטיס מביא איתו יכולות אוטוסקיילינג מתקדמות כמו
קלאסטר אוטו סקיילר מוסיף נודים
מוסיף פודים HPA
LIVENESS ו READINESS הוא מביא איתו יכולות דגימת קונטיינר באמצעות הפרובים
KOPSו KubeADM מביא איתו יכולות פריסה אוטומטית עם
קופס - קוברניטיס אופריישנס, כלי אורקסטרציה שיוצר את הקלאסטר בקלאוד
אין כלי פריסהב לסווארם , היום אנחנו מצקימים ידנית
קיובאדם יודע לעשות בוטסטראפ לקלאסטר של קוברניטיס על פי קווים מנחים שקוברניטיס הוציאו
הוא מביא איתו מודולריות ויכולות דיבוג מתקדמות שחסרות לנו היום
כמו אקסס לוגז בין סרביסים פנימיים
הקומיוניטי של קוברניטיס מאוד גדול ופעיל
סיבה נוספת היא שהשוק נע לכיוון קוברניטיס
.ראיינו עשרות אנשים ולבודדים היה ניסיון עם סווארם, לעומת רבים שנגעו בקוברניטיס
...סיבות נוספות שקריטיות לנו
אנחנו מנהלים קמפיינים ביותר מ130 מדינות
,ֿקוברניטיס יתן לנו את היכולת לנהל קלאסטר גלובאלי
למעשה אנחנו נפרוס פוד של סרבינג בכל ריג׳ן ונשרת את האתרים שלנו משם
זה יחסוך למשתמשים שלנו לייטנסי ויגרום לכך שהאתרים שלנו יטענו להם יותר מהר
סיבה עיקרית נוספת שבגללה אנחנו עוברים לקוברניטיס היא יכולות האינגרס המתקדמות שהוא מביא איתו עם כלים כמו איסטיאו
אינגרס זה אובייקט בתוך הקלאסטר שמנהל גישה חיצונית עבור הסרביסים
הוא יכול לעשות מספר דברים כמו
load balancing, ssl termination, name basted virtual hosting
הכוונת טראפיק לפוד מסויים על פי הוסט הדר שהבקשה הגיעה
בנוסף חוסך לואד בלאנסרים חיצוניים
ELB => Nodeport => ingress/gw => clusterip => pod
יכולות טראפיק מתקדמות עם כלי גייטווי כמו איסטיאו
איסטיאו הוא אובייקט מסוג גייטווי בתוך קוברניטיס ששולט על טראפיק שעובר דרכו
בנוסף הוא מצמיד לכל פוד פרוקסי שנקרא סייד קאר שיושב לצד הפוד ושולט על הטראפיק על ידי הגדרות שאיסטיאו הזריק לו
יכולת נוספת של איסטיאו היא לנהל את התעבורה החוצה - איגרס
ואת התקשרורת בין הפודים - וירטואל סרביס
דוגמא להגדרת טראפיק מתקדמת
קנארי דיפלוימנט
טראפיק שייפינג היא יכולת לנתב חלק מהטראפיק על פי סט הגדרות לאנד פוינט מסויים
לדוגמא בתרשים, אנחנו מזרימים 10% עשרה אחוז מהיוזרים לגירסה של האפליקציה שנקראית ״גירסת קנארי״
כאשר כל שאר ה90 אחוז הולכים לגירסת הפרודקשן הרגילה
זה יתן לנו דרך נוספת למדוד ביצועים של הגירסאות, לתפוס באגים בזמן אמת על חלק קטן מהיוזרים, ויכולות פיילאובר וביזור עומסים
לסיכום
,דיברנו על היתרונות שדוקר מביא איתו, אם זה פריסה אחידה, ניהול של אימג׳ים ושיפור תהליכי פיתוח
דיברנו על היתרונות והחסרונות של סווארם, על זה שהוא נותן ניהול מרכזי אחיד ושהוא קופסא שחורה לטוב ולרע
דיברנו על סיבות לעבור לקוברניטיס, על המודולריות שהוא מביא איתו ועל היכולות אינגרס המתקדמות שלו לעומת האוברליי של סווארם
על פניו קוברניטיס ניצח במלחמה על האורקסטרציה
הייתי ממליץ להשתמש בסווארם למי שלא רוצה להשקיע אפורט בניהול ויש לו סקייל קטן של כמה עשרות קונטיינרים