
pakub terminali kasutajaliidest Kubernetes klastrite haldamiseks. Selle Open Source projekti eesmÀrk on lihtsustada rakenduste navigeerimist K8s keskkonnas, nende jÀlgimist ja haldamist. K9s jÀlgib pidevalt Kubernetes'e muudatusi ja pakub kiireid kÀsklusi jÀlgitavate ressursside haldamiseks.
Projekt on kirjutatud Go keeles ja see on eksisteerinud juba ĂŒle pooleteise aasta: esimene commit tehti 1. veebruaril 2019. Artikli kirjutamise ajal on sellele antud ĂŒle 9000 tĂ€he ja ligi 80 kaastöötajat. Vaatame, mida k9s suudab?
Installeerimine ja kÀivitamine
See on kliendi (Kubernetes klastrile) rakendus, mida on kÔige lihtsam kÀivitada Docker pildina:
docker run --rm -it -v $KUBECONFIG:/$KUBECONFIG: /root/.kube/config quay.io/derailed/k9sMĂ”nede Linuxi distributsioonide ja teiste operatsioonisĂŒsteemide jaoks on samuti valmis installivad . Ăldiselt saab Linuxi sĂŒsteemidele 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/binSpetsiifilisi nÔudeid klastrile K8s ei ole. Tagasiside pÔhjal töötab rakendus ka vanade Kubernetes versioonidega, nagu 1.12.
Rakendust kĂ€ivitada, kasutades standardset konfguratsioonifaili .kube/config â sarnaselt sellele, kuidas seda teeb kubectl.
Navigeerimine
Koheselt avatakse aken, kus on vaikimisi tÀhtsuse nimi, mis on mÀÀratud konteksti jaoks. Kui olete mÀÀranud kubectl config set-context --current --namespace=test, siis avatakse see nimi test. (Kontekstide/nime ruumide vahetamisest vt allpool.)

Liikumiseks kĂ€skude reĆŸiimi tuleb vajutada «:». PĂ€rast seda saate k9s'i tööprotsesse hallata kĂ€skudega â nĂ€iteks saab vÀÀrtuse StatefulSets vaatamiseks sisestada :sts.
![]()
MÔnede teiste Kubernetes ressursside jaoks:
-
:nsâ Nime ruumid; -
:deployâ Rakendused; -
:ingâ Sisenemised; -
:svcâ Teenused.
Kuna need on tĂ€ielik loetelu ressursitĂŒĂŒpide vaatamiseks, on kĂ€sk :aliases.
Mugavalt saab vaadata ka kÀskude nimekirja, mis on saadaval kuumade klahvikombinatsioonide raames praeguses aknas: selleks piisab, kui vajutada «?».

K9s'is on samuti otsingureĆŸiim, kuhu liikumiseks tuleb lihtsalt sisestada «/». Sellega otsitakse praeguse âaknaâ sisu. Oletame, et kui te juba sisestasite :ns, avate nimekiri nimevaid ruume. Kui neid on liiga palju, et pikka aega alla kerida, piisab nimekiri aknas sisse kirjutamisest /mynamespace.
Labelsit otsimisel saab valida kÔik pod'id soovitud nimede ruumis ja seejÀrel sisestada nÀiteks / -l app=whoami. Saame nimekirja pod'idest, millel on see silt:
![]()
Otsing toimib kĂ”igis akend tĂŒĂŒps, sealhulgas logides, YAML-manifestide vaatamises ja describe resursside jaoks â rohkem nende vĂ”imaluste kohta vt allpool.
Kuidas nĂ€eb ĂŒldiselt vĂ€lja navigeerimise jĂ€rjestus?
KÀsk :ctx vÔimaldab valida konteksti:

Nimede ruumi valimiseks on juba varem mainitud kÀsk :ns, ja seejÀrel saab kasutada otsingut soovitud nime ruumi jaoks: /test.
Kui nĂŒĂŒd valida huvipakkuv ressurss (nĂ€iteks sama StatefulSet), kuvatakse selle kohta vastav teave: kui palju pod'e on kĂ€imas ja lĂŒhikesed andmed nende kohta.
![]()
VĂ”ibolla huvitavad ainult pod'id â siis piisab, kui sisestada :pod. ConfigMapâide puhul (:cm â nende ressursside nimekiri) saab valida huvipakkuva objekti ja vajutada "u", mille jĂ€rel K9s ĂŒtleb, kes konkreetselt seda (seda CM) kasutab.
Veel ĂŒks mugav funktsioon ressursside vaatamiseks on nende "rentgen" (XRay view). Selle reĆŸiimi aktiveerib kĂ€sk :xray RESOURCE ja... lihtsam on nĂ€idata, kuidas see töötab, kui seletada. Siin on illustreerimine StatefulSets'i jaoks:

