PuppetConf 2016. Kubernetes لمسؤولي النظام. الجزء 2

PuppetConf 2016. Kubernetes لمسؤولي النظام. الجزء 1

قم بتعيين حد الموارد. باستخدام الرياضيات البسيطة ، يمكنك حساب عدد نسخ التطبيق التي يمكنك تشغيلها - إذا كانت نسخة واحدة تحتاج إلى 1 غيغابايت من ذاكرة الوصول العشوائي ، ثم تحتوي على 10 جيجابايت من الذاكرة ، يمكنك تشغيل 10 نسخ. لن يحتاج هذا إلى المراقبة ، لأنني أعلم أن جوهر النظام سيبدأ ببساطة في الوفاء بالعقد المنصوص عليه. هذا العقد ، أو الاتفاق بينك وبين النظام ، مهم للغاية لأنه إذا كان متاحًا ، فإن جميع الأدوات تعمل بشكل أفضل. وبالتالي ، فإننا نقدم نظام التنفيذ في النظام.



لذلك ، لن يقوم المجدول بتشغيل هذا إلا إذا حصلت كل نسخة من النسخ المتماثلة على 1 جيجابايت من الذاكرة الخالية. إذا لم تتوفر ذاكرة كافية ، فلن تبدأ العملية. لذا ، أدخل الأمر kubectl create ، وبعد تنفيذه سيتم إنشاء حاوية mysql.



هناك تحذير واحد هنا يتعلق بأنظمة الدولة - لديك العديد من الخيارات. أبرزت جزءًا من التعليمات البرمجية أشرت فيه إلى رغبتي في استخدام PersistentDisk الخاص بمزود الخدمة السحابية.



يمكن أن يكون NFS أو ISCSI أو أي بروتوكول آخر يوفر الوصول على مستوى كتلة الشبكة لأجهزة التخزين. أفعل ذلك من أجل فصل التخزين عن الأجهزة. في حالة فشل أحد الأجهزة ، يمكنني إعادة العملية على الجهاز الآخر باستخدام نفس مخزن البيانات. إذا قمت بتثبيت التخزين من المضيف الذي حدث فيه الفشل ، فستفقد ببساطة بياناتك وسيتعين عليك استعادة كل شيء من النسخة الاحتياطية مرة أخرى.

لذلك ، هدفنا هو أن يعمل التخزين بشكل أسرع حيث تنمو شبكاتنا بشكل أسرع. لا يتعلق هذا بالترحيل ، ولكن بالقدرة على تركيب وحدة التخزين خارج الجهاز وإلغاء تحميلها بسرعة. هذا أمر ممكن القيام به. دعونا نرى كيف تسير الأمور في قلبنا - لا يزال يتم إنشاؤه ، والآن أريد إنشاء خدمات لها حتى تتمكن التطبيقات الأخرى من العثور على تطبيقاتنا.



بمجرد إنشاء هذه الخدمة ، ستقوم Kubernetes بإنشاء سجل DNS ، لذلك يمكنك فقط الاتصال بـ mysql والكشف تلقائيًا عن تشغيل هذه الحاوية. دعنا نكمل وأدخل الأمر $ kubectl إنشاء –f services / mysql.yaml. كما ترى ، لا تزال الحاوية قيد الإنشاء. بالمناسبة ، يمكنك مشاهدة هذا الفيديو التجريبي على موقع الويب الخاص بي. ترى كيف تبدو الخدمة لتطبيق الخلية - فهي تحتوي على عناوين IP للكتلة ، وعناوين IP الخارجية ، وأرقام المنافذ وبروتوكولات الشبكة.



دعونا نرى ما يحدث مع هذه الحاوية. كما ترون ، إنها تعمل.



لذلك ، في الوقت الحالي ، أعتقد أن تطبيق الخلية يعمل حقًا. الشيء التالي الذي نحتاجه هو تطبيق ويب. لذا دعنا ننشر مثل هذا التطبيق المسمى "lobsters" ، لقد أخذته على GitHub ، هذا هو استنساخ لـ Hacker News. إنه مشروع Ruby-on-Rails ، لقد قمت للتو بإنشاء حاوية بناءً على البيانات الواردة هنا والتكوين الأساسي.



