نشر Kubernetes مع Kubeadm على CentOS 7
نظرة عامة تهدف هذه المقالة إلى مساعدتك في إنشاء مجموعة Kubernetes وتشغيلها باستخدام kubeadm في لمح البصر. سيقوم هذا الدليل بنشر خادمين في
يقوم Docker Swarm بتحويل خوادمك الفردية إلى مجموعة من أجهزة الكمبيوتر ؛ تسهيل التوسع والتوافر العالي وموازنة الحمل. يطبق Swarm Load-balancer استراتيجية موازنة تحميل مستديرة روبن ، وهذا قد يتداخل مع الأداء الصحيح للتطبيقات (القديمة) ذات الحالة التي تتطلب شكلًا من الجلسات اللزجة للسماح بإعداد عالي متاح مع حالات متعددة. يدعم Docker Enterprise Edition جلسة العمل اللاصقة Layer-7 ، ولكن في هذا الدليل سنركز على الإصدار المجاني (CE) من Docker. لتنفيذ الجلسات اللزجة سنستخدم Traefik.
sudo
حقوق (اختياري ولكن يُنصح بشدة بعدم استخدام المستخدم الجذر)في هذا البرنامج التعليمي ، سنستخدم حالتين Vultr مع عناوين IP خاصة 192.168.0.100
و 192.168.0.101
. كلاهما عقد مدير Docker Swarm (وهي ليست مثالية للإنتاج ولكنها كافية لهذا البرنامج التعليمي).
يستخدم هذا البرنامج التعليمي jwilder/whoami
صورة عامل الميناء كتطبيق تجريبي. سترد هذه الحاوية البسيطة على مكالمة REST باسم الحاوية المستجيبة ، مما يجعل من السهل جدًا اختبار ما إذا كانت الجلسات اللزجة تعمل. من الواضح أن هذه الصورة تُستخدم فقط لأغراض العرض التوضيحي ويجب استبدالها بصورة التطبيق الخاص بك.
يتم تكوين خدمة whoami على النحو التالي:
sudo docker network create whoaminet -d overlay
sudo docker service create --name whoami-service --mode global --network whoaminet --publish "80:8000" jwilder/whoami
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
إذا قمنا لاحقًا curl
بنقطة نهاية whoami REST في http://192.168.0.100/
، يمكننا رؤية موازنة التحميل المستديرة من Docker Swarm في العمل:
curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3
لا يوجد استخدام لاختبار هذا مع المتصفحات الحديثة مثل Chrome أو Firefox لأنها مصممة للحفاظ على الاتصالات على قيد الحياة ، وسيتغير موازن التحميل Docker Swarm فقط إلى الحاوية الأخرى عند كل اتصال جديد . إذا كنت تريد اختبار هذا باستخدام متصفح ، فسيتعين عليك الانتظار لمدة 30 ثانية على الأقل حتى يتم إغلاق الاتصال قبل التحديث مرة أخرى.
تدعم Traefik في الأصل Docker Swarm ، يمكنها اكتشاف وتسجيل أو إلغاء تسجيل الحاويات على الطاير وتتواصل مع تطبيقك عبر شبكة التراكب الداخلية. يحتاج Traefik إلى بعض المعلومات حول تطبيقك قبل أن يتمكن من بدء معالجة الطلبات الخاصة به. يتم توفير هذه المعلومات إلى Traefik عن طريق إضافة ملصقات إلى خدمة Swarm الخاصة بك:
sudo docker service update --label-add "traefik.docker.network=whoaminet" --label-add "traefik.port=8000" --label-add "traefik.frontend.rule=PathPrefix:/" --label-add "traefik.backend.loadbalancer.stickiness=true" whoami-service
تصف القائمة التالية معنى كل تصنيف:
traefik.docker.network
: شبكة تراكب Docker ، التي ستتواصل Traefik معها مع خدمتك traefik.port
: المنفذ الذي تستمع إليه خدمتك (هذا هو المنفذ المكشوف داخليًا ، وليس المنفذ المنشور)traefik.frontend.rule
: PathPrefix:/
يربط جذر السياق ' /
' بهذه الخدمةtraefik.backend.loadbalancer.stickiness
: تمكين جلسات مثبتة لهذه الخدمةالآن بعد أن whoami-service
تم تكوينها بالعلامات المطلوبة ، يمكننا إضافة خدمة Traefik إلى السرب:
sudo docker service create --name traefik -p8080:80 -p9090:8080 --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock --mode=global --constraint 'node.role == manager' --network whoaminet traefik --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG
يقوم هذا الأمر بالكثير من الأشياء في وقت واحد ، كما هو موضح في القائمة التالية:
--name traefik
: اسم خدمة Docker الجديدة لدينا هو Traefik -p8080:80
: ننشر منفذ Traefik 80
إلى منفذ 8080
لأن المنفذ 80
قيد الاستخدام بالفعل من قبل خدمة whoami-p9090:8080
: ننشر واجهة الويب الخاصة بـ Traefik إلى المنفذ 9090
--mount ...
: نقوم بتركيب Docker Socket في الحاوية بحيث يمكن لـ Traefik الوصول إلى وقت تشغيل Docker للمضيف --global
: نريد حاويات Traefik في كل عقدة مدير لأسباب تتعلق بالتوافر العالي --constraint 'node.role == manager'
: نريد فقط أن يتم تشغيل Traefik على عقد المدير لأن العقد العاملة لا يمكنها تزويد Traefik بالمعلومات التي تحتاجها. على سبيل المثال ، docker service ls
في العقدة العاملة لا تعمل ، لذلك لن تتمكن Traefik حتى من اكتشاف الخدمات التي تعمل--network whoaminet
: قم بتوصيل Traefik بالشبكة نفسها التي لدينا whoami-service
، وإلا فلن يتمكن من الاتصال بها. قلنا سابقا Traefik للاتصال خدمتنا على هذه الشبكة مع traefik.docker.network
التسميةtraefik
: أخبر عامل الميناء لاستخدام أحدث صورة لرسو السفن Traefik لهذه الخدمة--docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG
: تم تمرير وسيطات سطر الأوامر مباشرة إلى Traefik للسماح لها بالعمل في وضع سرب Docker. DEBUG
اختياري هنا ، ولكنه مثير للاهتمام أثناء الإعداد ، وهذا البرنامج التعليميكل ما عليك فعله هو فتح المنافذ الضرورية في جدار حماية دبيان:
sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 9090 -j ACCEPT
بمجرد بدء تشغيل Traefik ، يمكنك أن ترى في السجلات أن Traefik يكتشف whoami
الحاويتين. يقوم أيضًا بإخراج اسم ملف تعريف الارتباط الذي سيستخدمه للتعامل مع الجلسة اللزجة:
time="2018-11-25T13:17:30Z" level=debug msg="Configuration received from provider docker: {\"backends\":{\"backend-whoami-service\":{\"servers\":{\"server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05\":{\"url\":\"http://10.0.0.5:8000\",\"weight\":1},\"server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6\":{\"url\":\"http://10.0.0.4:8000\",\"weight\":1}},\"loadBalancer\":{\"method\":\"wrr\",\"stickiness\":{}}}},\"frontends\":{\"frontend-PathPrefix-0\":{\"entryPoints\":[\"http\"],\"backend\":\"backend-whoami-service\",\"routes\":{\"route-frontend-PathPrefix-0\":{\"rule\":\"PathPrefix:/\"}},\"passHostHeader\":true,\"priority\":0,\"basicAuth\":null}}}"
time="2018-11-25T13:17:30Z" level=debug msg="Wiring frontend frontend-PathPrefix-0 to entryPoint http"
time="2018-11-25T13:17:30Z" level=debug msg="Creating backend backend-whoami-service"
time="2018-11-25T13:17:30Z" level=debug msg="Adding TLSClientHeaders middleware for frontend frontend-PathPrefix-0"
time="2018-11-25T13:17:30Z" level=debug msg="Creating load-balancer wrr"
time="2018-11-25T13:17:30Z" level=debug msg="Sticky session with cookie _a49bc"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05 at http://10.0.0.5:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6 at http://10.0.0.4:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating route route-frontend-PathPrefix-0 PathPrefix:/"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :80"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :8080"
إذا تجعدنا http://192.168.0.100:8080
يمكننا رؤية أن ملف تعريف الارتباط الجديد _a49bc
قد تم تعيينه:
curl -v http://192.168.0.100:8080
* About to connect() to 192.168.0.100 port 8080 (#0)
* Trying 192.168.0.100...
* Connected to 192.168.0.100 (192.168.0.100) port 8080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.0.100:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 17
< Content-Type: text/plain; charset=utf-8
< Date: Sun, 25 Nov 2018 13:18:40 GMT
< Set-Cookie: _a49bc=http://10.0.0.5:8000; Path=/
<
I'm a6a8c9294fc3
* Connection #0 to host 192.168.0.100 left intact
إذا قمنا ، في المكالمات اللاحقة ، بإرسال ملف تعريف الارتباط هذا إلى Traefik ، فسيتم إعادة توجيهنا دائمًا إلى نفس الحاوية:
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
لا يحتوي ملف تعريف الارتباط إلا على عنوان IP الداخلي للحاوية التي يجب أن ترسلها Traefik إلى الطلب. إذا قمت بتغيير قيمة ملف تعريف الارتباط إلى http://10.0.0.4:8000
، فسيتم إعادة توجيه الطلب إلى الحاوية الأخرى. إذا لم يتم إعادة إرسال ملف تعريف الارتباط إلى Traefik مطلقًا ، فلن تعمل الجلسة اللزجة وستتم موازنة الطلبات بين حاويات التطبيق وحاويات Traefik.
هذا كل ما تحتاجه لإعداد جلسات العمل اللاصقة من Layer 7 في Docker CE على Debian 9.
نظرة عامة تهدف هذه المقالة إلى مساعدتك في إنشاء مجموعة Kubernetes وتشغيلها باستخدام kubeadm في لمح البصر. سيقوم هذا الدليل بنشر خادمين في
عادة ما تتكون تطبيقات PHP من خادم ويب ونظام قاعدة بيانات علائقية ومترجم لغة نفسه. في هذا البرنامج التعليمي سنكون leveragin
مقدمة Docker هو تطبيق يسمح لنا بنشر البرامج التي يتم تشغيلها كحاويات. وقد كتب بلغة البرمجة Go الشهيرة
ستوضح لك هذه المقالة كيفية نشر تطبيق Node داخل حاوية Docker. ملاحظة: يفترض هذا البرنامج التعليمي أنك قمت بتثبيت Docker وقراءته
حاويات LXC (حاويات Linux) هي إحدى ميزات نظام التشغيل في Linux والتي يمكن استخدامها لتشغيل العديد من أنظمة Linux المعزولة على مضيف واحد. هذه
Kubernetes هو نظام أساسي مفتوح المصدر تم تطويره بواسطة Google لإدارة التطبيقات في حاويات عبر مجموعة من الخوادم. إنه يبني على عقد و
استخدام نظام مختلف؟ مقدمة Rancher هي منصة مفتوحة المصدر لتشغيل الحاويات وبناء خدمة حاويات خاصة. رانشر هو القاعدة
تشرح هذه المقالة كيفية تثبيت Docker-compose على CoreOS. في CoreOS ، المجلد / usr / غير قابل للتغيير بحيث لا يتو��ر المسار القياسي / usr / local / bin
نعلم جميعًا ونحب Docker ، وهي منصة لإنشاء وإدارة وتوزيع حاويات التطبيقات عبر أجهزة متعددة. تقدم شركة Docker Inc. خدمة ر
استخدام نظام مختلف؟ مقدمة Rancher هي منصة مفتوحة المصدر لتشغيل الحاويات وبناء خدمة حاويات خاصة. رانشر هو القاعدة
استخدام نظام مختلف؟ مقدمة يحول Docker Swarm خوادمك الفردية إلى مجموعة من أجهزة الكمبيوتر ، مما يسهل القياس والتوافر العالي
استخدام نظام مختلف؟ Docker هو تطبيق يسمح بنشر البرامج داخل حاويات افتراضية. تمت كتابته في برنامج Go
نظرة عامة RancherOS هو نظام تشغيل خفيف الوزن بشكل لا يصدق (حوالي 60 ميجا بايت فقط) يقوم بتشغيل برنامج Docker daemon باسم PID 0 لتشغيل خدمات النظام
يوضح هذا البرنامج التعليمي أساسيات البدء مع Docker. أفترض أن لديك Docker مثبتة بالفعل. ستعمل الخطوات في هذا البرنامج التعليمي على
عند تشغيل تطبيق ويب ، تحتاج عادةً إلى تحقيق أقصى استفادة من مواردك دون الحاجة إلى تحويل البرنامج الخاص بك لاستخدام مؤشرات متعددة
المتطلبات الأساسية محرك Docker 1.8+. 4 جيجابايت على الأقل من مساحة القرص. 4 غيغابايت على الأقل من ذاكرة الوصول العشوائي. الخطوة 1. تثبيت Docker من أجل تثبيت SQL-Server ، Docker mus
استخدام نظام مختلف؟ مقدمة Docker هو تطبيق يسمح بنشر البرامج داخل حاويات افتراضية. هو مكتوب في G
استخدام نظام مختلف؟ Docker هو تطبيق يسمح بنشر البرامج التي يتم تشغيلها كحاويات. وقد كتب في برنامج Go الشهير
مقدمة سيوضح لك هذا الدليل كيفية إنشاء وتكوين سرب Docker باستخدام عدة خوادم Alpine Linux 3.9.0 و Portainer. يرجى الانتباه إلى ذلك
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد