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

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



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



هذا لا يعني أنه بعد تنزيل Kubernetes ، ستحصل على واجهة مستخدم توفر لك كل ما تريد القيام به مع النظام. لا ، هذا مجرد أساس لإنشاء الأدوات التي تحتاجها لتشغيل بنيتك التحتية. سأوضح لك كيفية إنشاء التكامل باستخدام Let's Encrypt Certificate Authority لأتمتة عملية الشهادة لتطبيقي باستخدام Kubernetes كإطار عمل.



كثير من الناس يسألون بالضبط ما هو جيد Kubernetes. لقد عملت مع Puppet Labs لسنوات عديدة ورأيت أنه تم تثبيت هذا الشيء على أجهزة الكمبيوتر من أجل تزويد النظام بواجهة برمجة تطبيقات غير موجودة حتى الآن. بدلاً من Bash ، نصوص YAML ، وأشياء مماثلة ، قدم Puppet مستخدم DSL الذي سمح له بالتفاعل مع الأجهزة برمجيًا بدون نصوص shell. الفرق بين Kubernetes هو أنه يقع فوق مستوى "الحديد". دعونا لا نركز كثيرًا على الأتمتة وتجريد هذا النظام بقدر ما نركز على العلاقات ، أو على العقد ، بين بنيتنا التحتية وتطبيقاتنا التي سنقوم بسحبها من أي عقدة. في Kubernetes ، لا نقوم بتعيين أي تطبيقات للأجهزة ، ولا يوجد شيء مثل "بيان العقدة" ، ويعتبر المجدول العقد الفردية ببساطة كموارد لمركز البيانات ،يمثل جهاز كمبيوتر كبير.

الأسئلة: "هل تعمل Kubernetes على OpenStack ، على VMware ، على Bare Metal ، في السحابة؟" لا معنى له. السؤال الصحيح هو: "هل يمكنني تشغيل وكيل Kubernetes لاسترداد هذه الموارد؟" والجواب سيكون "نعم". لأن تشغيل هذا التطبيق مستقل تمامًا عن النظام الأساسي الذي تختاره.



Kubernetes هي منصة مستقلة. Kubernetes هو إعلاني بنفس الطريقة مثل دمية. لذلك ، تقوم بالإبلاغ عن التطبيق الذي ستستخدمه - في هذا المثال هو nginx. هذا عقد بينك وبين المطور و Kubernetes كوسيلة لإنشاء صور حاوية.

أحب استخدام القياس مع شركة FedEx Courier - لا يمكنك سحب عربة كاملة من الأشياء والانتظار حتى يقوموا بفرزها كلها وإرسالها إلى حيث يجب أن تكون. لديهم قاعدة: ضع أغراضك في صندوق. بمجرد القيام بذلك ، سيرسلون صندوقك وسيكونون قادرين على معرفة متى سيصل إلى وجهته. "إذا لم يكن لديك صندوق ، فلن تتمكن من العمل مع نظامنا."

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

أي من الحاضرين قام بإنشاء الحاويات؟ ومن يستخدم الدمى لبناء حاويات؟ هذا صحيح ، أنا لا أتفق مع هذا أيضًا! يمكنك أن تقول: "كيف ذلك؟ أنت في مؤتمر العرائس ، يجب أن توافق! " السبب في أنني لا أوافق على فكرة بناء حاويات في Puppet هو هذا: لا أعرف ما إذا كنا بحاجة إليها على الإطلاق ، لأن الأشياء التي نحتاجها لإنشاء صورة تختلف عن الأشياء التي نحتاجها لبدء عملية الإنتاج.

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



تقول "FROM ruby ​​2.3.1" ، والتي من المحتمل أن تدخل نظام التشغيل بأكمله في الحاوية ، في هذه الحالة صورة الألبان لينكس روبي الأساسية. هل يعرف أحد لماذا قمنا بتضمين صور Ubuntu أو Red Hat في هذه الحاويات؟ معظم الناس لا يعرفون ما هي التبعيات ، ويستخدمون نهجًا عشوائيًا ، فقط يحشو نظام التشغيل بأكمله في حاوية للتأكد من وجود تبعياتهم في مكان ما بداخله. لذا ، بعد بناء هذا الشيء ، تحتاج إلى تشغيله مرة واحدة فقط. هذا هو المكان الذي يأتي منه سوء الفهم: إذا لم ينجح هذا الشيء ، قم بتغيير سطر التعليمات البرمجية حتى يعمل. تحقق فقط! لا تحتاج إلى أن تكون ذكيًا جدًا مع هذه الملفات ، هدفك هو إنشاء تمثيل دون اتصال لتطبيقك مع جميع التبعيات. هذا مجرد عكاز نستخدمه من Ubuntu كنقطة انطلاق.

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



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



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

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

ليس لديك أي تطبيق خاص تم إنشاؤه خصيصًا. جئت عبر الشركات التي تقول: "لدينا تطبيق خاص!". أقول: "دعنا نحزر ماذا يفعل: إنه يبدأ ، ويرتبط بالمنفذ ، ويستقبل حركة المرور ، ويفعل شيئًا بالبيانات" ، وهم: "واو ، كيف تعرف ذلك؟" أعلم ، لأنه لا يوجد شيء خاص هنا!

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



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

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



