نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

K9s يوفر واجهة مستخدم طرفية للتفاعل مع مجموعات Kubernetes. الهدف من هذا المشروع مفتوح المصدر هو تسهيل التنقل في التطبيقات ومراقبتها وإدارتها في K8s. يراقب K9s التغييرات في Kubernetes باستمرار ويقدم أوامر سريعة للعمل مع الموارد الخاضعة للمراقبة.

تمت كتابة المشروع في Go وهو موجود منذ أكثر من عام ونصف: تم الالتزام الأول في 1 فبراير 2019. في وقت كتابة هذا التقرير ، كان هناك أكثر من 9000 نجمة GitHub جيثب: وحوالي 80 مساهمًا. دعونا نرى ما يمكن أن تفعله k9s؟

التثبيت والإطلاق

هذا تطبيق عميل (فيما يتعلق بمجموعة Kubernetes) يسهل تشغيله كصورة Docker:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

بالنسبة لبعض توزيعات Linux وأنظمة التشغيل الأخرى ، هناك أيضًا جاهزة للتثبيت пакеты. بشكل عام ، بالنسبة لأنظمة Linux ، يمكنك تثبيت ملف ثنائي:

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

لا توجد متطلبات محددة لمجموعة K8s نفسها. بناءً على التقييمات ، يعمل التطبيق أيضًا مع الإصدارات القديمة من Kubernetes مثل 1.12.

يتم تشغيل التطبيق باستخدام التكوين القياسي .kube/config - على غرار الطريقة التي يعمل بها kubectl.

ملاحة

بشكل افتراضي ، يتم فتح نافذة مع مساحة الاسم الافتراضية المحددة للسياق. هذا هو ، إذا كتبت kubectl config set-context --current --namespace=test، ثم سيتم فتح مساحة الاسم test. (انظر أدناه لتغيير السياقات / مساحات الأسماء.)

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

اذهب إلى وضع القيادة يتم عن طريق الضغط على ":". بعد ذلك ، يمكنك التحكم في تشغيل k9s باستخدام الأوامر - على سبيل المثال ، لعرض قائمة StatefulSets (في مساحة الاسم الحالية) ، يمكنك إدخال :sts.

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

بالنسبة لبعض موارد Kubernetes الأخرى:

  • :ns - مساحات الاسم.
  • :deploy - عمليات النشر.
  • :ing - المداخلات.
  • :svc - خدمات.

لعرض قائمة كاملة بأنواع الموارد المتاحة للعرض ، هناك أمر :aliases.

من الملائم أيضًا عرض قائمة الأوامر المتاحة من خلال مجموعات المفاتيح السريعة في النافذة الحالية: للقيام بذلك ، ما عليك سوى النقر فوق "؟".

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

أيضا في k9s هناك وضع البحث، للذهاب إلى ما يكفي للدخول "/". مع ذلك ، يتم إجراء بحث على محتويات "النافذة" الحالية. لنفترض إذا كنت قد أدخلت مسبقًا :ns، لديك قائمة بمساحات أسماء مفتوحة. إذا كان هناك الكثير منهم ، فعندئذٍ حتى لا يتم التمرير لأسفل لفترة طويلة ، يكفي الدخول إلى النافذة باستخدام مساحات الأسماء /mynamespace.

للبحث عن طريق التصنيفات ، يمكنك تحديد جميع القرون في مساحة الاسم المطلوبة ، ثم إدخال ، على سبيل المثال ، / -l app=whoami. سوف نحصل على قائمة القرون بهذا الملصق:

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

يعمل البحث في جميع أنواع النوافذ ، بما في ذلك السجلات وعرض قوائم YAML و describe للحصول على الموارد - انظر أدناه للحصول على مزيد من التفاصيل حول هذه الميزات.

كيف يبدو تدفق التنقل العام؟

مع الأمر :ctx يمكنك اختيار السياق:

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

لتحديد مساحة اسم ، هناك الأمر المذكور بالفعل :ns، وبعد ذلك يمكنك استخدام البحث عن المساحة المطلوبة: /test.

إذا حددنا الآن المورد الذي نهتم به (على سبيل المثال ، نفس StatefulSet) ، فستظهر المعلومات المقابلة له: كم عدد البودات التي تعمل بمعلومات موجزة عنها.

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

قد تكون البودات فقط ذات أهمية - ثم يكفي للدخول :pod. في حالة ConfigMaps (:cm - للحصول على قائمة هذه الموارد) ، يمكنك تحديد الكائن الذي تريده والنقر على "u" ، وبعد ذلك سيخبرك K9s بمن يستخدمه على وجه التحديد (هذا CM).

ميزة أخرى مفيدة لعرض الموارد هي الخاصة بهم "الأشعة السينية" (منظر بالأشعة السينية). يتم استدعاء هذا الوضع بواسطة الأمر :xray RESOURCE و ... من الأسهل إظهار كيفية عملها بدلاً من شرحها. فيما يلي توضيح لـ StatefulSets:

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes
(يمكن تحرير كل من هذه الموارد وتغييرها وعملها describe.)

وهنا الانتشار مع الدخول:

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

العمل مع الموارد

يمكنك الحصول على معلومات حول كل مورد في YAML أو الخاص به describe بالضغط على اختصارات لوحة المفاتيح المقابلة ("y" و "d" ، على التوالي). بالطبع ، هناك المزيد من العمليات الأساسية: يمكن رؤية اختصارات القائمة ولوحة المفاتيح دائمًا بفضل "رأس" ملائم في الواجهة (مخفي بالضغط على Ctrl + e).

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

عند تحرير أي مورد ("e" بعد تحديده) ، يتم فتح محرر النصوص المحدد في متغيرات البيئة (export EDITOR=vim).

وإليك ما يبدو عليه الوصف التفصيلي للمورد (describe):

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

يمكن حفظ هذا الإخراج (أو ناتج عرض بيان YAML الخاص بالمورد) باستخدام اختصار لوحة المفاتيح المألوف Ctrl + s. سيتم معرفة مكان حفظه من رسالة K9s:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

يمكنك أيضًا استعادة الموارد من ملفات النسخ الاحتياطي التي تم إنشاؤها ، بعد إزالة تسميات النظام والتعليقات التوضيحية. للقيام بذلك ، عليك الذهاب إلى الدليل معهم (:dir /tmp) ، ثم حدد الملف المطلوب وطبقه apply.

بالمناسبة ، في أي وقت يمكنك التراجع إلى ReplicaSet السابقة إذا كانت هناك مشاكل في المجموعة الحالية. للقيام بذلك ، حدد RS المطلوب (:rs لقائمتهم):

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

... والتراجع باستخدام Ctrl + l. يجب أن نتلقى إشعارًا يفيد بأن كل شيء سار على ما يرام:

k9s/whoami-5cfbdbb469 successfully rolled back

ولتوسيع نطاق النسخ المتماثلة ، ما عليك سوى النقر على "s" (المقياس) وتحديد العدد المطلوب من المثيلات:

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

يمكنك إدخال أي من الحاويات باستخدام الغلاف: للقيام بذلك ، انتقل إلى الحاوية المطلوبة ، وانقر على "s" (shell) وحدد الحاوية.

ميزات أخرى

بالطبع ، يتم أيضًا دعم عرض السجلات ("l" للمورد المحدد). ولمشاهدة السجلات الجديدة ، ليست هناك حاجة للضغط باستمرار على Enter: يكفي وضع علامة ("m") ، ثم تتبع الرسائل الجديدة فقط.

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

في نفس النافذة أيضًا ، يمكنك تحديد النطاق الزمني لإخراج السجلات:

  • مفتاح "1" - لمدة 1 دقيقة ؛
  • "2 دقيقة؛
  • "3 دقيقة؛
  • "4 دقيقة؛
  • "5" - ساعة واحدة ؛
  • "0" - طوال عمر الكبسولة.

وضع التشغيل الخاص Pulse (command :pulse) معلومات عامة حول مجموعة Kubernetes:

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

يمكنك أن ترى فيه عدد الموارد وحالتها (تظهر الموارد الخضراء تلك التي لها الحالة Running).

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

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

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

:helm all # все
:helm $namespace # в конкретном пространстве имен

مؤشر

حتى أنها مدمجة في K9s مهلا هو مولد تحميل بسيط لخادم HTTP ، وهو بديل لـ ab المعروف (ApacheBench).

لتمكينه ، تحتاج إلى تمكين إعادة توجيه المنفذ في الحجرة. للقيام بذلك ، حدد الحجرة واضغط على Shift + f ، انتقل إلى القائمة الفرعية لإعادة توجيه المنفذ باستخدام الاسم المستعار "pf".

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

بعد تحديد المنفذ والضغط على Ctrl + b ، سيبدأ الاختبار نفسه. يتم تخزين نتائج عمله في /tmp ومتاحة للعرض لاحقًا في K9s.

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes
نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

لتغيير تكوين المعيار ، تحتاج إلى إنشاء ملف $HOME/.k9s/bench-<my_context>.yml (تحدد لكل عنقود).

ملاحظة: من المهم أن يتم تمديد جميع ملفات YAML في الدليل .k9s كان ذلك بالضبط .yml (.yaml لا يعمل بشكل صحيح).

مثال على التكوين:

benchmarks:
  defaults:
    # Количество потоков
    concurrency: 2
    # Количество запросов
    requests: 1000
  containers:
    # Настройки для контейнера с бенчмарком
    # Контейнер определяется как namespace/pod-name:container-name
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 services:
    # Можно проводить бенчмарк на сервисах типа NodePort и LoadBalancer
    # Синтаксис: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

السطح البيني

يتم تعديل مظهر الأعمدة لقوائم الموارد بإنشاء ملف $HOME/.k9s/views.yml. مثال على محتواها:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

صحيح ، لا يوجد عمود كافٍ للتسميات التي يوجد لها قضية في المشروع.

يتم الفرز حسب الأعمدة بواسطة اختصارات لوحة المفاتيح:

  • Shift + n - بالاسم ؛
  • Shift + o - بواسطة العقد ؛
  • Shift + i - بواسطة IP ؛
  • Shift + a - حسب عمر الحاوية ؛
  • Shift + t - بعدد مرات إعادة التشغيل ؛
  • Shift + r - حسب حالة الاستعداد ؛
  • Shift + c - عن طريق استهلاك وحدة المعالجة المركزية ؛
  • Shift + m - حسب استهلاك الذاكرة.

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

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

الإضافات

وأخيرا، الإضافات تسمح لك بتوسيع قدرات K9s. أنا بنفسي استخدمت واحدًا منهم فقط في عملي - kubectl get all -n $namespace.

تبدو هكذا. قم بإنشاء ملف $HOME/.k9s/plugin.yml بمحتوى مثل هذا:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: get all
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

يمكنك الآن الانتقال إلى مساحة الاسم والضغط على "g" للتنفيذ باستخدام الأمر المقابل:

نظرة عامة على k9s - واجهة طرفية متقدمة لـ Kubernetes

من بين المكونات الإضافية ، على سبيل المثال ، عمليات تكامل مع kubectl-jq وأداة لعرض السجلات صارم.

اختتام

بالنسبة لذوقي ، اتضح أن K9s ملائمة جدًا للعمل معها: يمكنك التعود بسرعة على البحث عن كل ما تحتاجه دون استخدامه. kubectl. لقد سررت برؤية السجلات وحفظها ، والتحرير السريع للموارد ، وسرعة العمل بشكل عام * ، واتضح أن وضع Popeye كان مفيدًا. هناك إشارة خاصة إلى القدرة على إنشاء مكونات إضافية وتعديل التطبيق ليناسب احتياجاتك.

* على الرغم من وجود حجم كبير من السجلات ، إلا أنني لاحظت أيضًا بطء تشغيل K9s. في مثل هذه اللحظات ، "أكلت" الأداة نواة من Intel Xeon E2xx ويمكن أن تتجمد.

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

PS

اقرأ أيضًا على مدونتنا:

المصدر: www.habr.com

إضافة تعليق