kubebox وقذائف وحدة التحكم الأخرى ل Kubernetes



لقد كتبنا بالفعل عن "مساعدي وحدة التحكم" لـ Kubernetes قبل عام ، وحتى قبل ذلك قمنا بعمل نظرة عامة على المرافق المفيدة الأخرى. ومع ذلك ، مع تطوير K8s ومجتمعها ، يخضع النظام البيئي المرتبط أيضًا بتغييرات. لذلك ، لدينا مرة أخرى ما نقوله لمحبي وحدة التحكم. دعنا نذهب!

kubebox


  • جيثب (400+ نجمة)
  • اللغة: JavaScript (Node.js)
  • الترخيص: MIT

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

لذا ، فإن الغرض من kubebox هو العمل بشكل كامل مع Kubernetes كجزء من واجهة وحدة التحكم المريحة المقدمة بأسلوب الرسومات الزائفة:

الصورة

يعني العمل ميزات مثل التنقل عبر اللوحات عبر مساحات الأسماء وعرض السجلات وحتى الرسوم البيانية لاستهلاك الموارد الرئيسية (وحدة المعالجة المركزية ، والذاكرة ، والشبكة) ، وتنفيذ الأوامر عن بعد في الحاويات. يمكن أخذ إعدادات الاتصال بالمجموعات من متغير البيئة KUBECONFIG أو KUBECONFIG في $HOME/.kube .

تتضمن الخطط الإضافية للمطورين دعمًا لتحرير التكوينات وتنفيذ عمليات CRUD ، بالإضافة إلى إعادة تصميم كبيرة للواجهة لدعم أنواع جديدة من الأوليات (الخدمات ، النشر ، إلخ) والتنقل الملائم عليها مع إخراج معلومات إضافية (على وجه الخصوص ، kubectl describe pod ).

ميزة مهمة هي توفر إصدار عبر الإنترنت (للاتصال بخادم Kubernetes API ، ستحتاج إلى إنشاء cors-allow cors-allowed-origins ). بالإضافة إلى ذلك ، يمكن تشغيل kubebox كملف منفصل قابل للتنفيذ ، كعميل داخل الكتلة (عبر kubectl) ، وكذلك من خدمة تم نشرها في مجموعة Kubernetes أو OpenShift ( يتم استخدام Xterm.js لمحاكاة المحطة الطرفية).

منذ ما يقرب من عامين ، يعمل موظف Red Hat من فرنسا على تطوير kubebox (على وجه الدقة ، حتى أقل من 10 ٪ من الالتزامات التي قام بها زميله). تلقى المشروع دعاية واسعة بما فيه الكفاية فقط في الشهر الماضي (على Reddit وعدد من الموارد الأخرى) ، لذلك يمكن توقع أن هذا سيعطي قوة دفع جديدة لتطويره.

kube-shell و kube-موجه


قذيفة كوبي


  • جيثب (950+ نجمة)
  • اللغة: Python
  • الترخيص: Apache 2.0


(انتباه ، هذا ~ 2 ميجا بايت GIF!)

موجه kube


  • جيثب (700+ نجوم)
  • اللغة: Go
  • الترخيص: MIT



لقد كتبنا بالفعل عن هذه المشاريع قبل عام ، وكانت في ذلك الوقت المفضلة غير المشروطة بين قذائف وحدة التحكم الكاملة للعمل مع Kubernetes. كلاهما في وضع واجهات محسنة (أكثر ملاءمة للاستخدام) إلى kubectl. في kube-shell ، يستخدمون مكتبة مجموعة الأدوات السريعة لـ Python ، وبالنسبة إلى kube-prom أخذوا وطوروا مكتبة مماثلة على Go ( الذهاب الفوري ).

إذا قارنتهم مع kubebox ، فإن الواجهة لا تعتمد على الرسوم الكاذبة ، ولكن على وحدة التحكم المعتادة لإدخال الأوامر (انظر لقطات الشاشة أعلاه) ، والتي ، مع ذلك ، مصحوبة بـ "تأثيرات خاصة" مثيرة للاهتمام: تلميحات الأدوات باستخدام الأوامر والإضافة التلقائية الملائمة و الخ.

على الرغم من النطاق الواسع من الميزات المدعومة (بما في ذلك نظام التلميحات الذي تم ذكره بالفعل والإكمال التلقائي ، والبحث عن تاريخ الأوامر ووضع تحرير يشبه السادس) ، فإن سجل الالتزامات في kube-shell يشير إلى تباطؤ واضح في المشروع. تم تسجيل سبع التزامات فقط هذا العام ، اثنان منها عبارة عن تعديلات README . على الرغم من وجود بعض منها مفيدة ، على سبيل المثال ، الدعم الذي طال انتظاره لمتغير KUBECONFIG . بطريقة أو بأخرى ، فإن استمرار قلة رد فعل المطورين على الاستفسارات المتعلقة بالمستخدم (انظر المشكلات ) لا يلهم العملاء المحتملين.

