ProHoster > بلوق > إدارة > نظرة عامة على 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 ، يمكنك تثبيت ملف ثنائي:
لا توجد متطلبات محددة لمجموعة K8s نفسها. بناءً على التقييمات ، يعمل التطبيق أيضًا مع الإصدارات القديمة من Kubernetes مثل 1.12.
يتم تشغيل التطبيق باستخدام التكوين القياسي .kube/config - على غرار الطريقة التي يعمل بها kubectl.
ملاحة
بشكل افتراضي ، يتم فتح نافذة مع مساحة الاسم الافتراضية المحددة للسياق. هذا هو ، إذا كتبت kubectl config set-context --current --namespace=test، ثم سيتم فتح مساحة الاسم test. (انظر أدناه لتغيير السياقات / مساحات الأسماء.)
اذهب إلى وضع القيادة يتم عن طريق الضغط على ":". بعد ذلك ، يمكنك التحكم في تشغيل k9s باستخدام الأوامر - على سبيل المثال ، لعرض قائمة StatefulSets (في مساحة الاسم الحالية) ، يمكنك إدخال :sts.
بالنسبة لبعض موارد Kubernetes الأخرى:
:ns - مساحات الاسم.
:deploy - عمليات النشر.
:ing - المداخلات.
:svc - خدمات.
لعرض قائمة كاملة بأنواع الموارد المتاحة للعرض ، هناك أمر :aliases.
من الملائم أيضًا عرض قائمة الأوامر المتاحة من خلال مجموعات المفاتيح السريعة في النافذة الحالية: للقيام بذلك ، ما عليك سوى النقر فوق "؟".
أيضا في k9s هناك وضع البحث، للذهاب إلى ما يكفي للدخول "/". مع ذلك ، يتم إجراء بحث على محتويات "النافذة" الحالية. لنفترض إذا كنت قد أدخلت مسبقًا :ns، لديك قائمة بمساحات أسماء مفتوحة. إذا كان هناك الكثير منهم ، فعندئذٍ حتى لا يتم التمرير لأسفل لفترة طويلة ، يكفي الدخول إلى النافذة باستخدام مساحات الأسماء /mynamespace.
للبحث عن طريق التصنيفات ، يمكنك تحديد جميع القرون في مساحة الاسم المطلوبة ، ثم إدخال ، على سبيل المثال ، / -l app=whoami. سوف نحصل على قائمة القرون بهذا الملصق:
يعمل البحث في جميع أنواع النوافذ ، بما في ذلك السجلات وعرض قوائم YAML و describe للحصول على الموارد - انظر أدناه للحصول على مزيد من التفاصيل حول هذه الميزات.
كيف يبدو تدفق التنقل العام؟
مع الأمر :ctx يمكنك اختيار السياق:
لتحديد مساحة اسم ، هناك الأمر المذكور بالفعل :ns، وبعد ذلك يمكنك استخدام البحث عن المساحة المطلوبة: /test.
إذا حددنا الآن المورد الذي نهتم به (على سبيل المثال ، نفس StatefulSet) ، فستظهر المعلومات المقابلة له: كم عدد البودات التي تعمل بمعلومات موجزة عنها.
قد تكون البودات فقط ذات أهمية - ثم يكفي للدخول :pod. في حالة ConfigMaps (:cm - للحصول على قائمة هذه الموارد) ، يمكنك تحديد الكائن الذي تريده والنقر على "u" ، وبعد ذلك سيخبرك K9s بمن يستخدمه على وجه التحديد (هذا CM).
ميزة أخرى مفيدة لعرض الموارد هي الخاصة بهم "الأشعة السينية" (منظر بالأشعة السينية). يتم استدعاء هذا الوضع بواسطة الأمر :xray RESOURCE و ... من الأسهل إظهار كيفية عملها بدلاً من شرحها. فيما يلي توضيح لـ StatefulSets:
(يمكن تحرير كل من هذه الموارد وتغييرها وعملها describe.)
وهنا الانتشار مع الدخول:
العمل مع الموارد
يمكنك الحصول على معلومات حول كل مورد في YAML أو الخاص به describe بالضغط على اختصارات لوحة المفاتيح المقابلة ("y" و "d" ، على التوالي). بالطبع ، هناك المزيد من العمليات الأساسية: يمكن رؤية اختصارات القائمة ولوحة المفاتيح دائمًا بفضل "رأس" ملائم في الواجهة (مخفي بالضغط على Ctrl + e).
عند تحرير أي مورد ("e" بعد تحديده) ، يتم فتح محرر النصوص المحدد في متغيرات البيئة (export EDITOR=vim).
وإليك ما يبدو عليه الوصف التفصيلي للمورد (describe):
يمكن حفظ هذا الإخراج (أو ناتج عرض بيان YAML الخاص بالمورد) باستخدام اختصار لوحة المفاتيح المألوف Ctrl + s. سيتم معرفة مكان حفظه من رسالة K9s:
يمكنك أيضًا استعادة الموارد من ملفات النسخ الاحتياطي التي تم إنشاؤها ، بعد إزالة تسميات النظام والتعليقات التوضيحية. للقيام بذلك ، عليك الذهاب إلى الدليل معهم (:dir /tmp) ، ثم حدد الملف المطلوب وطبقه apply.
بالمناسبة ، في أي وقت يمكنك التراجع إلى ReplicaSet السابقة إذا كانت هناك مشاكل في المجموعة الحالية. للقيام بذلك ، حدد RS المطلوب (:rs لقائمتهم):
... والتراجع باستخدام Ctrl + l. يجب أن نتلقى إشعارًا يفيد بأن كل شيء سار على ما يرام:
k9s/whoami-5cfbdbb469 successfully rolled back
ولتوسيع نطاق النسخ المتماثلة ، ما عليك سوى النقر على "s" (المقياس) وتحديد العدد المطلوب من المثيلات:
يمكنك إدخال أي من الحاويات باستخدام الغلاف: للقيام بذلك ، انتقل إلى الحاوية المطلوبة ، وانقر على "s" (shell) وحدد الحاوية.
ميزات أخرى
بالطبع ، يتم أيضًا دعم عرض السجلات ("l" للمورد المحدد). ولمشاهدة السجلات الجديدة ، ليست هناك حاجة للضغط باستمرار على Enter: يكفي وضع علامة ("m") ، ثم تتبع الرسائل الجديدة فقط.
في نفس النافذة أيضًا ، يمكنك تحديد النطاق الزمني لإخراج السجلات:
مفتاح "1" - لمدة 1 دقيقة ؛
"2 دقيقة؛
"3 دقيقة؛
"4 دقيقة؛
"5" - ساعة واحدة ؛
"0" - طوال عمر الكبسولة.
وضع التشغيل الخاص Pulse (command :pulse) معلومات عامة حول مجموعة Kubernetes:
يمكنك أن ترى فيه عدد الموارد وحالتها (تظهر الموارد الخضراء تلك التي لها الحالة Running).
ميزة أخرى رائعة من K9s تسمى بوب. يقوم بفحص جميع الموارد لمعايير معينة من الصحة ويعرض "التصنيف" الناتج مع التفسيرات. على سبيل المثال ، يمكنك أن ترى أنه لا توجد عينات أو حدود كافية ، ويمكن تشغيل بعض الحاويات كجذر ...
يوجد دعم Helm أساسي. على سبيل المثال ، هذه هي الطريقة التي يمكنك من خلالها رؤية الإصدارات المنتشرة في المجموعة:
:helm all # все
:helm $namespace # в конкретном пространстве имен
مؤشر
حتى أنها مدمجة في K9s مهلا هو مولد تحميل بسيط لخادم HTTP ، وهو بديل لـ ab المعروف (ApacheBench).
لتمكينه ، تحتاج إلى تمكين إعادة توجيه المنفذ في الحجرة. للقيام بذلك ، حدد الحجرة واضغط على Shift + f ، انتقل إلى القائمة الفرعية لإعادة توجيه المنفذ باستخدام الاسم المستعار "pf".
بعد تحديد المنفذ والضغط على Ctrl + b ، سيبدأ الاختبار نفسه. يتم تخزين نتائج عمله في /tmp ومتاحة للعرض لاحقًا في K9s.
لتغيير تكوين المعيار ، تحتاج إلى إنشاء ملف $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. أنا بنفسي استخدمت واحدًا منهم فقط في عملي - 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" للتنفيذ باستخدام الأمر المقابل:
من بين المكونات الإضافية ، على سبيل المثال ، عمليات تكامل مع kubectl-jq وأداة لعرض السجلات صارم.
اختتام
بالنسبة لذوقي ، اتضح أن K9s ملائمة جدًا للعمل معها: يمكنك التعود بسرعة على البحث عن كل ما تحتاجه دون استخدامه. kubectl. لقد سررت برؤية السجلات وحفظها ، والتحرير السريع للموارد ، وسرعة العمل بشكل عام * ، واتضح أن وضع Popeye كان مفيدًا. هناك إشارة خاصة إلى القدرة على إنشاء مكونات إضافية وتعديل التطبيق ليناسب احتياجاتك.
* على الرغم من وجود حجم كبير من السجلات ، إلا أنني لاحظت أيضًا بطء تشغيل K9s. في مثل هذه اللحظات ، "أكلت" الأداة نواة من Intel Xeon E2xx ويمكن أن تتجمد.
ما هو مفقود في الوقت الراهن؟ التراجع السريع إلى الإصدار السابق (لا نتحدث عن RS) دون الانتقال إلى الدليل. بالإضافة إلى ذلك ، يحدث الاسترداد فقط من أجل فقط المورد: إذا حذفت تعليقًا توضيحيًا أو تسمية ، فسيتعين عليك حذف واستعادة المورد بأكمله (هذا هو المكان الذي تحتاج إلى الذهاب إليه إلى الدليل). تافه أخرى - لا يوجد تاريخ كاف لهذه "النسخ الاحتياطية" المحفوظة.