Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

K9s pakub terminali kasutajaliidest Kubernetese klastritega suhtlemiseks. Selle avatud lähtekoodiga projekti eesmärk on muuta K8s rakendustes navigeerimine, jälgimine ja haldamine lihtsaks. K9s jälgib pidevalt Kubernetese muudatusi ja pakub jälgitavate ressurssidega töötamiseks kiireid käske.

Projekt on kirjutatud Go-s ja on olnud juba üle pooleteise aasta: esimene kohustus tehti 1. veebruaril 2019. Kirjutamise ajal on peal 9000+ tärni GitHub ja umbes 80 kaastöölist. Vaatame, mida k9s teha suudab?

Paigaldamine ja käivitamine

See on klientrakendus (seoses Kubernetese klastriga), mida on kõige lihtsam käivitada Dockeri pildina:

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

Mõnede Linuxi distributsioonide ja muude operatsioonisüsteemide jaoks on olemas ka installimisvalmis pakette. Üldiselt saate Linuxi süsteemide jaoks installida binaarfaili:

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 klastri enda jaoks erinõudeid pole. Arvustuste põhjal otsustades töötab rakendus ka Kubernetese vanemate versioonidega, näiteks 1.12.

Rakendus käivitatakse standardse konfiguratsiooni abil .kube/config - sarnane sellega, kuidas see toimib kubectl.

Navigatsioon

Vaikimisi avaneb aken konteksti jaoks määratud vaikenimeruumiga. See tähendab, et kui sa kirjutasid kubectl config set-context --current --namespace=test, siis avaneb nimeruum test. (Kontekstide/nimeruumide muutmise kohta vaadake altpoolt.)

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Minema käsurežiim seda tehakse, vajutades ":". Pärast seda saate k9s-i tööd juhtida käskude abil - näiteks StatefulSetsi loendi vaatamiseks (praeguses nimeruumis) võite sisestada :sts.

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Mõnede muude Kubernetese ressursside jaoks:

  • :ns — nimeruumid;
  • :deploy — kasutuselevõtt;
  • :ing — sissetungimine;
  • :svc — Teenused.

Vaatamiseks saadaolevate ressursitüüpide täieliku loendi kuvamiseks on olemas käsk :aliases.

Samuti on mugav vaadata aktiivses aknas kiirklahvikombinatsioonidega saadaolevate käskude loendit: selleks klõpsake lihtsalt "?".

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Ka k9s on olemas otsingurežiim, kuhu minemiseks piisab "/" sisestamisest. Sellega otsitakse praeguse "akna" sisust. Oletame, et olete varem sisestanud :ns, on teil avatud nimeruumide loend. Kui neid on liiga palju, siis selleks, et mitte pikalt alla kerida, piisab nimeruumidega aknasse sisestamisest /mynamespace.

Siltide järgi otsimiseks saate soovitud nimeruumis valida kõik kaustad ja seejärel sisestada näiteks / -l app=whoami. Saame selle sildiga kaunade loendi:

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Otsing töötab igasugustes akendes, sealhulgas logides, YAML-i manifestide vaatamises ja describe ressursside jaoks – vaadake nende funktsioonide kohta lisateavet allpool.

Milline näeb välja üldine navigeerimisvoog?

Kasutades käsku :ctx saate valida konteksti:

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Nimeruumi valimiseks on juba mainitud käsk :nsja seejärel saate kasutada soovitud ruumi otsingut: /test.