يبدو الوضع مع تطور kube-الفوري أفضل قليلاً. على الرغم من أن هذا المشروع قد سجل عددًا أقل من النجوم على GitHub (إذا كان قبل عام كان متقدمًا قليلاً على منافس Python ، إلا أنه متأخر الآن بشكل ملحوظ) ، وتظهر عمليات التنفيذ بشكل أكثر أو أقل بانتظام ، وآخر إصدار ( 1.0.5 ) بتاريخ 18 أكتوبر. ومع ذلك ، لا توجد الكثير من التغييرات الهامة خلال العام الماضي - نلاحظ دعم الإصدار 1.11 من Kubernetes وإمكانية الإكمال التلقائي لمساحة الاسم. الشيء الرئيسي هو أن المؤلف نفسه يعترف باستحالة تكريس وقت كاف لتطوير kube-الفوري ويبحث عن مساعدين.

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

انقر


  • جيثب (750+ نجوم)
  • اللغة: Rust
  • الترخيص: Apache 2.0

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



نشأت فكرة المشروع في Databricks ، حيث يستخدمون Kubernetes بنشاط وتعبوا من مراقبة نفس السيناريو مع kubectl ، الأمر الذي يتطلب إدخالًا مستمرًا للبيانات السابقة. في الوقت نفسه ، تحظى أداة kubectl نفسها - مثل وحدة التحكم بشكل عام - بشعبية كبيرة بين المهندسين. لذلك ظهرت هذه الوظيفة الإضافية ، لا تدعي استبدال kubectl ، ولكنها تساعد فقط في العمل معها. مثال لحالة استخدام Click:

pods //
2 //
describe //
events //
logs -c foo > /tmp/podfoo.log //
delete // ( )


إذا كنت مهتمًا ، فراجع أيضًا شاشة تسجيل صغيرة توضح عمل Click مع التعليقات النصية.

العمل مع السجلات


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

ستيرن


  • جيثب (~ 1300 نجوم)
  • اللغة: Go
  • الترخيص: Apache 2.0

ستيرن هو المفضل بلا منازع في الذيل لفئة Kubernetes. للتوضيح ، عند عرض السجلات ، يتم استخدام رموز ألوان مختلفة:



ميزة أخرى مهمة هي استخدام التعبيرات العادية لتصفية الموقد دون الحاجة إلى معرفة معرفات محددة (على سبيل المثال ، حدد كل شيء بالاسم web-\w+ ). وبالمثل (على سبيل المثال ، regexpams) ، يمكنك تصفية حاويات محددة للقرون المطلوبة. من بين الميزات الأخرى الصارمة:

  • دعم قوالب Go المخصصة لسجلات الإخراج (هناك العديد محدد مسبقًا بشكل افتراضي) ؛
  • دعم محددات الملصقات ؛
  • تقييد إخراج السجل بقيمة زمنية محددة - منذ و / أو عدد محدد من الأسطر ؛
  • دعم الإكمال التلقائي لـ bash و zsh ، بالإضافة إلى الاستبدال الديناميكي للقيم لمساحات الأسماء والسياقات.

Kubetail


  • جيثب (~ 950 نجوم)
  • اللغة: Shell
  • الترخيص: Apache 2.0

حل مماثل ، مكتوب بلغة باش العادية وأكثر نشاطًا بقليل تم تطويره في العام الماضي. مثل صارم ، يدعم تمييز أسماء المداخن (أو السطر الكامل القابل للتخصيص):



كما يسمح لك بتصفية القرون والحاويات حسب كل من الأسماء الكاملة والتعبيرات العادية ، بالإضافة إلى استخدام المحددات ، وقصر الإخراج على الوقت وعدد الأسطر ، ودعم الإكمال التلقائي لـ Bash و zsh والأسماك. من بين الميزات الأخرى:

  • وضع --follow لتحديث البيانات من السجلات في الوقت الحقيقي (كما في tail -f ) ؛
  • --dry-run لعرض قائمة --dry-run المناسبة دون تنفيذ أي إجراءات أخرى ؛
  • دعم محدد jq لتحليل الإخراج في JSON.

كايل


  • جيثب (~ 500 نجوم)
  • اللغة: Go
  • الترخيص: MIT

تنفيذ آخر شهد أقل نشاط في قاعدة التعليمات البرمجية خلال العام الماضي. ومع ذلك ، فإن لها ميزات وظيفية مثيرة للاهتمام تختلف عن منافسيها ، وهي:

  • تقييد طلب المداخن بأسماء خدمتهم و ReplicationController و ReplicaSet و Deploya و Node و / Ingress (أي المداخن التي تنتمي إلى الخدمات التي يؤدي إليها الدخول المحدد) ؛
  • القدرة على الاختيار ليس فقط عن طريق المحددات ، ولكن أيضًا استبعادها ؛
  • تحديد مستوى التسجيل ( --log-level ).



ولكن هناك أيضًا عيوب: لا يُبرز الكايل القرون ذات الألوان ، ولا يدعم التعبيرات العادية للمرشحات.

ملاحظة


نشكرك على اهتمامك ، وبالطبع ، يسعدنا أن نسمع عن نتائجك في التعليقات!

اقرأ أيضا في مدونتنا:

Source: https://habr.com/ru/post/ar426985/


All Articles