Trident: لا يعود بعد تسجيل "خطأ في تحديد سيناريو التحديث."

تم إنشاؤها على ٢ يوليو ٢٠٢١  ·  5تعليقات  ·  مصدر: NetApp/trident

صف الخلل
وجدنا الرمز الذي لا يعود بعد تلقي الخطأ.
https://github.com/NetApp/trident/blob/stable/v21.04/operator/controllers/orchestrator/controller.go#L1177 -L1184
في هذه الحالة currentInstalledTridentVersion و tridentK8sConfigVersion فارغون ، لكن هذه المتغيرات مستخدمة في الكود التالي.
لست متأكدًا من أن هذا خطأ ، ولكن إذا لم يتم الرجوع بعد الخطأ ، فقد يتم استخدام المتغيرات بشكل غير متوقع.

بيئة

  • إصدار ترايدنت: v21.04
bug tracked

التعليق الأكثر فائدة

تم إصلاح هذه المشكلة من خلال الالتزام bf43f8 وتم تضمينها في إصدار ترايدنت 21.10.0.

ال 5 كومينتر

مرحبا takuhiro ،

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

الشيء المثالي الذي يجب القيام به هو إعادة إنشاء هذه الكائنات. يوجد الآن متغيرين فارغين هنا:

  1. tridentK8sConfigVersion ، عندما يتم إرجاعه فارغًا ، يفشل Trident في تحديد ما إذا كان هذا سيناريو ترقية أم لا. لذلك ، في هذا السيناريو ، لم يتم وضع علامة على تثبيت Trident للترقية ( هنا ).
  2. currentInstalledTridentVersion ، يستخدم هذا المتغير لتعيين الإصدار في حالة CR ، ويستخدم مرة واحدة بالضبط في installer.go لمقارنة إصدار ترايدنت الحالي بإصدار ترايدنت الذي توفره الصورة ( هنا ). في هذا السيناريو ، يجب أن يفشل هذا الشرط ويتم وضع علامة Trident لإعادة التثبيت.

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

@ ntap-arorar شكرا لك على الإجابة المفصلة. لقد فهمت المنطق عندما يكون tridentK8sConfigVersion و currentInstalledTridentVersion فارغين وسيتم حل ذلك في التكرار التالي.

في حالتنا ، كانت رسالة الخطأ الكاملة هذه. (يؤسفني أنه كان يجب علي تضمين السياق أولاً.)

time="2021-06-26T14:56:52Z" level=error msg="Error identifying update scenario." controllingCR=trident err="unable to get list of deployments"

الخطأ unable to get list of deployments هنا . ربما كان السبب الأساسي للخطأ هو خطأ طلب GET مؤقت لخادم api هنا ، مما قد يؤدي إلى إعادة التثبيت غير الضرورية. في هذه الحالة ، أعتقد أنه سيكون من الأفضل العودة وإعادة المحاولة في التكرار التالي.

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

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

تم إصلاح هذه المشكلة من خلال الالتزام bf43f8 وتم تضمينها في إصدار ترايدنت 21.10.0.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات