أفضل ممارسات Kubernetes. تعطيل الإنهاء الصحيح

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



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

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

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



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

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

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

بعد أن قررت Kubernetes إكمال اللوحة ، وقعت سلسلة كاملة من الأحداث. دعونا نلقي نظرة على كل خطوة تتخذها Kubernetes عند اكتمال الحاوية أو الموقد.

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



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



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

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

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

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



بشكل افتراضي ، هذه الفترة 30 ثانية. من المهم ملاحظة أنه يدوم بالتوازي مع خطاف preStop وإشارة SIGTERM. لن تنتظر Kubernetes انتهاء خطاف preStop و SIGTERM - إذا خرج تطبيقك قبل انتهاء صلاحية TerminationGracePeriod ، ستنتقل Kubernetes على الفور إلى الخطوة التالية. لذلك ، تحقق من أن قيمة هذه الفترة بالثواني ليست أقل من الوقت المطلوب لإيقاف الموقد بشكل صحيح ، وإذا تجاوزت 30 ثانية ، فقم بزيادة الفترة إلى القيمة المطلوبة في YAML. في المثال أعلاه ، 60s.

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



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

أفضل ممارسات Kubernetes. رسم خرائط الخدمات الخارجية


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


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك 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.2 جيجا هرتز 6C 128 جيجا بايت DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولار! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles