
Kubernetes klasterlari bilan ishlash uchun terminal foydalanuvchi interfeysini taqdim etadi. Ushbu Open Source loyihasining maqsadi K8-larda ilovalarni boshqarish, kuzatish va boshqarishni osonlashtirishdir. K9s doimiy ravishda Kubernetes-dagi o'zgarishlarni kuzatib boradi va nazorat qilinadigan resurslar bilan ishlash uchun tezkor buyruqlarni taklif qiladi.
Loyiha Go-da yozilgan va bir yarim yildan ortiq vaqtdan beri mavjud: birinchi majburiyat 1-yil 2019-fevralda qilingan. Yozish vaqtida 9000+ yulduz bor va 80 ga yaqin ishtirokchilar. Keling, k9s nima qila olishini ko'rib chiqaylik?
O'rnatish va ishga tushirish
Bu mijoz (Kubernetes klasteriga nisbatan) ilovasi boʻlib, uni Docker tasviri sifatida ishlatish eng oson:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9sBa'zi Linux distributivlari va boshqa operatsion tizimlar uchun o'rnatishga tayyor ham mavjud . Umuman olganda, Linux tizimlari uchun siz ikkilik faylni o'rnatishingiz mumkin:
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/binK8s klasterining o'zi uchun maxsus talablar yo'q. Sharhlarga ko'ra, ilova Kubernetesning 1.12 kabi eski versiyalari bilan ham ishlaydi.
Ilova standart konfiguratsiya yordamida ishga tushiriladi .kube/config - xuddi shunday bo'ladi kubectl.
Navigatsiya
Odatiy bo'lib, kontekst uchun belgilangan standart nom maydoni bilan oyna ochiladi. Ya'ni, agar siz yozsangiz kubectl config set-context --current --namespace=test, keyin nom maydoni ochiladi test. (Kontekstlarni/nom bo'shliqlarini o'zgartirish uchun pastga qarang.)

Ga boring buyruq rejimi “:” tugmasini bosish orqali amalga oshiriladi. Shundan so'ng, siz k9-larning ishlashini buyruqlar yordamida boshqarishingiz mumkin - masalan, StatefulSets ro'yxatini ko'rish uchun (joriy nomlar maydonida), siz kiritishingiz mumkin :sts.
![]()
Boshqa Kubernetes resurslari uchun:
-
:ns- nomlar maydoni; -
:deploy- Joylashtirish; -
:ing- kirishlar; -
:svc- xizmatlar.
Ko'rish uchun mavjud resurs turlarining to'liq ro'yxatini ko'rsatish uchun buyruq mavjud :aliases.
Joriy oynada tezkor tugmalar birikmasi yordamida mavjud bo'lgan buyruqlar ro'yxatini ko'rish ham qulay: buning uchun "?" tugmasini bosish kifoya.

K9larda ham bor qidiruv rejimi, o'tish uchun "/" kiritish kifoya. Uning yordamida joriy "oyna" tarkibi bo'yicha qidiruv amalga oshiriladi. Aytaylik, agar siz ilgari kirgan bo'lsangiz :ns, sizda ochiq nom bo'shliqlari ro'yxati bor. Agar ular juda ko'p bo'lsa, uzoq vaqt pastga tushmaslik uchun oynaga nom bo'shliqlari bilan kirish kifoya. /mynamespace.
Yorliqlar bo'yicha qidirish uchun siz kerakli nom maydonidagi barcha podlarni tanlashingiz mumkin, so'ngra, masalan, / -l app=whoami. Biz ushbu yorliqli podalar ro'yxatini olamiz:
![]()
Qidiruv barcha turdagi oynalarda ishlaydi, jumladan jurnallar, YAML manifestlarini ko'rish va describe resurslar uchun - bu xususiyatlar haqida batafsil ma'lumot olish uchun pastga qarang.
Umumiy navigatsiya oqimi qanday ko'rinishga ega?
Buyruq bilan :ctx kontekstni tanlashingiz mumkin:

Nom maydonini tanlash uchun allaqachon aytib o'tilgan buyruq mavjud :ns, va keyin siz kerakli joyni qidirishdan foydalanishingiz mumkin: /test.
Agar biz hozir bizni qiziqtirgan resursni tanlasak (masalan, xuddi shu StatefulSet), u uchun tegishli ma'lumotlar paydo bo'ladi: ular haqida qisqacha ma'lumotga ega qancha podalar ishlaydi.
![]()
Faqat podalar qiziq bo'lishi mumkin - keyin kirish kifoya :pod. ConfigMaps holatida (:cm - ushbu manbalar ro'yxati uchun), siz qiziqish ob'ektini tanlashingiz va "u" tugmasini bosishingiz mumkin, shundan so'ng K9s uni kim ishlatayotganini aytadi (bu CM).
Resurslarni ko'rish uchun yana bir qulay xususiyat - ularning "rentgen" (rentgen ko'rinishi). Ushbu rejim buyruq bilan chaqiriladi :xray RESOURCE va ... tushuntirishdan ko'ra qanday ishlashini ko'rsatish osonroq. Mana StatefulSets uchun rasm:

(Ushbu manbalarning har biri tahrirlanishi, o'zgartirilishi, tuzilishi mumkin describe.)
Va bu erda kirish bilan joylashtirish:

Resurslar bilan ishlash
YAML yoki uning har bir resursi haqida ma'lumot olishingiz mumkin describe tegishli klaviatura yorliqlarini (“y” va “d”) bosish orqali. Albatta, bundan ham asosiy operatsiyalar mavjud: ularning ro'yxati va klaviatura yorliqlari interfeysdagi qulay "sarlavha" tufayli har doim ko'rinadi (Ctrl + e tugmalarini bosish orqali yashiriladi).

Har qanday resursni tahrirlashda (tanlanganidan keyin "e") muhit o'zgaruvchilarida aniqlangan matn muharriri ochiladi (export EDITOR=vim).
Va bu erda resursning batafsil tavsifi qanday ko'rinadi (describe):

Ushbu chiqish (yoki YAML resurs manifestini ko'rish natijasi) Ctrl + s tanish klaviatura yorliqlari yordamida saqlanishi mumkin. Qayerda saqlanishi K9s xabaridan ma'lum bo'ladi:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully! Shuningdek, tizim yorliqlari va izohlarni olib tashlaganingizdan so'ng yaratilgan zaxira fayllardan resurslarni tiklashingiz mumkin. Buning uchun siz ular bilan katalogga kirishingiz kerak (:dir /tmp), keyin kerakli faylni tanlang va amal qiling apply.
Aytgancha, istalgan vaqtda oldingi ReplicaSet-ga qaytishingiz mumkin, agar joriy bilan bog'liq muammolar mavjud bo'lsa. Buning uchun kerakli RS ni tanlang (:rs ularning ro'yxati uchun):

... va Ctrl + l bilan orqaga qaytarish. Biz hamma narsa yaxshi bo'lganligi haqida xabar olishimiz kerak:
k9s/whoami-5cfbdbb469 successfully rolled backVa replikalarni masshtablash uchun "s" (masshtab) ustiga bosing va kerakli misol sonini tanlang:

Qobiq yordamida har qanday konteynerni kiritishingiz mumkin: buning uchun kerakli podkakka o'ting, "s" (qobiq) ustiga bosing va idishni tanlang.
Boshqa xususiyatlar
Albatta, jurnallarni ko'rish ham qo'llab-quvvatlanadi (tanlangan resurs uchun "l"). Va yangi jurnallarni ko'rish uchun doimiy ravishda Enter tugmasini bosishning hojati yo'q: ("m") belgilash kifoya, keyin faqat yangi xabarlarni kuzatib boring.

Xuddi shu oynada siz jurnallarni chiqarish uchun vaqt oralig'ini tanlashingiz mumkin:
- "1" tugmasi - 1 daqiqa;
- "2" - 5 daqiqa;
- "3" - 15 daqiqa;
- "4" - 30 daqiqa;
- "5" - 1 soat;
- "0" - podaning butun ishlash muddati uchun.
Maxsus ish rejimi Pulse (buyruq :pulse) Kubernetes klasteri haqida umumiy ma'lumotni ko'rsatadi:

Unda siz resurslar sonini va ularning holatini ko'rishingiz mumkin (yashil rang maqomga ega bo'lganlarni ko'rsatadi Running).
K9-ning yana bir ajoyib xususiyati deyiladi Popeye. U barcha resurslarni ma'lum mezonlarning to'g'riligini tekshiradi va natijada olingan "baho" ni tushuntirishlar bilan ko'rsatadi. Misol uchun, siz namunalar yoki cheklovlar etarli emasligini ko'rishingiz mumkin va ba'zi konteynerlar ildiz sifatida ishlashi mumkin ...

Asosiy Helm yordami mavjud. Masalan, klasterda joylashtirilgan relizlarni shunday ko'rishingiz mumkin:
:helm all # все
:helm $namespace # в конкретном пространстве имен
Benchmark
Hatto K9-larga o'rnatilgan oddiy HTTP server yuk generatori bo'lib, yaxshi ma'lum bo'lgan ab (ApacheBench) ga muqobildir.
Uni yoqish uchun podkastda portni oldinga yo'naltirishni yoqishingiz kerak. Buni amalga oshirish uchun podani tanlang va Shift + f tugmalarini bosing, "pf" taxallusidan foydalanib, portni oldinga o'tkazish pastki menyusiga o'ting.

Portni tanlab, Ctrl + b tugmalarini bosgandan so'ng, benchmarkning o'zi boshlanadi. Uning ishi natijalari saqlanadi /tmp va keyinchalik K9-larda ko'rish uchun mavjud.


Benchmark konfiguratsiyasini o'zgartirish uchun siz fayl yaratishingiz kerak $HOME/.k9s/bench-<my_context>.yml (har bir klaster uchun belgilanadi).
Eslatma: Katalogdagi barcha YAML fayllari kengayishi muhim .k9s aynan shunday edi .yml (.yaml to'g'ri ishlamayapti).
Konfiguratsiyaga misol:
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
Interfeys
Resurslar ro'yxati uchun ustunlar ko'rinishi fayl yaratish orqali o'zgartiriladi $HOME/.k9s/views.yml. Uning mazmuniga misol:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
To'g'ri, teglar uchun ustunlar etarli emas, ular uchun mavjud .
Ustunlar bo'yicha saralash klaviatura yorliqlari orqali amalga oshiriladi:
- Shift + n - nomi bo'yicha;
- Shift + o - tugunlar bo'yicha;
- Shift + i - IP orqali;
- Shift + a - konteynerning ishlash muddati bo'yicha;
- Shift + t - qayta ishga tushirish soni bo'yicha;
- Shift + r - tayyorlik holati bo'yicha;
- Shift + c - protsessor iste'moli bo'yicha;
- Shift + m - xotira iste'moli bo'yicha.
Agar kimdir standart rang sxemasini yoqtirmasa, K9s hatto qo'llab-quvvatlaydi . Tayyor namunalar (7 dona) mavjud . Mana shu terilardan biriga misol (dengiz flotida):

Plaginlar
Nihoyat, K9s imkoniyatlarini kengaytirish imkonini beradi. Men o'z ishimda ulardan faqat bittasini ishlatganman - kubectl get all -n $namespace.
Bu shunday ko'rinadi. Fayl yarating $HOME/.k9s/plugin.yml shunga o'xshash tarkib bilan:
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"Endi siz nomlar maydoniga o'tishingiz va tegishli buyruqni bajarish uchun "g" tugmasini bosishingiz mumkin:

Plaginlar orasida, masalan, kubectl-jq bilan integratsiya va jurnallarni ko'rish uchun yordamchi dastur mavjud. .
xulosa
Mening didimga ko'ra, K9s bilan ishlash juda qulay bo'lib chiqdi: uni ishlatmasdan tezda kerakli hamma narsani qidirishga odatlanishingiz mumkin. kubectl. Jurnallarning ko'rinishi va ularni saqlash, resurslarni tez tahrirlash, umuman ish tezligi *, Popeye rejimi foydali bo'lib chiqdi. Plaginlarni yaratish va ilovani ehtiyojlaringizga mos ravishda o'zgartirish qobiliyati alohida ta'kidlanadi.
* Katta hajmdagi jurnallar bilan men K9-larning sekin ishlashini ham payqadim. Bunday paytlarda yordamchi dastur Intel Xeon E2xx-dan 312 yadroni "yeydi" va hatto muzlashi mumkin.
Ayni paytda nima etishmayapti? Katalogga kirmasdan oldingi versiyaga tezda qaytish (biz RS haqida gapirmayapmiz). Bundan tashqari, tiklanish faqat uchun sodir bo'ladi faqat resurs: agar siz izoh yoki yorliqni o'chirsangiz, butun resursni o'chirishingiz va qayta tiklashingiz kerak bo'ladi (bu erda siz katalogga o'tishingiz kerak). Yana bir arzimas narsa - bunday saqlangan "zaxira nusxalari" uchun etarli sana yo'q.
PS
Shuningdek, bizning blogimizda o'qing:
- «";
- «";
- «".
Manba: www.habr.com
