اكتب «help» للحصول على تلميحات، و↑ لاسترجاع الأوامر.
Exit Code 137 = 128 + 9: تلقّت العملية الإشارة SIGKILL. ومع Reason: OOMKilled فإن النواة هي
التي قتلتها لأن الحاوية تجاوزت حدّ ذاكرتها (cgroup)، لا العقدة التي ما زال 70 % من ذاكرتها حرًّا.
يحمّل الإصدار 3.2 عند الإقلاع 412318 فاتورة في الذاكرة (نحو 420 Mi): في preprod الحدّ 1 Gi، أما في
prod فقد بقي عند 256Mi. ومن هنا عبارة «إنه يعمل في preprod».
مِجَسّ الحيوية ليس السبب: عند فشله يذكر الحدث Liveness probe failed وتنتهي الحاوية بحالة Error
لا OOMKilled.
تمّ حلّ الحادث
التحليل والإصلاح
التصحيح الفوري: رفع الموارد وفق الاستهلاك المقيس مع هامش أمان:
kubectl set resources deployment facturation --requests=memory=512Mi --limits=memory=768Mi، ثم متابعة
النشر بالأمر kubectl rollout status deployment facturation.
حتى لا يتكرر ذلك:
- نقل القيمة إلى ملفات manifests في Git (وإلا أعاد أول
kubectl applyالقيمة 256Mi)؛ - الإبقاء على الحدود نفسها في preprod و prod، واختبار الإصدارات تحت حِمل واقعي؛
- التنبيه عند إعادة تشغيل الحاويات (
kube_pod_container_status_restarts_total) وعند السببOOMKilled؛ - في الشيفرة: تحميل ذاكرة التخزين المؤقت على دفعات أو عند الطلب بدل تحميلها كلها عند الإقلاع.