تكوين فحوصات الحيوية

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

تشرح هذه المقالة كيفية نشر مجموعة حاويات تتضمن مسبارًا حيويًا؛ مما يوضح إعادة التشغيل التلقائي لحاوية غير صحية تمت محاكاتها.

تدعم Azure Container Instances أيضا فحوصات الجاهزية، والتي يمكنك تكوينها للتأكد من أن نسبة استخدام الشبكة تصل إلى حاوية فقط عندما تكون جاهزة لها.

نشر YAML

قم بإنشاء ملف liveness-probe.yaml بالمقتطف التالي. يعرّف هذا الملف مجموعة الحاويات التي تتكون من حاوية NGINX التي تصبح في النهاية غير صحية.

apiVersion: 2019-12-01
location: eastus
name: livenesstest
properties:
  containers:
  - name: mycontainer
    properties:
      image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
      command:
        - "/bin/sh"
        - "-c"
        - "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      livenessProbe:
        exec:
            command:
                - "cat"
                - "/tmp/healthy"
        periodSeconds: 5
  osType: Linux
  restartPolicy: Always
tags: null
type: Microsoft.ContainerInstance/containerGroups

قم بتشغيل الأمر التالي لنشر مجموعة الحاوية هذه مع تكوين YAML السابق:

az container create --resource-group myResourceGroup --name livenesstest -f liveness-probe.yaml

ابدأ الأمر

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

أولا، يبدأ جلسة عمل bash وينشئ ملفا يسمى healthy داخل /tmp الدليل. ثم ينام لمدة 30 ثانية قبل حذف الملف، ثم يدخل في وضع السكون لمدة 10 دقائق:

/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"

أمر الحياة

يعرف livenessProbe هذا النشر الذي يدعم exec أمر الحياة الذي يعمل كتحقق من الحياة. إذا تم إنهاء هذا الأمر بقيمة غير صفرية، يتم إيقاف الحاوية وإعادة تشغيلها، مما healthy يشير إلى تعذر العثور على الملف. إذا تم إنهاء هذا الأمر بنجاح مع رمز الخروج 0، فلن يتم اتخاذ أي إجراء.

periodSeconds تحدد الخاصية أمر الحياة التي يجب تنفيذها كل 5 ثوان.

تحقق من إخراج الحياة

في غضون أول 30 ثانية، يوجد الملف الذي healthy تم إنشاؤه بواسطة أمر البدء. عندما يتحقق الأمر liveness من healthy وجود الملف، تقوم التعليمة البرمجية للحالة بإرجاع 0، مما يشير إلى النجاح، لذلك لا تحدث إعادة تشغيل.

بعد 30 ثانية، يبدأ الأمر في cat /tmp/healthy الفشل، مما يتسبب في حدوث أحداث غير صحية وقتل.

يمكن عرض هذه الأحداث من مدخل Microsoft Azure أو Azure CLI.

بوابة حدث غير صحي

من خلال عرض الأحداث في مدخل Microsoft Azure، يتم تشغيل الأحداث من النوع Unhealthy عند فشل أمر الحياة. الحدث التالي من النوع Killing، مما يدل على حذف حاوية حتى يمكن بدء إعادة التشغيل. يتزايد عدد مرات إعادة التشغيل للحاوية في كل مرة يقع فيها هذا الحدث.

يتم إكمال عمليات إعادة التشغيل في نفس المكان؛ لذا يتم الاحتفاظ بالموارد؛ مثل: عناوين IP العامة، والمحتويات الخاصة بالعقدة.

بوابة إعادة تشغيل العداد

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

تحقيقات الحياة، وإعادة تشغيل السياسات

تحل سياسات إعادة التشغيل محل سلوك إعادة التشغيل الناتج عن تحقيقات الحيوية. على سبيل المثال، إذا قمت بتعيين restartPolicy = Never وفحص فعالية، فلن تتم إعادة تشغيل مجموعة الحاوية بسبب فشل فحص الحياة. مجموعة الحاوية بدلا من ذلك تلتزم بسياسة إعادة تشغيل مجموعة الحاوية الخاصة ب Never.

الخطوات التالية

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