عند المعبر ،
لم يتم تغيير الأوركسترا.
بعد أن سئمت تمامًا من Docker Swarm نظرًا لبساطتها الزائفة والتشطيب المستمر ، وليس العمل المريح للغاية مع أنظمة الملفات الموزعة ، وواجهة الويب الرطبة قليلاً والوظائف الضيقة ، بالإضافة إلى عدم وجود دعم "خارج الصندوق" لتكامل GitLab ، فقد تقرر نشر مجموعة Kubernetes الخاصة بك على أجهزتك الخاصة ، أي عن طريق نشر Rancher Management Server 2.0.
تجربة التثبيت ، نظام التسامح مع الخطأ ، العمل مع haProxy ولوحتي تحكم تحت القط:
بيانات الإدخال:الخادم المضيف HP Proliant DL320e Gen8 - قطعتان.
خادم VM Ubuntu 16.04 ، 2 غيغابايت من ذاكرة الوصول العشوائي ، 2vCPU ، 20Gb HDD - 1 جهاز كمبيوتر. على كل مضيف (VM-haProxy).
خادم VM Ubuntu 16.04 ، وذاكرة وصول عشوائي 4 غيغابايت ، و 4 vCPU ، و HDD 40Gb ، و 20 Gb SSD - 3 أجهزة كمبيوتر. على كل مضيف (VM - * - الكتلة).
خادم VM Ubuntu 16.04 ، 4 غيغابايت من ذاكرة الوصول العشوائي ، 4vCPU ، 100Gb HDD - 1 جهاز كمبيوتر. على أي شخص المضيف (VM-NFS).
مخطط الشبكة:
الشروع في العمل:يحتوي VM-haProxy على قواعد haProxy و fail2ban و iptables. يعمل كبوابة لجميع الأجهزة التي تقف وراءه. لدينا بوابتان وستتحول جميع الأجهزة في حالة فقدان اتصال البوابة على مضيفها إلى أخرى.
المهمة الرئيسية لهذه العقد (VM-haProxy) هي توزيع الوصول إلى الواجهة الخلفية ، والتوازن ، والمنافذ الأمامية ، وجمع الإحصائيات.
وقع اختياري على haProxy ، كأداة أكثر تركيزًا فيما يتعلق بالتوازن والتحقق من الصحة. لكل هذا ، أحب بناء جملة توجيهات التكوين والعمل مع قوائم IP البيضاء والسوداء ، وكذلك العمل مع اتصال SSL متعدد المجالات.
تكوين HaProxy:
haproxy.conf مع التعليقات هام: يجب أن تعرف جميع الأجهزة بعضها البعض حسب اسم المضيف.
add-host-entry.pp بيان العرائس لإضافة أسماء المضيفين في / etc / hosts class host_entries { host { 'proxy01': ip => '10.10.10.11', } host { 'proxy02': ip => '10.10.10.12', } host { 'master': ip => '10.10.10.100', } host { 'node01': ip => '10.10.10.101', } host { 'node02': ip => '10.10.10.102', } host { 'node03': ip => '10.10.10.103', } host { 'node04': ip => '10.10.10.104', } host { 'node05': ip => '10.10.10.105', } host { 'nfs': ip => '10.10.10.200', } }
VM-Master-Cluster هي آلة التحكم الرئيسية. وهو يختلف عن العقد الأخرى على متن الطائرة من قبل Puppet Master و GlusterFS Server و Rancher Server (الحاوية) وما إلى ذلك (الحاوية) ومدير التحكم (الحاوية). في حالة انقطاع هذا المضيف ، تستمر خدمات الإنتاج في العمل.
VM-Node-Cluster - العقد ، العمال. آلات العمل التي سيتم دمج مواردها في بيئة واحدة تتحمل الأخطاء. لا شيء مثير للاهتمام.
VM-NFS - خادم NFS (nfs-kernel-server). المهمة الرئيسية هي توفير مساحة عازلة. يخزن ملفات التكوين وجميع. لا تخزن أي شيء مهم. يمكن تصحيح سقوطه ببطء ، أثناء شرب القهوة.
هام: يجب أن تحتوي جميع آلات البيئة على: docker.io، nfs-common، gluster-server.
must-have -pack.pp الدمى الظاهرة لتثبيت البرنامج الصحيح class musthave { package { 'docker.io': ensure => 'installed', } package { 'nfs-common': ensure => 'installed', } package { 'gluster-server': ensure => 'installed', } }
لن أصف تثبيت حجم nfs وتكوين GlusterFS ، حيث يتم وصفه بسخاء بأعداد كبيرة.
إذا لاحظت وجود أقراص SSD في وصف المواصفات ، فهي على استعداد لتشغيل نظام الملفات الموزعة Gluster. إنشاء أقسام وتخزينها على أقراص عالية السرعة.
ملاحظة في الواقع ، لا يتطلب تشغيل مزرعة ماشية بيئة شبيهة بالمرآة. كل ما سبق هو رؤيتي للكتلة ووصف للممارسات التي أتبعها.
لتشغيل Rancher ، يكفي جهاز
واحد ، مع 4CPU ، RAM 4GB ، HDD 10Gb.
5 دقائق لرانشر.
في VM-Master-Cluster ، نقوم بما يلي:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
التحقق من التوفر:
curl -k https://localhost
إذا رأيت واجهة برمجة التطبيقات - أهنئك تمامًا في منتصف الطريق.
بعد النظر في مخطط الشبكة مرة أخرى ، نتذكر أننا سنعمل من الخارج ، من خلال haProxy ، في التكوين الذي قمنا بنشر الرابط
rancher.domain.ru ، تفضل ، قم بتعيين كلمة المرور الخاصة بك.
الصفحة التالية هي صفحة إنشاء مجموعة Kubernetes.
من قائمة "خيارات الكتلة" ، حدد Flannel. لم أعمل مع موفري الشبكة الآخرين. لا يمكنني تقديم النصح.
يجدر الانتباه إلى حقيقة أننا قمنا بتثبيت مربعات الاختيار وما إلى ذلك وطائرة التحكم ، ولم يتم تثبيت مربع اختيار العامل ، في حالة عدم التخطيط لاستخدام المدير في وضع العامل.
نحن نعمل داخل الشبكة المحلية ، بنفس العنوان على NIC ، لذلك في حقلي العنوان العام والداخلي أشار إلى نفس عنوان IP.
انسخ الكود الناتج أعلاه ، وقم بتشغيله في وحدة التحكم.
بعد مرور بعض الوقت ، سترى في واجهة الويب رسالة حول إضافة عقدة. وبعد مرور بعض الوقت ، ستبدأ مجموعة Kubernetes.
لإضافة عامل ، انتقل لتحرير الكتلة في واجهة الويب الخاصة بـ Rancher ، سترى نفس القائمة التي تنشئ أمر الاتصال.
قم بتعيين مربع الاختيار على موضع العامل فقط ، وحدد IP للعامل المستقبلي ، وانسخ الأمر ونفذه في وحدة التحكم للعقدة التي تحتاجها.
بعد فترة ، ستزداد قوة الكتلة ، تمامًا مثل عدد العقد.
تثبيت لوحة تحكم Kubernetes:اذهب إلى قائمة المشاريع / مساحات الأسماء.
بعد التثبيت ، سترى أن مساحات الأسماء المتعلقة بـ Kubernetes سيتم احتواؤها خارج المشاريع. للعمل بشكل كامل مع مساحات الأسماء هذه ، يجب وضعها في المشروع.
أضف مشروعًا ، وقم بتسميته كما تريد. انقل مساحات الأسماء (نظام الماشية ، و ingress-nginx ، و kube-public ، و kube-system) إلى المشروع الذي أنشأته باستخدام قائمة سياق "نقل". يجب أن يكون مثل هذا:
انقر مباشرة على اسم المشروع ، سيتم نقلك إلى لوحة تحكم عبء العمل. هنا سنناقش كيفية إنشاء خدمة بسيطة.
انقر فوق "استيراد YAML" في الزاوية اليمنى العليا. انسخ محتويات
هذا الملف والصقها في مربع النص في النافذة التي تفتح ، حدد مساحة الاسم "kube-system" ، وانقر على "استيراد".
بعد مرور بعض الوقت ، ستبدأ لوحة التحكم pod kubernetes-dashboard.
انتقل إلى تحرير الجراب ، وافتح قائمة نشر المنفذ ، وقم بتعيين القيم التالية:
تحقق من الوصول على العقدة التي تعمل عليها الجراب.
curl -k https://master:9090
انظر الجواب؟ اكتمال النشر ، ويبقى للوصول إلى الجزء الإداري.
على الصفحة الرئيسية لإدارة العنقود في Rancher ، هناك أدوات مريحة للغاية ، مثل kubectl - وحدة تحكم إدارة الكتلة وملف Kubeconfig - ملف التكوين الذي يحتوي على عنوان API ، ca.crt ، إلخ.
نذهب إلى kubectl وننفذ:
kubectl create serviceaccount cluster-admin-dashboard-sa kubectl create clusterrolebinding cluster-admin-dashboard-sa --clusterrole=cluster-admin --serviceaccount=default:cluster-admin-dashboard-sa
لقد أنشأنا حساب خدمة بأعلى الامتيازات ، والآن نحتاج إلى رمز مميز للوصول إلى لوحة التحكم.
ابحث عن سر الحساب الذي تم إنشاؤه:
kubectl get secret | grep cluster-admin-dashboard-sa
سنرى اسم الحساب مع تجزئة معينة في النهاية ، انسخه وننفذه:
kubectl describe secret cluster-admin-dashboard-sa-$( )
مرة أخرى ، نتذكر أن كل شيء تم نشره بنجاح من خلال haProxy.
نتبع الرابط
kubernetes.domain.ru . أدخل الرمز المستلم.
نفرح:
ملاحظةالنتيجة الإجمالية التي أود أن أشكر رانشر على إنشائها واجهة بديهية ، ومثيل يمكن نشره بسهولة ، ووثائق بسيطة ، والقدرة على التحرك السريع وقابلية التوسع على مستوى المجموعة. ربما تحدثت بشكل حاد للغاية في بداية المنشور الذي سئم فيه Swarm ، بدلاً من اتجاهات التنمية الواضحة ، نوعًا ما جعلني أحدق في الجانب ولا أنتهي من الروتين الممل. خلقت شركة Docker حقبة من التطور. والحكم على هذا المشروع ليس بالتأكيد بالنسبة لي.