تم تصميم مخطط الدفة هذا لنشر الوظائف التي تحفظ عمليات التفريغ الأساسية تلقائيًا من معظم موفري خدمات kubernetes السحابية العامة ومثيلات kubernetes الخاصة إلى خدمة تخزين متوافقة مع S3.
يرجى قراءة CONTRIBUTING.md الذي يحتوي على بعض الملاحظات المهمة. انتبه بشكل خاص إلى إرشادات أسلوب الترميز وشهادة منشأ المطور
نحن كأعضاء ومساهمين وقادة نتعهد بجعل المشاركة في مجتمعنا تجربة خالية من التحرش للجميع، بغض النظر عن العمر وحجم الجسم والإعاقة المرئية أو غير المرئية والعرق والخصائص الجنسية والهوية الجنسية والتعبير ومستوى الخبرة والتعليم. أو الوضع الاجتماعي والاقتصادي أو الجنسية أو المظهر الشخصي أو العرق أو الدين أو الهوية الجنسية والتوجه.
نتعهد بالعمل والتفاعل بطرق تساهم في بناء مجتمع مفتوح ومرحّب ومتنوع وشامل وصحي.
مدونة قواعد السلوك الكاملة متاحة هنا
يرجى الرجوع إلى الرسم البياني README.md للحصول على التفاصيل الكاملة.
هذه مصفوفة لأهداف الاختبار المؤكدة. يرجى بيئات العلاقات العامة المعروفة أيضًا بالعمل
مزود | منتج | إصدار | التحقق من صحتها؟ | عمل؟ |
أوس | EKS | 1.21 | نعم | نعم |
أوس | روزا | 4.8 | نعم | نعم |
بناء مخصص | K8S | لا يوجد | نعم | نعم |
المحيط الرقمي | K8S | 1.21.5-do.0 | نعم | نعم |
جوجل | GKE-cos_containerd | 1.20.10-gke.1600 | نعم | نعم |
جوجل | GKE-أوبونتو | 1.20.10-gke.1600 | نعم | نعم |
آي بي إم | IKS | 1.19-1.21 | نعم | نعم |
آي بي إم | روكس | 4.6-4.8 | نعم | نعم |
مايكروسوفت | ايه كي اس | 1.19 | نعم | نعم |
مايكروسوفت | آرو | 4.8 | نعم | نعم |
ريدهات | داخل مقر العمل | 4.8 | نعم | نعم |
تعتبر المقالب الأساسية جزءًا مهمًا من إمكانية المراقبة.
نظرًا لأن الأنظمة أصبحت أكثر توزيعًا، فإن عمليات التفريغ الأساسية توفر للفرق منهجًا غير جراحي لفهم سبب خلل البرامج في أي بيئة يتم نشرها فيها.
تعتبر عمليات التفريغ الأساسية مفيدة في عدد كبير من السيناريوهات ولكنها وثيقة الصلة جدًا بالحالات التالية:
يتم إنهاء العملية بدون تتبع مكدس مفيد
نفدت الذاكرة من العملية
التطبيق لا يعمل كما هو متوقع
المشاكل التقليدية مع مقالب الأساسية هي:
النفقات العامة لإدارة مقالب النفايات
يتطلب تحليل التفريغ أدوات محددة لم تكن متاحة بسهولة على جهاز المطورين.
إدارة الوصول إلى مقالب النفايات لأنها يمكن أن تحتوي على معلومات حساسة.
يهدف هذا المخطط إلى معالجة المشكلات المحيطة بعمليات التفريغ الأساسية من خلال الاستفادة من الأنظمة الأساسية المشتركة (K8s وROKS وتخزين الكائنات) في بيئة سحابية لتحمل الأعباء الثقيلة.
ينشر المخطط عمليتين:
يقوم الوكيل بإدارة تحديث تكوين /proc/sys/kernel/*
، ونشر خدمة الملحن وتحميل ملف zipfile dumps الأساسي الذي أنشأه الملحن إلى نسخة تخزين الكائنات.
يتولى الملحن معالجة التفريغ الأساسي وإنشاء مستندات وقت التشغيل والتفريغ الأساسي للحاوية ومستندات JSON من CRICTL وإدراجها في ملف مضغوط واحد. يتم تخزين الملف المضغوط على نظام الملفات المحلي للعقدة ليقوم الوكيل بتحميله.
عندما تقوم بتثبيت مخطط IBM Cloud Core Dump Handler Helm، يتم نشر موارد Kubernetes التالية في مجموعة Kubernetes الخاصة بك:
مساحة الاسم : يتم إنشاء مساحة اسم محددة لتثبيت المكونات فيها - الإعدادات الافتراضية لـ ibm-observe
Handler Daemonset : ينشر البرنامج الخفي حجرة على كل عقدة عاملة في مجموعتك. يحتوي البرنامج الخفي على تكوين لتمكين العملية المرتفعة من تحديد النمط الأساسي لوضع التفريغ الأساسي في مخزن الكائنات بالإضافة إلى جمع معلومات الكبسولة إذا كانت متوفرة.
سياسة الامتيازات : يقوم البرنامج الخفي بتكوين العقدة المضيفة بحيث تكون الامتيازات مطلوبة.
حساب الخدمة : حساب الخدمة القياسي لتشغيل البرنامج الخفي
مطالبات الحجم : لنسخ الملحن إلى المضيف وتمكين الوصول إلى عمليات التفريغ الأساسية التي تم إنشاؤها
دور الكتلة : تم إنشاؤه باستخدام مورد حدث وإنشاء فعل ومرتبط بحساب الخدمة.
لتثبيت مخطط Helm في مجموعتك، يجب أن يكون لديك دور النظام الأساسي للمسؤول .
ينشر هذا المخطط مجموعة برامج kubernetes المميزة مع الآثار التالية:
الإنشاء التلقائي للحاوية المميزة لكل عقدة kubernetes قادرة على قراءة الملفات الأساسية التي تستعلم عن crictl للحصول على معلومات pod.
يستخدم البرنامج الخفي ميزة مسار المضيف التي تتفاعل مع نظام التشغيل Linux الأساسي.
يتم نشر ثنائي الملحن وتشغيله على الخادم المضيف
يمكن أن تحتوي عمليات التفريغ الأساسية على بيانات وقت تشغيل حساسة ويجب إدارة الوصول إلى حاوية التخزين وفقًا لذلك.
يتم تخزين مفاتيح تخزين الكائنات كأسرار واستخدامها كمتغيرات بيئة في البرنامج الخفي
يتطلب IBM Cloud Core Dump Handler الموارد التالية على كل عقدة عاملة للتشغيل بنجاح:
$ helm delete core-dump-handler --namespace observe
host-name
قبل المتابعة $ kubectl get pvc -n observe
$ helm install core-dump-handler . --namespace observe
helm delete core-dump-handler -n observe
أنشئ docker build -t YOUR_TAG_NAME .
ادفع الصورة إلى سجل الحاوية الخاص بك
قم بتحديث الحاوية في ملف values.yaml
لاستخدامها.
image :
registry : YOUR_REGISTRY
repository : YOUR_REPOSITORY
tag : YOUR_TAG
أو قم بتشغيل أمر تثبيت helm مع الإعدادات
--set image.registry=YOUR_REGISTRY
--set image.repository=YOUR_REPOSITORY
--set image.tag=YOUR_TAG
تتم كتابة الخدمات بلغة Rust باستخدام Rustup.
يمكن إجراء اختبارات الوحدة المحلية باستخدام cargo test
في المجلد الأساسي
حاليًا يتم دعم IBM Cloud ROKS وIKS فقط ولكن يسعدنا إجراء اختبارات التكامل للخدمات الأخرى ولكن لا يمكننا تشغيلها قبل الإصدار.
لتشغيل بناء اختبارات التكامل، اتبع الإرشادات الخاصة بالبناء المخصص
في جذر مجلد المشروع، قم بإنشاء ملف يسمى .env
بالتكوين التالي
S3_ACCESS_KEY=XXXX
S3_SECRET=XXXX
S3_BUCKET_NAME=XXXX
S3_REGION=XXXX
قم بتغيير الدليل إلى مجلد التكامل وقم بإجراء الاختبار
cd integration
./run-ibm.sh
يتم إنشاء الإصدارات على فرع ما قبل الإصدار، على سبيل المثال، يتم تشغيل اختبارات التكامل pre-8.5.0
يدويًا ويتم إنشاء إصدار عند دمجه مع الإصدار الرئيسي.
ليس من الممكن حاليًا أتمتة هذا لأن تكامل kubernetes في إجراءات github ليس موثوقًا بدرجة كافية.
إذا كنت ترغب في اختبار إصدار مسبق من خلال اختبار التكامل الخاص بك، فيرجى إثارة مشكلة ويمكننا التعاون في التشغيل التجريبي الخاص بك.
المكان الأول الذي يجب البحث فيه عن المشكلات هو وحدة تحكم الوكيل. يجب أن يبدو التثبيت الناجح هكذا
[2021-09-08T22:28:43Z INFO core_dump_agent] Setting host location to: /var/mnt/core-dump-handler
[2021-09-08T22:28:43Z INFO core_dump_agent] Current Directory for setup is /app
[2021-09-08T22:28:43Z INFO core_dump_agent] Copying the composer from ./vendor/default/cdc to /var/mnt/core-dump-handler/cdc
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pattern /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pipe_limit /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for fs.suid_dumpable /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pattern=|/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pattern = |/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pipe_limit = 128
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pipe_limit=128
fs.suid_dumpable = 2
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of fs.suid_dumpable=2
[2021-09-08T22:28:43Z INFO core_dump_agent] Creating /var/mnt/core-dump-handler/.env file with LOG_LEVEL=info
[2021-09-08T22:28:43Z INFO core_dump_agent] Executing Agent with location : /var/mnt/core-dump-handler/core
[2021-09-08T22:28:43Z INFO core_dump_agent] Dir Content []
إذا كان الوكيل يعمل بنجاح، فقد تكون هناك مشكلة في تكوين الملحن. للتحقق من السجلات الخاصة بالمؤلف، افتح Shell في الوكيل وقم بالتقاط ملف Composer.log لمعرفة ما إذا كانت هناك أية رسائل خطأ.
cat /var/mnt/core-dump-handler/composer.log
إذا لم تكن هناك أخطاء، فيجب عليك تغيير السجل الافتراضي من error
إلى debug
في value.yaml وإعادة نشر المخطط. قم بإنشاء ملف تفريغ أساسي مرة أخرى ويجب أن يحتوي /var/mnt/core-dump-handler/composer.log
على تفاصيل محددة حول كل عملية تحميل.