كم منكم استخدم النشر التلقائي بالكامل؟ من الواضح ، أعتقد أن هذا هو سبب وجودنا جميعًا هنا. لذا ، أضغط على الزر ، تبدأ الكتل بالسقوط من الأعلى ، والآن يمكنك الذهاب لشرب الجعة. ولكن لاحظ ما يحدث على اليسار وعلى اليمين: المعالج والذاكرة تتحول إلى سلة مهملات.



يحدث هذا لأن معظم الناس لا يستخدمون أكثر من 5٪ من موارد الكمبيوتر. يمكنك أتمتة العمليات ، ولكن تفقد الكثير من المال. أنا أعمل كمزود سحابة ، ولدي احتياطيات ضخمة من الموارد ، ولكن الأمر مروع عندما ينفق الناس الأموال بطريقة مماثلة.

عند استخدام المجدول ، عن طريق القياس مع Tetris ، يمكنك التحكم في ساحة اللعب والتحكم في كل كتلة ، وتوجيهها إلى المكان الصحيح ، أي استخدام موارد الجهاز بالطريقة المثلى. يستخدم Kubernetes بضع خوارزميات لهذا الغرض. الخوارزمية الرئيسية تسمى Bin Packing - نفس "Tetris" ستساعد في فهمها. يتلقى Kubernetes عبء عمل من مختلف الأشكال والأحجام ، ومهمتنا هي حزمه في الآلات بطريقة مثلى.

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

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



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

المشكلة الثانية التي تواجهها الشركات غالبًا هي Oracle DBMS. هذا شيء موجود في الجزء الخلفي من البرنامج ويقول: "لا تحاول أتمتة أي شيء!". إذا قمت بأتمتة البرنامج ، ستزيد تكلفتك. لذلك ، لا أتمتة - نحن نشجع نظامنا البيئي للاستشارات!

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



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



الشيء الثاني المهم هو وحدة تحكم النسخ المتماثل ، وهو مدير العمليات التي تحدث في مجموعة Kubernetes. يسمح لك بإنشاء حالات متعددة من المداخن ومراقبة حالتها.

عندما تقول أنك ترغب في بدء بعض العمليات ، فهذا يعني أنها ستعمل طوال الوقت في مكان ما في المجموعة.

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

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

لا يقتصر التخزين الذي تنشئه Kubernetes على أي حاوية. وهو يدعم أي أو كل الحاويات المنتشرة داخل الموقد. الميزة الرئيسية لـ Kubernetes Volume هي دعمها لأنواع مختلفة من التخزين التي يمكن لـ Pod استخدامها في وقت واحد.

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



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



يسمح لك Pod بتكوين كل شيء يحتاجه تطبيقنا المنطقي. التطبيق المنطقي هو أداة لإدارة تطبيقات متعددة ضمن نفس ملف تعريف النظام. القسم الفرعي عبارة عن حزمة موارد تتضمن حاوية واحدة أو أكثر ومخازن ومساحة اسم شائعة وعنوان IP واحد لكل فرع. يمكن توزيع الخزائن بين الحاويات.



بشكل عام ، يشبه تصميم الموقد آلة افتراضية. يضمن أن التطبيق سيبدأ ويتوقف كوحدة ذرية. تُظهر الشريحة التالية كيف تبدو وحدة تحكم النسخ المتماثل. إذا قمت بإرسال هذا الإعلان إلى الخادم وقلت: "مرحبًا ، أريد عمل نسخة طبق الأصل من تطبيق Foo!" ، فسيقوم المتحكم بإنشائه من القالب وإرساله إلى المجدول ، والذي سيضع التطبيق على العقدة 1. نحن لا نحدد على أي جهاز يجب تشغيله ، على الرغم من أننا نستطيع القيام بذلك. الآن قم بزيادة عدد النسخ المتماثلة إلى 3.



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



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

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

تستخدم Kubernetes أيضًا مفهوم Secrets ، الذي يستخدم لتخزين ونقل البيانات المشفرة بين المديرين وعقد Nods.

نحن لا ندير العرائس في حاوية أبدًا لأنه لا يوجد سبب للقيام بذلك. يمكنك استخدام Puppet لإنشاء ملف تكوين ، ولكنك ما زلت تريد تخزينه في Kubernetis لأنه يسمح لك بتوزيعه باستخدام وقت التشغيل. دعونا نرى كيف يبدو.



في هذا المثال ، نقوم بإنشاء سر من ملف وحفظه على خادم Kubernetes API. يمكنك أن تتخيل أنك استبدلت هذا الجزء بشيء مثل Puppet ، الذي يستخدم قالب eRB والبيانات المخفية لملء محتويات السر - لا يهم من يفعل ذلك ، ولكن يمكنك القيام بذلك على أي حال.

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



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

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



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

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

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



في الشريحة ، ترى مثالاً على Ruby-on-Rails ، وقبل أن نتمكن من استخدام تطبيقنا ، نحتاج إلى ترحيل قاعدة البيانات. دعنا ننتقل إلى العرض التوضيحي المباشر للبرنامج. من أجل تنفيذ النشر ، أستخدم MY_SQL ، وترى الكثير من البيانات على الشاشة.



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



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



لا يمكنك لعب Tetris حتى تعرف حجم الكتل. يبدأ العديد من الأشخاص في النشر دون استخدام حدود الموارد لهذه العملية. ونتيجة لذلك ، تكون ذاكرة الوصول العشوائي مسدودة تمامًا ، وتقوم "بتكديس" الخادم بالكامل.

22:09 دقيقة

تتواصل قريبًا جدًا ...


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


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك ، 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