إذا لم تكن محدثًا: ستجعلك Hacker News تحظى بشعبية كبيرة في أي مؤتمر للقراصنة. ما عليك سوى قراءة ما هو مكتوب هنا ، ويمكنك مناقشة جميع الموضوعات الشائعة من عالم تكنولوجيا الكمبيوتر. لذا إذا كنت تريد إقناع الآخرين - اقرأ أخبار هذه البوابة.

لذا ، أريد إنشاء استنساخ لهذا الشيء ووضعه على الإنترنت لجني المال. بالطبع ، هذا ليس مشروعًا تجاريًا حقيقيًا ، ولكنه مجرد عرض للفرص.
أقوم حاليًا بنشر تطبيق يسمى Lobsters. من سرّي ، أحصل على عنوان URL لقاعدة البيانات ، والذي أستخدم لأجله $ kubectl get secrets. يحتوي Secret أيضًا على اسم مستخدم وكلمة مرور.



بعد ذلك ، أرغب في إنشاء حاوية ستتواصل مع تطبيقي ، والتي أستخدم لها الأمر $ kubectl إنشاء –f النشر / lobsters.yaml. كما ترى ، التطبيق قيد التشغيل.



بالإضافة إلى ذلك ، لدينا عنوان IP. أدخل الأمر $ kubectl get svc واستخدم موازن التحميل العام ، والذي يشير إلى الصفحة بعنوان IP الخارجي 101.198.12.60.





سنذهب إلى المتصفح ونحاول إدخال هذا العنوان من خلال HTTP. نعم ، خطأ في انتظار الترحيل! هذه روبي أون ريلز ، لذلك كنت أتوقع شيئًا كهذا.



لذا ، نحتاج إلى ترحيل قاعدة البيانات. نحتاج إلى تشغيل هذه العملية مرة واحدة ، وهذا كل شيء. ومع ذلك ، نرغب في القيام بذلك بنفس الطريقة - لا يوجد تفويض على الخادم ، ولا خوادم خاصة مثل Jump box ، نريد الاتصال بالمجدول ونقول: "مرحبًا ، قم بتشغيل هذه المهمة مرة واحدة وبعد التنفيذ فقط قم بإنهاء العملية!". أي أريد تشغيل أمر واحد فقط والخروج. لذلك ، لإجراء معالجة مجمعة باستخدام الأمر $ cat jobs / lobsters-db-schema-load.yaml ، أقوم بإنشاء كائن مهام ينفذ مثل هذا المخطط.



يتم إرسال إشارة الأمر الخليع "db: schema: load" مباشرة إلى موقع GitHub على الويب وتقول: "التقط صورة الرمز: kelseyhightower / lobsters: 2.0.0 وقم بتشغيل هذا الأمر مرة واحدة". إعادة التشغيل بوليسي: لا سطر أبداً في نهاية الكود يخبر Kubernetis أنه يجب عليه تشغيل هذا مرة واحدة فقط وعدم تكراره. أقوم أيضًا بتحديد موارد المعالج والذاكرة ، أي أن أشير إلى معلمات جهاز مناسب يمكن تشغيله وتنفيذه ، وبعد ذلك سيتم الانتهاء من نقل قاعدة البيانات. لذا "وضعت على القضبان" جميع كائنات "المهام" التي يجب تشغيلها على النظام باستخدام الأمر $ kubectl إنشاء –f jobs / lobsters-db-schema-load.yaml.
ترى أن يتم إنشاء الوظيفة المقابلة ، وبعد ذلك اكتب الأمر $ watch kubectl الحصول على وظائف.



لذلك ، تم سحب الحاوية إلى الجهاز ، وعملت الجدولة ، وتم إنشاء مهمة أشعل النار. دعنا نعود ونحدث صفحة خطأ قاعدة البيانات. كما ترون ، الآن تم تنفيذ مخططنا بنجاح.



بعد ذلك ، أحتاج إلى تسجيل الدخول. أنا استخدم الأمر $ kubectl إنشاء –f jobs / lobsters-db-seed.yaml. ترى أن المجدول لا يزال يقوم بتحميل الحاوية ، وبعد بضع ثوانٍ يكتمل العمل. لبدء الترحيل ، نستخدم نفس مستوى الرمز كما كان من قبل. أقوم بتسجيل الدخول إلى هذه الصفحة ، وكل ما عليك فعله الآن هو الحصول على المحتوى. المحتوى ضروري إذا أردنا "جمع" بعض المال. هذا هو الشكل الذي يبدو عليه اختراق القرصنة ، أو "نمو القرصنة" - تذهب إلى موقع شخص آخر ، وتلتقط المحتوى من هناك وتنشره على موقعك الخاص ، والذي يبدو مشابهًا للمحتوى الأصلي.



