K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

K9s suteikia terminalo vartotojo sąsają, skirtą bendrauti su Kubernetes klasteriais. Šio atvirojo kodo projekto tikslas – palengvinti K8s programų naršymą, stebėjimą ir valdymą. K9s nuolat stebi Kubernetes pokyčius ir siūlo greitas komandas dirbti su stebimais ištekliais.

Projektas parašytas Go ir gyvuoja daugiau nei pusantrų metų: pirmasis įsipareigojimas buvo atliktas 1 m. vasario 2019 d. Rašymo metu yra 9000+ žvaigždžių GitHub ir apie 80 bendradarbių. Pažiūrėkime, ką gali padaryti k9s?

Įdiegimas ir paleidimas

Tai yra kliento programa (susijusi su Kubernetes klasteriumi), kurią lengviausia paleisti kaip „Docker“ vaizdą:

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

Kai kuriems Linux platinimams ir kitoms operacinėms sistemoms taip pat yra paruoštų įdiegti paketai. Paprastai Linux sistemose galite įdiegti dvejetainį failą:

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

Pačiam K8 klasteriui specifinių reikalavimų nėra. Sprendžiant iš apžvalgų, programa taip pat veikia su senesnėmis Kubernetes versijomis, tokiomis kaip 1.12.

Programa paleidžiama naudojant standartinę konfigūraciją .kube/config - panašiai kaip tai daroma kubectl.

Navigacija

Pagal numatytuosius nustatymus atsidaro langas, kuriame yra numatyta kontekstui nurodyta vardų sritis. Tai yra, jei parašėte kubectl config set-context --current --namespace=test, tada atsidarys vardų erdvė test. (Žr. toliau, kaip pakeisti kontekstą / vardų erdves.)

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Eiti į komandų režimas Tai daroma paspaudus ":". Po to galite valdyti k9s veikimą naudodami komandas - pavyzdžiui, norėdami peržiūrėti StatefulSets sąrašą (dabartinėje vardų erdvėje), galite įvesti :sts.

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Kai kuriems kitiems Kubernetes ištekliams:

  • :ns — vardų erdvės;
  • :deploy — dislokavimas;
  • :ing — Patekimai;
  • :svc - Paslaugos.

Norėdami parodyti visą galimų peržiūrėti išteklių tipų sąrašą, yra komanda :aliases.

Taip pat patogu peržiūrėti komandų, pasiekiamų naudojant karštųjų klavišų kombinacijas esamame lange, sąrašą: norėdami tai padaryti, tiesiog spustelėkite "?".

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Taip pat k9s yra paieškos režimas, į kurią eiti pakanka įvesti „/“. Su juo atliekama paieška dabartinio „lango“ turinyje. Tarkime, jei įvedėte anksčiau :ns, atidarytas vardų erdvių sąrašas. Jei jų yra per daug, norint ilgai neslinkti žemyn, pakanka įvesti lange su vardų erdvėmis /mynamespace.

Norėdami ieškoti pagal etiketes, galite pasirinkti visas ankštis norimoje vardų srityje, tada įveskite, pvz. / -l app=whoami. Gausime ankščių su šia etikete sąrašą:

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Paieška veikia visų tipų languose, įskaitant žurnalus, YAML manifestų peržiūrą ir describe Norėdami gauti daugiau informacijos apie šias funkcijas, žr. toliau.

Kaip atrodo bendras navigacijos srautas?

Su komanda :ctx galite pasirinkti kontekstą:

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Norint pasirinkti vardų erdvę, yra jau minėta komanda :ns, tada galite naudoti ieškomos vietos paiešką: /test.

Jei dabar pasirinksime mus dominantį išteklį (pavyzdžiui, tą patį StatefulSet), jam atsiras atitinkama informacija: kiek podų veikia su trumpa informacija apie juos.

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Gali sudominti tik ankštys – tada užtenka įvesti :pod. „ConfigMaps“ atveju (:cm - norėdami pamatyti šių išteklių sąrašą), galite pasirinkti dominantį objektą ir spustelėti „u“, po kurio K9s pasakys, kas konkrečiai jį naudoja (šis CM).

Kita patogi išteklių peržiūros funkcija yra jų "rentgeno spinduliai" (rentgeno vaizdas). Šis režimas iškviečiamas komanda :xray RESOURCE ir ... lengviau parodyti, kaip tai veikia, nei paaiškinti. Štai StatefulSets iliustracija:

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes
(Kiekvieną iš šių išteklių galima redaguoti, keisti, kurti describe.)

Ir čia yra diegimas naudojant „Ingress“:

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Darbas su ištekliais

Galite gauti informacijos apie kiekvieną YAML ar jo šaltinį describe paspausdami atitinkamus sparčiuosius klavišus („y“ ir „d“ atitinkamai). Žinoma, yra ir daugiau pagrindinių operacijų: jų sąrašas ir spartieji klavišai visada matomi dėl patogios sąsajos „antraštės“ (paslėpta paspaudus Ctrl + e).

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Redaguojant bet kurį išteklį (po jo pasirinkimo „e“), atidaromas aplinkos kintamuosiuose apibrėžtas teksto redaktorius (export EDITOR=vim).

Štai kaip atrodo išsamus šaltinio aprašymas (describe):

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Šią išvestį (arba šaltinio YAML manifesto peržiūros išvestį) galima išsaugoti naudojant pažįstamą Ctrl + s spartųjį klavišą. Kur jis bus išsaugotas, bus žinoma iš K9s pranešimo:

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

Taip pat galite atkurti išteklius iš sukurtų atsarginių kopijų failų, pašalinę sistemos etiketes ir komentarus. Norėdami tai padaryti, su jais turite eiti į katalogą (:dir /tmp), tada pasirinkite norimą failą ir pritaikykite apply.

Beje, bet kuriuo metu galite grįžti prie ankstesnio ReplicaSet, jei kyla problemų dėl dabartinio. Norėdami tai padaryti, pasirinkite norimą RS (:rs jų sąrašui):

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

... ir atšaukti su Ctrl + l. Turėtume gauti pranešimą, kad viskas klostėsi gerai:

k9s/whoami-5cfbdbb469 successfully rolled back

Ir norėdami pakeisti kopijų mastelį, tiesiog spustelėkite „s“ (mastelė) ir pasirinkite norimą egzempliorių skaičių:

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Naudodami apvalkalą galite įvesti bet kurį konteinerį: norėdami tai padaryti, eikite į norimą ankštį, spustelėkite „s“ (apvalkalas) ir pasirinkite konteinerį.

Kitos funkcijos

Žinoma, žurnalų peržiūra taip pat palaikoma ("l" pasirinktam ištekliui). O norint žiūrėti naujus žurnalus, nereikia nuolat spausti Enter: pakanka pažymėti („m“), o tada tik sekti naujus pranešimus.

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Taip pat tame pačiame lange galite pasirinkti žurnalų išvesties laiko intervalą:

  • klavišas "1" - 1 minutę;
  • „2“ – 5 minutės;
  • „3“ – 15 minutės;
  • „4“ – 30 minutės;
  • "5" - 1 valanda;
  • „0“ – visą ankšties naudojimo laiką.

Specialus veikimo režimas Impulsas (komand :pulse) rodo bendrą informaciją apie „Kubernetes“ klasterį:

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Jame galite pamatyti išteklių skaičių ir jų būseną (žalia spalva rodo tuos, kurie turi būseną Running).

Kita puiki K9 savybė vadinama Popajus. Ji patikrina visus išteklius, ar nėra tam tikrų teisingumo kriterijų, ir parodo gautą „įvertinimą“ su paaiškinimais. Pavyzdžiui, galite matyti, kad nėra pakankamai pavyzdžių arba apribojimų, o kai kurie konteineriai gali būti naudojami kaip root ...

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Yra pagrindinis Helm palaikymas. Pavyzdžiui, taip galite pamatyti klasteryje įdiegtus leidimus:

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