(Iga neid ressurssidest saab redigeerida, muuta, teha describe.)
Ja siin on Deployment koos Ingressiga:

Töötamine ressurssidega
Iga ressursi kohta saab teavet YAML-formaadis vÔi selle describe vastavate klahvikombinatsioonide vajutamisega ("y" ja "d" vastavalt). Loomulikult on veel rohkem pÔhitegevusi: nende nimekiri ja klahvikombinatsioonid on alati nÀhtavad tÀnu mugavale "peakirjale" liideses (peidetakse vajutades Ctrl + e).

Iga ressursi redigeerimisel ("e" pÀrast valimist) avatakse tekstiredaktor, mis on mÀÀratud keskkonnamuutujates (export EDITOR=vim).
Nii nĂ€eb vĂ€lja ressursi ĂŒksikasjalik kirjeldus (describe):

Sellist vÀljundit (vÔi vÀljundit YAML-manifesti vaatamisest) saab salvestada tuttava klahvikombinatsiooni Ctrl + s kasutades. Kuhu see salvestatakse, selgub K9s teatest:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml salvestatud edukalt! Loodud varufailidest saab taastada ressursse, eemaldades eelnevalt sĂŒsteemi etiketid ja annotatsioonid. Selleks tuleb minna direktoriumi, kus need asuvad (:dir /tmp), seejĂ€rel valida vajalik fail ja rakendada apply.
Muide, igal ajal on vĂ”imalik tagasi lĂŒĂŒa ka eelnevale ReplicaSet'ile, kui praegusega on probleeme. Selleks tuleb valida vajalik RS (:rs nende nimekirjast):

âŠja teostada rollback kombinatsiooniga Ctrl + l. Me peaksime saama teate, et kĂ”ik lĂ€ks edukalt:
k9s/whoami-5cfbdbb469 successfully rolled backJa et koopiaid skaleerida, piisab, kui vajutada âsâ (scale) ja valida vajalik eksemplaride arv:

Igas konteineris on vĂ”imalik shelliga sisse logida: selleks minge soovitud pod'i juurde, vajutage âsâ (shell) ja valige konteiner.
Muud vÔimalused
TĂ”epoolest, toetatakse ka logide vaatamist (âlâ valitud ressursi jaoks). Ja et vaadata uusi logisid, pole pidevalt vaja vajutada Enter: piisab, kui teha mĂ€rgistamine (âmâ), pĂ€rast mida jĂ€lgite ainult uusi sĂ”numeid.

Samuti saab samas aknas valida ajavahemiku logide vÀljastamiseks:
- klahv â1â â 1 minuti jooksul;
- â2â â 5 minutit;
- â3â â 15 minutit;
- â4â â 30 minutit;
- â5â â 1 tund;
- â0â â kogu podâi eluaja jooksul.
Eraldi tööreĆŸiim Pulse (kommando :pulse) nĂ€itab ĂŒldteavet Kubernetes klastrist:

Selles saab nÀha ressursside arvu ja nende olekut (rohelisega kuvatakse need, millel on staatus KÀimas).
Veel ĂŒks huvitav K9s funktsioon kannab nime Popeye. See kontrollib kĂ”iki ressursse teatud korrektsuse kriteeriumite jĂ€rgi ja vĂ€ljastab saadud âhinnanguâ koos selgitustega. NĂ€iteks vĂ”ib nĂ€ha, et puuduvad proovid vĂ”i piirangud, ja mĂ”ni konteiner vĂ”ib kĂ€ivituda root'ina...

Toetatakse ka pÔhitoetust Helm. NÀiteks saab vaadata klastrisse juurutatud vabastusi:
:helm all # kÔik
:helm $namespace # konkreetse nimespetsiifilise jaoks
Benchmark
K9s on isegi integreeritud â see on lihtne HTTP-serverile koormuse generaator, alternatiiv tuntud ab (ApacheBench) suhtes.
Selle kĂ€ivitamiseks on vajalik port-forward aktiveerimine pod'is. Selleks valime pod'i ja vajutame Shift + f, liikudes port-forward alamvalikusse aliasega âpfâ.