لكننا لا نحتاج فقط إلى محتوى ، بل محتوى جيد. سيكون من العار ترك الأمور تنجرف ، لذا أستعير بعض الأخبار يدويًا. يمكنك نسخ المحتوى تلقائيًا ، ولكنه ليس قانونيًا. لذلك اخترت الأخبار ، أنسخ عنوان الرابط ، أضبط علامة "اختبار" ، حدد المربع "أنا مؤلف القصة الموجودة على عنوان URL هذا" واضغط على زر إرسال. انظر كم تبدو الأخبار المسروقة رائعة!



حان الوقت الآن لتوسيع نطاق التطبيق. للقيام بذلك ، تحتاج فقط إلى تغيير تعريف ما نقوم به - بدلاً من نسخة متماثلة واحدة ، انتقل ، على سبيل المثال ، إلى 10. ثم أعد تشغيل كتلة الأوامر مرة أخرى.



تقبل Kubernetes هذه المعلومات ، وتنفذ إجراءً ، والآن لدينا 10 نسخ من تطبيق Lobsters قيد التشغيل في قلبنا. علاوة على ذلك ، تتم إضافة هذه العملية تلقائيًا إلى موازن التحميل بفضل عمل الخدمات.



دعونا نرى ما يحدث في الخلفية. للقيام بذلك ، استخدم الأمر $ kubectl get svc ، وأحصل على حالة قصيرة وأطلب وصفها باستخدام الأمر kubectl الذي يصف $ kubectl. يكتشف Kubernetes تلقائيًا جميع نقاط النهاية ويضعها خلف موازن التحميل.



في نفس الوقت ، يتم حذف كل ما هو غير مفيد ، ويتم إضافة كل ما هو مطلوب تلقائيًا. لسنا بحاجة إلى إنشاء هذا الشيء مرارًا وتكرارًا ، فكل شيء مدمج بالكامل في النظام الأساسي.
السؤال المهم التالي هو كيفية التحديث وكيفية الحصول على السجلات. إذا كنت تتذكر ، فقد قمت بإزالة وصول SSH الخاص بك ، لذلك تحتاج إلى مركزة السجلات باستخدام شيء مثل Log Stash أو تسجيل Google Cloud الداخلي. ولكن إذا كنت ترغب فقط في عرض سجلات مخصصة ، فتذكر أنه لا يمكنك الوصول إلى الأجهزة. ومع ذلك ، يمكنك استخدام واجهة برمجة التطبيقات لالتقاط السجلات باستخدام أسماء الحاويات. للقيام بذلك ، أدخل الأمر $ kubectl يسجل lobsters-240734871-03rmn –f ، حيث 03rmn هو اسم نسخة محددة من تطبيق lobsters-240734871 في الحاوية. حتى تتمكن من عرض سجل كل حاوية مع نسخة طبق الأصل ، حتى إذا لزم الأمر ، استكشاف الأخطاء وإصلاحها.



لنشاهد المحتوى الخاص بنا باستخدام الأمر $ kubectl get pods ، كما ترى ، يعمل كل شيء. الشيء التالي المهم الذي يجب القيام به هو استئجار مسوق. ينظر إلى هذه الصفحة ويقول: "افعل ما تريد ، ولكن أزل هذه البقع البيضاء من الموقع!".



كل ما عليك فعله لهذا هو إنشاء حاوية جديدة بالإضافة إلى الحاوية التي تم إنشاؤها بالفعل وتخصيص CSS لما نريد الترويج له. دعني أذكرك بأننا لا نتحدث عن العقد ، فالعقد ليست مهمة بالنسبة لنا ، لأن النظام نفسه سيوفر بالضبط ما نريده.

يتبع قريبا جدا ...


القليل من الدعاية :)


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك ، VPS السحابي للمطورين من $ 4.99 ، وهو نظير فريد من نوعه لخوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة عن VPS (KVM) E5-2697 v3 (6 نوى) 10GB DDR4 480GB SSD 1Gbps من $ 19 أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا و 40 جيجابايت DDR4).

Dell R730xd أرخص مرتين في مركز بيانات Equinix Tier IV في أمستردام؟ فقط لدينا 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV من 199 دولارًا في هولندا!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولارًا! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles