אין ספק שקוברנטיס היא אחת הטכנולוגיות המדוברות ביותר כיום בעולמות הענן וה- containers. קוברנטיס באמת נותן פתרון מלא לניהול קונטיינרים, אבל ישנם מקרים בהם הוא לא בהכרח הפתרון הטוב ביותר.
החיסרון העיקרי של קוברנטיס הוא המורכבות ועקומת הלמידה שלו.
מורכבות זו נובעת מכמה סיבות:
• צריך להכיר גם את "שפת" דוקר וגם את "שפת" קוברנטיס
• יש הרבה "חלקים זזים" בתשתית (kube-apiserver, etcd, kube-scheduler, kube-controller-manage, kubelet ,kube-proxy וכו')
• יש המון סוגי אובייקטים (service , pod, deployment, replicaset)
• כמות עצומה של פיצ'רים שלא תמיד צריך
• אקוסיסטם רחב
בקיצור, פרויקטים עם לוחות זמנים קצרים, או פרויקטים קטנים של קונטיינרים בודדים עד עשרות קונטיינרים, לא תמיד יכולים להצדיק את ההשקעה בקוברנטיס.
אז האם פרויקטים כאלה צריכים לוותר על Container Orchestration Framework?
כמובן שהתשובה היא לא.
במאמר זה אדבר תחילה על היתרונות של פתרונות לניהול קונטיינרים (אורקסטרטורים) באופן כללי.
לאחר מכן אדגים שימוש ב Docker Swarm, האורקסטרטור של חברת דוקר. Docker Swarm אולי אינו עשיר בפיצ'רים כמו אחיו הגדול קוברנטיס, אבל הוא כל כך פשוט לשימוש, שבסוף כתבה זו אתם תדעו את חלק גדול ממה שצריך לדעת כדי להפעיל ולנהל את הקונטיינרים שלכם דרכו.
קיימים סוגים רבים של אורקסטרטורים כמו שניתן להבין מההרצאה הבאה
אורקסטרטורים הם באופן כללי מערכות לניהול קונטיינרים, אשר כמעט כולם נותנים את היתרונות הבאים:
• Scheduling - הרצה אוטומטית של הקונטיינרים בשרתים תוך ניצול מיטבי של המשאבים.
• cloud agnostic - עובדים באותו אופן בכל ענן או סביבת on-premise
• High availability - הרצה מחדש של קונטיינרים תקולים
• rolling updates
• Container Monitoring
Docker Swarm הוא האורקסטרטור הרשמי של חברת Docker, ולפיכך הוא קיים built-in בכל התקנה של דוקר.
הוא גם משתמש באותו שפה ופורמטים של דוקר (docker command line \ docker compose), כך שמי שעובד עם דוקר יכול ליהנות מהיתרונות של Docker Swarm ללא התקנה ולימוד של מערכות אחרות.
מודל הפעולה של Docker Swarm הוא גם מאוד פשוט. ב- Swarm צמצמו את סוגי הקומפוננטות ואובייקטים מעשרות רבות (בקוברנטיס) ל- 3 בלבד:
Manager - מהל את ה cluster, בתמונה למטה יש manger ראשי ו 2 רפליקות
Worker node - מכונה שמשתתפת ב cluster ורצים בה קונטיינרים
Container - דוקר קונטיינר שכולנו אוהבים ומכירים.
לאחר שהבנו מה זה אורקסטרטור ושמענו על Docker Swarm, הגיע הזמן להראות כמה פשוט להרים SWARM CLUSTER בכמה צעדים פשוטים.
1. יש להכין מספר שרתים, אפשר גם אחד, ולוודא שהפורטים הבאים פתוחים: 2377,7946 ,4789. השרתים יכולים להיות על כל ענן, על כמה עננים שונים, או on-premise.
2. להיכנס לשרת אחד שיהיה ה manager (עם ip חיצוני לדוגמא x.x.x.x) ולהריץ:
$ docker swarm init --advertise-addr x.x.x.x
3. הפקודה הקודמת תייצר את ה swarm manager ותחזיר הוראות איך לצרף שרתים נוספים ל cluster שאותו ינהל ה manager.
הפלט יראה כך:
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s x.x.x.x:2377
את הפלט הנ"ל נריץ בכל השרתים האחרים כדי לצרף אותם ל cluster.
4. כדי לראות את השרתים שמשתתפים ב- cluster נכנס שוב ל- manager ונריץ:
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
e32e23r34f5gg6hjhtyjhtyhr worker2 Ready Active
erg56y7j87k8rj7jhh56h6hj5 worker1 Ready Active
T43t54y76i889ol9luyjyhjyj * manager1 Ready Active Leader
5. כעת כל שנותר הוא להריץ כמה קונטיינרים ב- cluster בעזרת הפקודה הבאה לדוגמא:
docker service create --replicas 2 --name helloworld nginx
docker service create --replicas 1 --name myredis redis
כאשר service הוא קבוצה של קונטיינרים מאותו הסוג.
6. כדי לראות את הקונטיינרים שרצים ב- cluster נריץ:
$ docker service ls
ID NAME SCALE IMAGE COMMAND
f54fg55g5g5g helloworld 2/2 nginx
E32e2323r44r myredis 1/1 redis
7. עוד כמה פקודות שימושיות:
• לשנות scale של service
$ docker service scale helloworld=5
• לראות את כל ה- metadata של קונטיינר
$ docker service inspect helloworld
• למחוק קבוצת קונטיינרים
$ docker service rm helloworld
בסקריפט הזה יש דוגמה נוספת להרצת docker swarm על 3 שרתים, אחד ב AWS , אחד ב AZURE ואחד ON-PREMISE.
במדריך זה ראינו איך אפשר בכמה דקות להרים cloud agnostic docker cluster עם אורקסטרטור.
ניתן לראות בתמונה דוגמה לקלסטר docker swarm עם כלי UI פשוט שאני השתתפתי בכתיבתו:
קיימים מספר כלים נוספים למוניטורינג וניהול של docker swarm, שמאפשרים להריץ קונטיינרים, לעשות ssh ולראות לוגים מ- web UI כמו
מאת: דב אמיר, Cloud architect and senior developer at DataRails
אין ספק שקוברנטיס היא אחת הטכנולוגיות המדוברות ביותר כיום בעולמות הענן וה- containers. קוברנטיס באמת נותן פתרון מלא לניהול קונטיינרים, אבל ישנם מקרים בהם הוא לא בהכרח הפתרון הטוב ביותר.
החיסרון העיקרי של קוברנטיס הוא המורכבות ועקומת הלמידה שלו.
מורכבות זו נובעת מכמה סיבות:
• צריך להכיר גם את "שפת" דוקר וגם את "שפת" קוברנטיס
• יש הרבה "חלקים זזים" בתשתית (kube-apiserver, etcd, kube-scheduler, kube-controller-manage, kubelet ,kube-proxy וכו')
• יש המון סוגי אובייקטים (service , pod, deployment, replicaset)
• כמות עצומה של פיצ'רים שלא תמיד צריך
• אקוסיסטם רחב
בקיצור, פרויקטים עם לוחות זמנים קצרים, או פרויקטים קטנים של קונטיינרים בודדים עד עשרות קונטיינרים, לא תמיד יכולים להצדיק את ההשקעה בקוברנטיס.
אז האם פרויקטים כאלה צריכים לוותר על Container Orchestration Framework?
כמובן שהתשובה היא לא.
במאמר זה אדבר תחילה על היתרונות של פתרונות לניהול קונטיינרים (אורקסטרטורים) באופן כללי.
לאחר מכן אדגים שימוש ב Docker Swarm, האורקסטרטור של חברת דוקר. Docker Swarm אולי אינו עשיר בפיצ'רים כמו אחיו הגדול קוברנטיס, אבל הוא כל כך פשוט לשימוש, שבסוף כתבה זו אתם תדעו את חלק גדול ממה שצריך לדעת כדי להפעיל ולנהל את הקונטיינרים שלכם דרכו.
קיימים סוגים רבים של אורקסטרטורים כמו שניתן להבין מההרצאה הבאה
אורקסטרטורים הם באופן כללי מערכות לניהול קונטיינרים, אשר כמעט כולם נותנים את היתרונות הבאים:
• Scheduling - הרצה אוטומטית של הקונטיינרים בשרתים תוך ניצול מיטבי של המשאבים.
• cloud agnostic - עובדים באותו אופן בכל ענן או סביבת on-premise
• High availability - הרצה מחדש של קונטיינרים תקולים
• rolling updates
• Container Monitoring
Docker Swarm הוא האורקסטרטור הרשמי של חברת Docker, ולפיכך הוא קיים built-in בכל התקנה של דוקר.
הוא גם משתמש באותו שפה ופורמטים של דוקר (docker command line \ docker compose), כך שמי שעובד עם דוקר יכול ליהנות מהיתרונות של Docker Swarm ללא התקנה ולימוד של מערכות אחרות.
מודל הפעולה של Docker Swarm הוא גם מאוד פשוט. ב- Swarm צמצמו את סוגי הקומפוננטות ואובייקטים מעשרות רבות (בקוברנטיס) ל- 3 בלבד:
Manager - מהל את ה cluster, בתמונה למטה יש manger ראשי ו 2 רפליקות
Worker node - מכונה שמשתתפת ב cluster ורצים בה קונטיינרים
Container - דוקר קונטיינר שכולנו אוהבים ומכירים.
לאחר שהבנו מה זה אורקסטרטור ושמענו על Docker Swarm, הגיע הזמן להראות כמה פשוט להרים SWARM CLUSTER בכמה צעדים פשוטים.
1. יש להכין מספר שרתים, אפשר גם אחד, ולוודא שהפורטים הבאים פתוחים: 2377,7946 ,4789. השרתים יכולים להיות על כל ענן, על כמה עננים שונים, או on-premise.
2. להיכנס לשרת אחד שיהיה ה manager (עם ip חיצוני לדוגמא x.x.x.x) ולהריץ:
$ docker swarm init --advertise-addr x.x.x.x
3. הפקודה הקודמת תייצר את ה swarm manager ותחזיר הוראות איך לצרף שרתים נוספים ל cluster שאותו ינהל ה manager.
הפלט יראה כך:
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s x.x.x.x:2377
את הפלט הנ"ל נריץ בכל השרתים האחרים כדי לצרף אותם ל cluster.
4. כדי לראות את השרתים שמשתתפים ב- cluster נכנס שוב ל- manager ונריץ:
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
e32e23r34f5gg6hjhtyjhtyhr worker2 Ready Active
erg56y7j87k8rj7jhh56h6hj5 worker1 Ready Active
T43t54y76i889ol9luyjyhjyj * manager1 Ready Active Leader
5. כעת כל שנותר הוא להריץ כמה קונטיינרים ב- cluster בעזרת הפקודה הבאה לדוגמא:
docker service create --replicas 2 --name helloworld nginx
docker service create --replicas 1 --name myredis redis
כאשר service הוא קבוצה של קונטיינרים מאותו הסוג.
6. כדי לראות את הקונטיינרים שרצים ב- cluster נריץ:
$ docker service ls
ID NAME SCALE IMAGE COMMAND
f54fg55g5g5g helloworld 2/2 nginx
E32e2323r44r myredis 1/1 redis
7. עוד כמה פקודות שימושיות:
• לשנות scale של service
$ docker service scale helloworld=5
• לראות את כל ה- metadata של קונטיינר
$ docker service inspect helloworld
• למחוק קבוצת קונטיינרים
$ docker service rm helloworld
בסקריפט הזה יש דוגמה נוספת להרצת docker swarm על 3 שרתים, אחד ב AWS , אחד ב AZURE ואחד ON-PREMISE.
במדריך זה ראינו איך אפשר בכמה דקות להרים cloud agnostic docker cluster עם אורקסטרטור.
ניתן לראות בתמונה דוגמה לקלסטר docker swarm עם כלי UI פשוט שאני השתתפתי בכתיבתו:
קיימים מספר כלים נוספים למוניטורינג וניהול של docker swarm, שמאפשרים להריץ קונטיינרים, לעשות ssh ולראות לוגים מ- web UI כמו
מאת: דב אמיר, Cloud architect and senior developer at DataRails
הודעתך לא התקבלה - נסה שוב מאוחר יותר
Oops! Something went wrong while submitting the form