k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

K9 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 GitHub 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/k9s

Ba'zi Linux distributivlari va boshqa operatsion tizimlar uchun o'rnatishga tayyor ham mavjud paketlar. 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/bin

K8s 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.)

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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.

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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.

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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:

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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:

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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.

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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:

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi
(Ushbu manbalarning har biri tahrirlanishi, o'zgartirilishi, tuzilishi mumkin describe.)

Va bu erda kirish bilan joylashtirish:

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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).

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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):

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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):

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

... va Ctrl + l bilan orqaga qaytarish. Biz hamma narsa yaxshi bo'lganligi haqida xabar olishimiz kerak:

k9s/whoami-5cfbdbb469 successfully rolled back

Va replikalarni masshtablash uchun "s" (masshtab) ustiga bosing va kerakli misol sonini tanlang:

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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.

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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:

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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 ...

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

Asosiy Helm yordami mavjud. Masalan, klasterda joylashtirilgan relizlarni shunday ko'rishingiz mumkin:

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

Benchmark

Hatto K9-larga o'rnatilgan hey 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.

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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.

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi
k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

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 loyihadagi masala.

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 terilar. Tayyor namunalar (7 dona) mavjud shu yerda. Mana shu terilardan biriga misol (dengiz flotida):

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

Plaginlar

Nihoyat, plaginlar 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:

k9s-ga umumiy nuqtai - Kubernetes uchun rivojlangan terminal interfeysi

Plaginlar orasida, masalan, kubectl-jq bilan integratsiya va jurnallarni ko'rish uchun yordamchi dastur mavjud. Qattiq.

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