PÀrast pordi valimist ja Ctrl + b vajutamist kÀivitub ise benchmark. Selle töö tulemused salvestatakse /tmp ja on saadaval edasiseks vaatamiseks K9s-is.


Benchmarki konfiguratsiooni muutmiseks tuleb luua fail $HOME/.k9s/bench-.yml (mÀÀratakse iga klastrile).
NB: Oluline on, et kÔikide YAML-failide laiendid kaustas .k9s oleks tÀpselt .yml (.yaml ei tööta korrektselt).
Konfiguratsiooni nÀidis:
tulemused:
vaikeparameetrid:
# Ăhenduste arv
concurrency: 2
# KĂŒsimuste arv
requests: 1000
konteinerid:
# Seaded bÀnkmurda konteineri jaoks
# Kontainer mÀÀratletakse kui namespace/pod-nimi:container-nimi
default/nginx:nginx:
concurrency: 2
requests: 10000
http:
path: /
method: POST
body:
{"foo":"bar"}
header:
Accept:
- text/html
Content-Type:
- application/json
teenused:
# BÀnkmurda saab lÀbi viia NodePort ja LoadBalancer teenustes
# SĂŒntaks: namespace/teenuse-nimi
default/nginx:
concurrency: 5
requests: 500
http:
method: GET
path: /auth
auth:
user: flant
password: s3cr3tp455w0rd
Liides
Ressursside loendi veergude vÀlimus muudetakse faili loomisega $HOME/.k9s/views.yml. NÀide selle sisust:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
TÔsi, veergude jÀrgi sildi puudumise kohta on olemas .
Veergude sortimine toimub klaviatuurikombinatsioonide abil:
- Shift + n â nime jĂ€rgi;
- Shift + o â sĂ”lmede jĂ€rgi;
- Shift + i â IP jĂ€rgi;
- Shift + a â konteineri eluea jĂ€rgi;
- Shift + t â taaskĂ€ivituste arvu jĂ€rgi;
- Shift + r â valmisoleku staatuse jĂ€rgi;
- Shift + c â CPU tarbimise jĂ€rgi;
- Shift + m â mĂ€lu tarbimise jĂ€rgi.
Kuid kui kellelegi ei meeldi vaikimisi vĂ€rvilahendus, toetab K9s isegi . Valmis nĂ€idised (7 tk) on saadaval . Siin on nĂ€ide ĂŒhest sellisest nahkade (in the navy):

Pluginad
LĂ”puks laiendada K9s vĂ”imalusi. Isiklikult olen kasutanud vaid ĂŒhte neist â kubectl get all -n $namespace.
See nÀeb vÀlja selline. Loome faili $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 saab liikuda nimede ruumi ja vajutada "g" vastava kĂ€su tĂ€itmiseks:

Pluginate seas on nÀiteks integreerimised kubectl-jq ja logide vaatamise utiliidiga .
KokkuvÔte
Minu arust on K9s töös vĂ€ga mugav: harjub ĂŒsna kiiresti kĂ”ike vajalikku otsima ilma kubectl. Meeldis logide vaatamine ja nende salvestamine, ressursside kiire redigeerimine, ĂŒldine töö kiirus*, osutus kasulikuks Popeye reĆŸiim. Eraldi vÀÀrivad mĂ€rkimist pluginade loomise vĂ”imalused ja rakenduse kohandamine vastavalt oma vajadustele.
* Kuigi olen suurte logide mahtude puhul mÀrganud K9s aeglast tööd. Sellistel hetkedel kasutas utiliit isegi 2 Intel Xeon E312xx tuuma ja vÔis isegi hanguda.
Mida hetkel puudub? Kiire tagasipöördumine eelmisele versioonile (see ei puuduta RS) ilma kaustasse minekuta. Lisaks toimub taastamine ainult kogu ressursi jaoks: kui olete eemaldanud annotatsiooni vÔi sildi, tuleb eemaldada ja taastada kogu ressurss (siin tuleb minna kausta). Teine pisiasi - puudub selliste salvestatud "bÀkkapide" kuupÀev.
P.S.
Lugege ka meie blogist:
- «»;
- «»;
- «».
Allikas: habr.com
