Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

K9's bied 'n terminale gebruikerskoppelvlak vir interaksie met Kubernetes-klusters. Die doel van hierdie oopbronprojek is om dit makliker te maak om toepassings in K8's te navigeer, te monitor en te bestuur. K9s monitor voortdurend veranderinge in Kubernetes en verskaf vinnige opdragte om met gemonitorde hulpbronne te werk.

Die projek is in Go geskryf en bestaan ​​al meer as 'n jaar en 'n half: die eerste verbintenis is op 1 Februarie 2019 gemaak. Ten tyde van die skryf hiervan is daar 9000+ sterre aan GitHub en sowat 80 bydraers. Kom ons kyk wat k9s kan doen?

Installasie en bekendstelling

Dit is 'n kliënt (in verhouding tot die Kubernetes-groepering) toepassing, wat die maklikste is om as 'n Docker-beeld te hardloop:

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

Vir sommige Linux-verspreidings en ander bedryfstelsels is daar ook gereed om te installeer pakkette. In die algemeen, vir Linux-stelsels kan jy die binêre lêer installeer:

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

Daar is geen spesifieke vereistes vir die K8s-kluster self nie. Te oordeel aan die resensies, werk die toepassing ook met ouer weergawes van Kubernetes soos 1.12.

Die toepassing begin die standaard konfigurasie gebruik .kube/config - soortgelyk aan hoe dit doen kubectl.

Navigasie

By verstek word 'n venster oop met die standaard naamruimte wat vir die konteks gespesifiseer is. Dit is, as jy geskryf het kubectl config set-context --current --namespace=test, dan sal die naamruimte oopmaak test. (Sien hieronder oor die verandering van kontekste/naamruimtes.)

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Gaan na bevelmodus uitgevoer deur op ":" te klik. Jy kan dan beheer hoe k9s werk deur opdragte te gebruik - byvoorbeeld, om 'n lys van StatefulSets (in die huidige naamruimte) te sien wat jy kan invoer :sts.

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Vir sommige ander Kubernetes-bronne:

  • :ns - Naamruimtes;
  • :deploy — Ontplooiings;
  • :ing - Ingang;
  • :svc - Dienste.

Om 'n volledige lys van hulpbrontipes beskikbaar vir besigtiging te vertoon, is daar 'n opdrag :aliases.

Dit is ook gerieflik om die lys van opdragte wat beskikbaar is via snelsleutelkombinasies binne die huidige venster te sien: om dit te doen, klik net op "?".

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Ook in k9s is daar soekmodus, om te gaan waarheen jy net "/" hoef in te voer. Dit soek deur die inhoud van die huidige "venster". Byvoorbeeld, as jy voorheen ingevoer het :ns, het jy 'n lys naamruimtes oop. As daar te veel van hulle is, gaan dan net in die venster met naamruimtes in om nie vir 'n lang tyd af te blaai nie /mynamespace.

Om volgens etikette te soek, kan jy alle peule in die verlangde naamruimte selekteer en dan bv. / -l app=whoami. Ons sal 'n lys van peule met hierdie etiket kry:

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Die soektog werk in alle soorte vensters, insluitend logs, besigtiging van YAML-manifeste en describe vir hulpbronne - sien hieronder vir meer inligting oor hierdie vermoëns.

Hoe lyk die algehele navigasievloei?

Gebruik die opdrag :ctx jy kan die konteks kies:

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Om 'n naamruimte te kies is daar die reeds genoemde opdrag :ns, en dan kan jy die soektog vir die verlangde spasie gebruik: /test.

As ons nou die hulpbron kies waarin ons belangstel (byvoorbeeld dieselfde StatefulSet), sal die ooreenstemmende inligting daarvoor verskyn: hoeveel peule loop met kort inligting daaroor.

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Slegs peule mag van belang wees - skryf dan net in :pod. In die geval van ConfigMaps (:cm - vir 'n lys van hierdie hulpbronne) kan jy die voorwerp van belang kies en op "u" klik, waarna K9s jou sal vertel wie presies (hierdie CM) dit gebruik.

Nog 'n gerieflike kenmerk om hulpbronne te bekyk, is hul "X-straal" (X-straal-aansig). Hierdie modus word deur die opdrag aangeroep :xray RESOURCE en... dis makliker om te wys hoe dit werk as om te verduidelik. Hier is 'n illustrasie vir StatefulSets:

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes
(Elkeen van hierdie hulpbronne kan geredigeer, verander, gemaak word describe.)

En hier is Ontplooiing met Ingress:

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Werk met hulpbronne

Inligting oor elke hulpbron kan verkry word in YAML of sy describe deur die toepaslike sleutelbordkortpaaie te druk (“y” en “d” onderskeidelik). Daar is natuurlik selfs meer basiese bewerkings: hul lys- en sleutelbordkortpaaie is altyd sigbaar danksy 'n gerieflike "kopskrif" in die koppelvlak (versteek deur Ctrl + e te druk).

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Wanneer enige hulpbron gewysig word (“e” nadat dit gekies is), die teksredigeerder wat in die omgewingsveranderlikes (export EDITOR=vim).

En hier is hoe 'n gedetailleerde beskrywing van die hulpbron lyk (describe):

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Hierdie uitset (of die uitset van die besigtiging van die YAML-manifes van 'n hulpbron) kan gestoor word met die gewone sleutelbordkortpad Ctrl + s. Waar dit gestoor sal word, sal bekend wees uit die K9s-boodskap:

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

U kan ook hulpbronne van die geskepte rugsteunlêers herstel deur eers stelseletikette en -aantekeninge te verwyder. Om dit te doen sal jy na die gids met hulle moet gaan (:dir /tmp), kies dan die verlangde lêer en pas toe apply.

Terloops, jy kan enige tyd terugrol na die vorige ReplicaSet as daar probleme met die huidige een is. Om dit te doen, moet jy die verlangde RS (:rs vir hul lys):

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

... en rol terug met Ctrl + l. Ons behoort 'n kennisgewing te ontvang dat alles suksesvol was:

k9s/whoami-5cfbdbb469 successfully rolled back

En om replikas te skaal, klik net op "s" (skaal) en kies die vereiste aantal kopieë:

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Jy kan enige van die houers met die dop ingaan: om dit te doen, gaan na die verlangde peul, klik op "s" (dop) en kies die houer.

Ander eienskappe

Natuurlik word logboeke ook ondersteun ("l" vir die geselekteerde hulpbron). En om nuwe logs te sien, hoef jy nie voortdurend Enter te druk nie: maak net 'n merk ("m") en monitor dan net nuwe boodskappe.

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Ook in dieselfde venster kan jy die tydreeks kies vir die uitvoer van logs:

  • sleutel "1" - in 1 minuut;
  • "2" - 5 minute;
  • "3" - 15 minute;
  • "4" - 30 minute;
  • "5" - 1 uur;
  • "0" - vir die hele lewe van die peul.

Spesiale bedryfsmodus Pols (opdrag :pulse) toon algemene inligting oor die Kubernetes-groepering:

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Daarin kan jy die aantal hulpbronne en hul status sien (dié wat 'n status het, word in groen gewys Running).

Nog 'n interessante kenmerk van K9s word genoem Popeye. Dit kontroleer alle hulpbronne vir sekere korrektheidskriteria en vertoon die gevolglike "gradering" met verduidelikings. Byvoorbeeld, jy kan sien dat daar nie genoeg monsters of limiete is nie, en sommige houer kan as wortel uitgevoer word ...

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Daar is basiese Helm-ondersteuning. Byvoorbeeld, dit is hoe u vrystellings kan sien wat na die groepering ontplooi is:

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

Maatstaf

Hulle het dit selfs in K9's ingebou hey is 'n eenvoudige lasgenerator vir 'n HTTP-bediener, 'n alternatief vir die meer bekende ab (ApacheBench).

Om dit te aktiveer, sal jy port-forward in die pod moet aktiveer. Om dit te doen, kies pod en druk Shift + f, gaan na die port-forward submenu met die alias "pf".

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Nadat u die poort gekies het en Ctrl + b gedruk het, sal die maatstaf self begin. Die resultate van sy werk word in gestoor /tmp en is beskikbaar vir latere besigtiging in K9's.

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes
Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Om die maatstafkonfigurasie te verander, moet jy 'n lêer skep $HOME/.k9s/bench-<my_context>.yml (gedefinieer vir elke groep).

NB: Dit is belangrik dat die uitbreiding van alle YAML-lêers in die gids .k9s dit was presies .yml (.yaml werk nie reg nie).

Konfigurasie voorbeeld:

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

koppelvlak

Die voorkoms van die kolomme vir hulpbronlyste word gewysig deur 'n lêer te skep $HOME/.k9s/views.yml. 'n Voorbeeld van die inhoud daarvan:

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

True, daar is nie genoeg kolom vir etikette, waarvoor daar is nie kwessie in die projek.

Sorteer volgens kolomme word uitgevoer met behulp van sleutelbordkortpaaie:

  • Shift + n - by naam;
  • Shift + o - deur nodusse;
  • Shift + i - deur IP;
  • Shift + a - volgens houerleeftyd;
  • Shift + t - volgens die aantal herbeginsels;
  • Shift + r - volgens gereedheidstatus;
  • Shift + c - deur SVE-verbruik;
  • Shift + m - deur geheueverbruik.

As iemand nie van die verstekkleurskema hou nie, ondersteun K9s selfs velle. Klaargemaakte voorbeelde (7 stukke) is beskikbaar hier. Hier is 'n voorbeeld van een van hierdie velle (in die vloot):

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Inproppe

uiteindelik, plugins laat jou toe om die vermoëns van K9's uit te brei. Ek het self net een van hulle in my werk gebruik - kubectl get all -n $namespace.

Dit lyk so. Skep 'n lêer $HOME/.k9s/plugin.yml met inhoud soos hierdie:

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"

Nou kan jy na die naamruimte gaan en "g" druk om die ooreenstemmende opdrag uit te voer:

Oorsig van k9s - 'n gevorderde terminale koppelvlak vir Kubernetes

Onder die inproppe is daar byvoorbeeld integrasies met kubectl-jq en 'n nut om logs te bekyk Stern.

Gevolgtrekking

Vir my smaak was K9's baie gerieflik om te gebruik: daarmee kan jy vinnig gewoond raak daaraan om alles te vind wat jy nodig het sonder om te gebruik kubectl. Ek was tevrede met die bekyk van logboeke en die stoor daarvan, vinnige redigering van hulpbronne, spoed van werk in die algemeen*, Popeye-modus was nuttig. Spesiale melding moet gemaak word van die vermoë om inproppe te skep en die toepassing aan te pas om by jou behoeftes te pas.

* Alhoewel ek, met 'n groot volume stompe, ook die stadige werking van K9's opgemerk het. Op sulke oomblikke het die nutsprogram 2 kerns van die Intel Xeon E312xx “geëet” en kan selfs vries.

Wat ontbreek op die oomblik? Vinnige terugrol na die vorige weergawe (ons praat nie van RS nie) sonder om na die gids te gaan. Daarbenewens vind herstel slegs vir net hulpbron: as jy 'n aantekening of etiket uitgevee het, sal jy die hele hulpbron moet uitvee en herstel (dit is waar jy na die gids sal moet gaan). Nog 'n klein dingetjie is dat die datum van sulke gestoorde "rugsteune" ontbreek.

PS

Lees ook op ons blog:

Bron: will.com

Voeg 'n opmerking