etalonas

Netgi įmontuota į K9 ei yra paprastas HTTP serverio apkrovos generatorius, geriau žinomo ab (ApacheBench) alternatyva.

Norėdami jį įjungti, turite įjungti prievado peradresavimą. Norėdami tai padaryti, pasirinkite podą ir paspauskite Shift + f, eikite į prievado peradresavimo submeniu naudodami "pf" slapyvardį.

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Pasirinkus prievadą ir paspaudus Ctrl + b, prasidės pats etalonas. Jo darbo rezultatai saugomi /tmp ir juos galima peržiūrėti vėliau naudojant K9s.

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes
K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Norėdami pakeisti etalono konfigūraciją, turite sukurti failą $HOME/.k9s/bench-<my_context>.yml (nustatoma kiekvienai klasteriui).

NB: Svarbu, kad visi YAML failai būtų išplėsti kataloge .k9s tai buvo tiksliai .yml (.yaml neveikia tinkamai).

Konfigūracijos pavyzdys:

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

sąsaja

Išteklių sąrašų stulpelių išvaizda pakeičiama sukuriant failą $HOME/.k9s/views.yml. Jo turinio pavyzdys:

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

Tiesa, etikečių stulpelio neužtenka, o tam yra problema projekte.

Rūšiavimas pagal stulpelius atliekamas sparčiaisiais klavišais:

  • Shift + n - pagal pavadinimą;
  • Shift + o - pagal mazgus;
  • Shift + i - pagal IP;
  • Shift + a - pagal konteinerio eksploatavimo laiką;
  • Shift + t - pagal pakartotinių paleidimų skaičių;
  • Shift + r - pagal parengties būseną;
  • Shift + c - pagal procesoriaus suvartojimą;
  • Shift + m - pagal atminties suvartojimą.

Jei kam nepatinka numatytoji spalvų schema, K9s netgi palaiko odos. Yra paruoštų pavyzdžių (7 vnt.). čia. Štai vienos iš šių odų pavyzdys (laivyne):

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Papildiniai

Galiausiai, įskiepių leidžia išplėsti K9 galimybes. Aš pats savo darbe naudojau tik vieną iš jų - kubectl get all -n $namespace.

Tai atrodo taip. Sukurkite failą $HOME/.k9s/plugin.yml su tokiu turiniu:

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"

Dabar galite eiti į vardų erdvę ir paspausti „g“, kad vykdytumėte atitinkamą komandą:

K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes

Tarp įskiepių yra, pavyzdžiui, integracijos su kubectl-jq ir žurnalų peržiūros įrankis laivagalis.

išvada

Mano skoniui su K9s pasirodė labai patogu dirbti: galima greitai priprasti ieškoti visko, ko reikia nenaudojant. kubectl. Mane nudžiugino žurnalų vaizdas ir jų išsaugojimas, greitas išteklių redagavimas, darbo greitis apskritai *, Popeye režimas pasirodė naudingas. Ypatingas paminėjimas yra galimybė kurti papildinius ir modifikuoti programą, kad ji atitiktų jūsų poreikius.

* Nors, esant dideliam rąstų kiekiui, pastebėjau ir lėtą K9s veikimą. Tokiais momentais programa „suvalgė“ 2 branduolius iš „Intel Xeon E312xx“ ir netgi galėjo užšalti.

Ko šiuo metu trūksta? Greitas grįžimas į ankstesnę versiją (mes nekalbame apie RS) nesikreipiant į katalogą. Be to, atsigavimas vyksta tik tik išteklius: jei ištrinsite anotaciją ar etiketę, turėsite ištrinti ir atkurti visą šaltinį (čia reikia eiti į katalogą). Dar viena smulkmena – tokioms išsaugotoms „atsarginėms kopijoms“ neužtenka datos.

PS

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий