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:
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.)
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.
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 "?".
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:
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:
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.
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:
(Elkeen van hierdie hulpbronne kan geredigeer, verander, gemaak word describe.)
En hier is Ontplooiing met Ingress:
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).
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):
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:
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):
... 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ë:
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.
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:
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 ...
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".
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.
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):
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:
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.