تحقيقات Kubernetes الجاهزية والحيوية - أفضل الممارسات

في Kubernetes ، تعد القرون أصغر وحدات الحوسبة القابلة للنشر والتي يمكن إنشاؤها وإدارتها. الجراب هو مجموعة من حاوية واحدة أو أكثر (Docker ، صاروخ ، إلخ) ، مع تخزين / شبكة مشتركة ، ومواصفات حول كيفية تشغيل الحاويات.

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

الفحوصات الصحية ضرورية لأي نظام موزع!

الفحوصات الصحية Kubernetes:

تقدم Kubernetes نوعين من الفحوصات الصحية: الاستعداد والحيوية ، ولكل منهما هدفه الخاص. في سياق هذه المقالة سوف تختار:

  • /.well-known/live - للتحقيق المباشر لـ HTTP
  • /.well-known/ready - للتحقيق استعداد HTTP

في بضع كلمات ، يعني اختبار HTTP أن Kubernetes ينفذ على فترات زمنية محددة من الوقت. HTTP Get طلبات على /.well-known/live و /.well-known/ready. يتم استخدام رمز الحالة للاستجابة لتحديد ما يجب القيام به مع جراب. إذا كان رمز الحالة في الفاصل الزمني [200 ، 300) فسيكون كل شيء على ما يرام. غير ذلك:

  • إذا كان رمز الحالة الخاص بالمسبار المباشر هو 4xx أو 5xx ، تتم إعادة تشغيل pod
  • إذا كان رمز الحالة للمجهز جاهزًا هو 4xx أو 5xx ، فسيتم وضع علامة على pod على أنها غير صحية ولن تتم إعادة توجيه حركة مرور HTTP إليه لزيادة الموثوقية والجهوزية.
إذا كانت الحاويات مستقلة عن أي خدمات دعم ، فقد يكون للحاويات فحوصات للقدرة والاستعدادات مكشوفة على نفس المعالج ولا ينطبق ما يلي.

جنبا إلى جنب مع زملائه في الفريق من Systems Metro Romania - Site Reliability Team ، حددنا قائمة بأفضل الممارسات للفحوصات الصحية ونصح مطوري التطبيقات باتباعها. أفضل الممارسات هي:

  1. تحتاج معالجات Live & Ready إلى أن تكون وظائف مستقلة!

كما ذكرنا من قبل ، لكل منتج تم نشره في سياق Kubernetes ، يجب تنفيذ معالجين للإجابة على مكالمات HTTP لـ "مباشر" و "جاهز". أفضل ممارسة بخصوص هذه التحقيقات هي أن كل معالج يحتاج إلى تنفيذ وظيفته الخاصة.

2. لا تفصل منطق "مباشر" / "جاهز" من التطبيق الخاص بك!

هذا ينطبق على تطبيقات معالجة الوظائف. بالنسبة إلى Kubernetes ، من المهم معرفة ما إذا كان تطبيق المعالجة قيد التشغيل أم لا. إذا تم فصل منطق live / ready في عملية جديدة ، فستكون النتيجة غير حاسمة.

3. لا تنفذ أي منطق على معالج "مباشر". يحتاج إلى إرجاع الحالة 200 إذا كان مؤشر الترابط الرئيسي قيد التشغيل و 5xx إذا لم يكن.

يتيح هذا التحقيق لـ Kubernetes معرفة ما إذا كان التطبيق على قيد الحياة أم ميت. يتم اتخاذ القرار عن طريق التحقق من رمز الحالة لـ /.well-known/live وإذا تم الإعلان عن وفاة التطبيق ، يقوم Kubernetes بإعادة تشغيل الملف. من وجهة نظر الموثوقية ، يجب أن تكون استجابة المسبار المباشر صحيحة إذا كان الخيط الرئيسي للتطبيق قيد التشغيل وكان خاطئًا.

في هذا السياق ، يعني "المنطق" تنفيذ نوع من الاختبارات على الخدمات المترابطة.

4. تنفيذ المنطق في معالج "جاهز" من أجل تقديم إجابة كاملة حول جاهزية التطبيق.

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

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

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

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

الاستنتاجات:

تحقيقات حية وجاهزة هي قلب وروح التطبيقات المنتشرة في Kubernetes. إنها الطرق القياسية للتواصل مع برنامج Hypervisor والتحدث عن حالته ومشكلاته. تعتبر التحقيقات المباشرة والجاهزة من الأسلحة القوية التي يحتاج إليها المطور والتطبيق للتأكد من أن التطبيق يمكن الاعتماد عليه ومرونة.

شكر خاص لليونوت ايلي. جزء من هذه المادة هو نتيجة بحثه والحكمة.