Kui nüüd valime meid huvitava ressursi (näiteks seesama StatefulSet), siis ilmub selle kohta vastav info: mitu podi töötab koos nende kohta lühiinfoga.

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Huvi võivad pakkuda ainult kaunad - siis piisab sisenemisest :pod. ConfigMapsi puhul (:cm - nende ressursside loendi jaoks saate valida huvipakkuva objekti ja klõpsata "u", misjärel K9s ütleb teile, kes seda konkreetselt kasutab (see CM).

Teine mugav funktsioon ressursside vaatamiseks on nende "röntgenikiirgus" (röntgenivaade). Seda režiimi kutsutakse välja käsuga :xray RESOURCE ja ... on lihtsam näidata, kuidas see toimib, kui selgitada. Siin on StatefulSetsi näide:

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides
(Iga neid ressursse saab redigeerida, muuta, teha describe.)

Ja siin on juurutamine koos Ingressiga:

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Töötamine ressurssidega

Saate teavet iga YAMLi või selle ressursi kohta describe vajutades vastavaid kiirklahve (vastavalt y ja d). Muidugi on põhitoiminguid veelgi rohkem: nende loend ja kiirklahvid on alati nähtavad tänu liidese mugavale “päisele” (peidetud klahvikombinatsiooni Ctrl + e vajutamisega).

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Ressursi redigeerimisel (peale selle valimist "e") avaneb keskkonnamuutujates defineeritud tekstiredaktor (export EDITOR=vim).

Ja siin näeb välja ressursi üksikasjalik kirjeldus (describe):

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Selle väljundi (või YAML-i ressursi manifesti vaatamise väljundi) saab salvestada tuttava kiirklahviga Ctrl + s. Kuhu see salvestatakse, saab teada K9s sõnumist:

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

Pärast süsteemisiltide ja märkuste eemaldamist saate loodud varukoopiafailidest ressursse ka taastada. Selleks peate minema nendega kataloogi (:dir /tmp), seejärel valige soovitud fail ja rakendage apply.

Muide, kui praegusega on probleeme, saate igal ajal eelmisele ReplicaSetile tagasi pöörduda. Selleks valige soovitud RS (:rs nende nimekirja jaoks):

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

... ja tagasipööramine klahvikombinatsiooniga Ctrl + l. Peaksime saama teate, et kõik läks hästi:

k9s/whoami-5cfbdbb469 successfully rolled back

Ja koopiate skaleerimiseks klõpsake lihtsalt "s" (skaala) ja valige soovitud arv eksemplare:

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Kesta abil saate sisestada mis tahes konteineri: selleks minge soovitud kaustale, klõpsake nuppu "s" (kest) ja valige konteiner.

Teised omadused

Loomulikult on toetatud ka logide vaatamine (valitud ressursi puhul "l"). Ja uute logide vaatamiseks pole vaja pidevalt sisestusklahvi vajutada: piisab, kui märkida (“m”) ja seejärel ainult uusi sõnumeid jälgida.

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Samas aknas saate valida ka ajavahemiku logide väljastamiseks:

  • klahv "1" - 1 minut;
  • "2" - 5 minutit;
  • "3" - 15 minutit;
  • "4" - 30 minutit;
  • "5" - 1 tund;
  • "0" – kogu kauna eluea jooksul.

Spetsiaalne töörežiim Impulss (käsk :pulse) näitab üldist teavet Kubernetese klastri kohta:

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Selles näete ressursside arvu ja nende olekut (rohelised näitavad neid, millel on olek Running).

Veel üks K9-de lahe omadus on nn Popeye. See kontrollib kõiki ressursse teatud kriteeriumide õigsuse suhtes ja kuvab saadud "hinnangu" koos selgitustega. Näiteks näete, et näidiseid või piiranguid pole piisavalt ja mõnda konteinerit saab käivitada juurfailina ...

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Helmi põhitugi on olemas. Näiteks näete klastris juurutatud väljalaseid järgmiselt.

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

võrrelda

Isegi K9-sse sisseehitatud hei on lihtne HTTP-serveri laadimisgeneraator, alternatiiv tuntumale ab-le (ApacheBench).

Selle lubamiseks peate pordis lubama edasisuunamise. Selleks valige pod ja vajutage klahvikombinatsiooni Shift + f, minge pordi edasisuunamise alammenüüsse, kasutades varjunime "pf".

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Pärast pordi valimist ja klahvikombinatsiooni Ctrl + b vajutamist käivitub võrdlusalus ise. Tema töö tulemused on talletatud /tmp ja on K9s hiljem vaatamiseks saadaval.

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides
Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Võrdlusaluse konfiguratsiooni muutmiseks peate looma faili $HOME/.k9s/bench-<my_context>.yml (määratakse iga klastri jaoks).

NB: On oluline, et kõigi kataloogis olevate YAML-failide laiendused .k9s see oli täpselt .yml (.yaml ei tööta korralikult).

Konfiguratsiooni näide:

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

liides

Ressursiloendite veergude välimust muudetakse faili loomisega $HOME/.k9s/views.yml. Selle sisu näide:

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

Tõsi, siltide jaoks pole piisavalt veergu, mille jaoks on probleem projektis.

Veergude järgi sortimine toimub kiirklahvide abil:

  • Tõstuklahv + n - nime järgi;
  • Shift + o - sõlmede kaupa;
  • Shift + i - IP järgi;
  • Shift + a - konteineri eluea järgi;
  • Shift + t - taaskäivituste arvu järgi;
  • Shift + r - valmisoleku järgi;
  • Shift + c - protsessori tarbimise järgi;
  • Shift + m - mälutarbimise järgi.

Kui kellelegi vaikevärviskeem ei meeldi, toetab K9s seda isegi nahad. Saadaval on valmisnäidised (7 tükki). siin. Siin on näide ühest neist nahkadest (mereväes):

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Плагины

Lõpuks pistikprogrammid võimaldab teil K9-de võimalusi laiendada. Olen ise kasutanud oma töös neist ainult ühte - kubectl get all -n $namespace.

See näeb välja selline. Looge fail $HOME/.k9s/plugin.yml sellise sisuga:

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"

Nüüd saate minna nimeruumi ja vajutada "g", et käivitada vastava käsuga:

Ülevaade k9s-ist - Kubernetese täiustatud terminaliliides

Pluginate hulgas on näiteks integratsioonid kubectl-jq-ga ja utiliit logide vaatamiseks Ahter.

Järeldus

Minu maitse jaoks osutus K9s töötamiseks väga mugavaks: saab kiiresti harjuda kõike vajalikku otsima ilma seda kasutamata. kubectl. Mul oli hea meel logide vaate ja nende salvestamise, ressursside kiire redigeerimise, töö kiiruse üle üldiselt *, Popeye režiim osutus kasulikuks. Eraldi mainitakse võimalust luua pluginaid ja muuta rakendust vastavalt oma vajadustele.

* Kuigi suure palgimahu juures märkasin ka K9-de aeglast tööd. Sellistel hetkedel sõi utiliit Intel Xeon E2xx-st 312 tuuma ja võis isegi külmuda.

Mis on hetkel puudu? Kiire tagasipööramine eelmisele versioonile (me ei räägi RS-ist) ilma kataloogi minemata. Lisaks toimub taastumine ainult ainult ressurss: kui kustutate märkuse või sildi, peate kustutama ja taastama kogu ressursi (see on koht, kus peate minema kataloogi). Veel üks pisiasi - selliste salvestatud "varukoopiate" jaoks pole piisavalt kuupäeva.

PS

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar