
pakub terminali kasutajaliidese, et suhelda Kubernetes'i klastritega. Selle avatud lÀhtekoodi projekti eesmÀrk on hÔlbustada navigeerimist K8s rakendustes, nende jÀlgimist ja haldamist. K9s jÀlgib pidevalt muutusi Kubernetes'is ja pakub kiireid kÀske jÀlgitavate ressursside haldamiseks.
Projekt on kirjutatud Go keeles ja on tegutsenud ĂŒle pooleteise aasta: esimene commit tehti 1. veebruaril 2019. Artikli kirjutamise hetkel on ĂŒle 9000 tĂ€he ja umbes 80 kaastöötajat. Vaatame, mida k9s oskab?
Paigaldamine ja kÀivitamine
See on kliendirakendus (Kubernetes'i klastri suhtes), mida on kÔige lihtsam kÀivitada kui Docker'i kujund:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9sMĂ”nede Linux'i distributsioonide ja muude opsĂŒsteemide jaoks on ka valmis installimiseks paketid. Ăldiselt vĂ”ib Linux'i sĂŒsteemide jaoks paigaldada 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/binKlaster K8s jaoks ei ole mingeid spetsiifilisi nÔudeid. Tagasiside pÔhjal töötab rakendus ka vanemate Kubernetes'i versioonidega, nagu 1.12.
Rakendus kĂ€ivitub standardse konfi kasutamisega .kube/config â sarnaselt sellele, mida teeb kubectl.
Navigeerimine
Vaikimisi avatakse aken standardse namespace'iga, mis on mÀrgitud kontekstiks. See tÀhendab, et kui olete kirjutanud kubectl config set-context --current --namespace=test, siis avataksegi namespace test. (Konteksti/nimi ruumide vahetamisest lugege allpool.)

Liikumine kĂ€skude reĆŸiimi toimub vajutades «:». PĂ€rast seda saate k9s-i tööd juhtida kĂ€skudega â nĂ€iteks, et vaadata StatefulSets'i loendit (praeguses nime ruumis), saate sisestada :sts.
![]()
MÔnede teiste Kubernetes'i ressursside jaoks:
-
:nsâ Nimi ruumid; -
:deployâ Rakendused; -
:ingâ Sisenemised; -
:svcâ Teenused.
Kogu ressursside tĂŒĂŒpide loendi kuvamiseks on kĂ€sk :aliases.
Mugav on vaadata ka kÀskude loendit, mis on saadaval kuumade klahvikombinatsioonide kaudu praeguses aknas: selleks piisab, kui vajutada «?».

K9s-is on ka otsingu reĆŸiim, millele pÀÀsemiseks piisab, kui sisestate «/». Sellega otsitakse praeguse «akna» sisu. Oletame, et olete enne seda sisestanud :ns, teil, et teil on nimekirja nimesid. Kui neid on liialt palju, et mitte pikalt all kerida, piisab, kui kirjutad namespaces aknas. /mynamespace.
Siltide otsimiseks saad valida kÔik pod'id soovitud nimes, seejÀrel tippida nÀiteks / -l app=whoami. Me saame nimekirja pod'idest, millel on see silt:
![]()
Otsing toimib kĂ”igis akendes, sealhulgas logides, YAML-manifeste vaadates ja describe ressursside jaoks â lisainfot nende vĂ”imaluste kohta vt allpool.
Milline on ĂŒldine tegevuste jĂ€rjestus navigeerimiseks?
KĂ€sk :ctx saad valida konteksti:

Nimespetsi valimiseks on juba mainitud kÀsk :ns, seejÀrel saad kasutada otsingut vajaliku nimespetsi jaoks: /test.
Kui nĂŒĂŒd valitakse huvipakkuv ressurss (nĂ€iteks sama StatefulSet), kuvatakse vastav teave: kui palju pod'e on kĂ€imas koos nende lĂŒhikese teabega.
![]()
VĂ”ib olla huvipakkuvad ainult pod'id â siis piisab, kui kirjutada :pod. ConfigMap'ide puhul (:cm â nende ressursside nimekirja jaoks) saad valida huvipakkuva objekti ja vajutada 'u', mille jĂ€rel K9s nĂ€itab, kes konkreetset (seda CM) kasutab.
Veel ĂŒks mugav funktsioon ressursside vaatamiseks â nende "röntgen" (XRay view). Selline reĆŸiim kĂ€ivitatakse kĂ€suga :xray RESOURCE ja... on lihtsam nĂ€idata, kuidas see töötab, kui selgitada. Siin on illustreeriv nĂ€ide StatefulSets'i kohta:

(Iga neid ressursse saab redigeerida, muuta, teha describe.)
Siin on Deployment koos Ingress'iga:

Töötamine ressurssidega
Iga ressursi kohta on vÔimalik saada teavet YAML formaadis vÔi tema describe vajutades vastavaid klaviatuurikombinatsioone («y» ja «d» vastavalt). PÔhitegevusi on muidugi veel rohkem: nende loetelu ja klaviatuurikombinatsioonid on alati nÀhtavad tÀnu mugavale «pealkirjale» liideses (mis peidetakse, vajutades Ctrl + e).

Ressursi redigeerimise korral (vajutades «e» pÀrast selle valimist) avaneb tekstiredaktor, mis on mÀÀratud keskkonnamuutujates (export EDITOR=vim).
Siin on, kuidas ressursi ĂŒksikasjalik kirjeldus vĂ€lja nĂ€eb (describe):

Sellise vÀljundi (vÔi YAML-maniifesti kuvamise vÀljundi) saab salvestada tavalise klaviatuurikombinatsiooni Ctrl + s abil. Kuhu see salvestatakse, selgub K9s'i sÔnumist:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml salvestatud edukalt! Loodud varufailidest saab ka ressursse taastada, eemaldates eelnevalt sĂŒsteemi sildid ja annotatsioonid. Selleks tuleb minna kaustadesse, kus need asuvad (:dir /tmp), see valitud fail ja rakenda rakenda.
Muide, igal ajal on vÔimalik tagasi minna varasemale ReplicaSet'ile, kui praegusega on probleeme. Selleks tuleb valida soovitud RS (:rs nende loendist):

⊠ja teostada rollback klahv kombinatsiooniga Ctrl + l. Peame saama teate, et kÔik on lÀinud edukalt:
k9s/whoami-5cfbdbb469 on edukalt tagasiviidudJa et koopiaid skaleerida, piisab, kui vajutada «s» (scale) ja valida soovitud eksemplaride arv:

Igas konteineris saab shell'i kaudu sisse minna: selleks liikuda soovitud pod'ile, vajutada «s» (shell) ja valida konteiner.
Teised vÔimalused
Loomulikult toetatakse ka logide vaatamist («l» valitud ressursi jaoks). Ja et vaadata uusi logisid, ei pea pidevalt vajutama Enter: piisab, kui teha mÀrgistus («m»), pÀrast mida jÀlgida ainult uusi sÔnumeid.

Samuti saab selles aknas valida ajavahemiku logide kuvamiseks:
- klahv «1» â 1 minuti jooksul;
- «2» â 5 minutit;
- «3» â 15 minutit;
- «4» â 30 minutit;
- «5» â 1 tund;
- «0» â kogu pod'i eluaja jooksul.
Pulse'i erireĆŸiim (kĂ€sk :pulse) nĂ€itab ĂŒldteavet Kubernetes'i klastrist:

Selles saab nÀha ressursside arvu ja nende seisundit (roheline nÀitab neid, millel on staatus) Running).
Veel ĂŒks huvitav funktsioon K9s kannab nime Popeye. See kontrollib kĂ”iki ressursse teatud korrektsuse kriteeriumide jĂ€rgi ja kuvab saadud "hindamise" koos selgitustega. NĂ€iteks saab nĂ€ha, et puudu on vahemikud vĂ”i piirangud, ning mĂ”ni konteiner vĂ”ib kĂ€ivituda root'i allâŠ

Helmi pÔhitoe olemasolu. NÀiteks saab vaadata klastrisse paigaldatud vÀljalaskeid:
:helm all # kÔik
:helm $namespace # konkreetses nimede ruumis
Benchmark
K9s on sisseehitatud isegi â lihtne koormuse generaator HTTP-serverile, alternatiiv tuntud ab-le (ApacheBench).
Selle sisselĂŒlitamiseks on vajalik port-forward aktiviseerimine pod'is. Selleks valime pod'i ja vajutame Shift + f, seejĂ€rel liigume port-forward alammenĂŒĂŒsse alias'iga «pf».

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


Benchmark'i konfiguratsiooni muutmiseks tuleb luua fail $HOME/.k9s/bench-.yml (mÀÀratakse igas klastris eraldi).
NB: Oluline on, et kÔikide YAML-failide laiend nimekirjas .k9s oleks tÀpselt .yml (.yaml ei tööta korralikult).
Konfiguratsiooni nÀidis:
benchmark'id:
defaults:
# SĂŒsteemi lĂ”ime arv
concurrency: 2
# KĂŒsimuste arv
requests: 1000
konteinerid:
# Seaded konteineri jaoks benchmark'iga
# Kase on mÀÀritud kui 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
teenused:
# Benchmark'i vÔib viia lÀbi teenustes nagu NodePort ja LoadBalancer
# SĂŒntaks: namespace/service-name
default/nginx:
concurrency: 5
requests: 500
http:
method: GET
path: /auth
auth:
user: flant
password: s3cr3tp455w0rd
Liides
Ressurside loendi veergude vÀlimus muutub 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, veergu siltide kohta jÀÀb puudu, mille kohta on .
Veergude jÀrgi sorteerimiseks kasutatakse klaviatuuri kombinatsioone:
- 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 â valmiduse staatuse jĂ€rgi;
- Shift + c â CPU kasutuse jĂ€rgi;
- Shift + m â mĂ€lu kasutuse jĂ€rgi.
Kui aga kellegile ei meeldi vaikimisi vĂ€rvitoonid, toetab K9s isegi . Valmis nĂ€ited (7 tĂŒkki) on saadaval . Siin on ĂŒks sellise nahka nĂ€ide (laevastikus):

Pluginad
LĂ”puks, laiendavad K9s-i vĂ”imalusi. Olen ise kasutanud töös vaid ĂŒht neist â kubectl get all -n $namespace.
See nÀeb vÀlja jÀrgmine. 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 nimekonda ja vajutada «g», et vastava kĂ€suga edasi minna:

Pluginite seas on nÀiteks integratsioonid kubectl-jq ja logide vaatamise utiliidiga .
KokkuvÔte
Minu arvates on K9s töö tegemisel vĂ€ga mugav: selle abil harjub kiiresti leidma vajadused ilma kasutamata kubectl. Logide vaatamine ja nende salvestamine, kiire ressursside redigeerimine ja töö kiirus olid kokkuvĂ”ttes kasulikud, samuti osutus kasulikuks ŃĐ”Đ¶ĐžĐŒ Popeye. Eraldi mainimist vÀÀrivad pluginite loomise ning rakenduse kohandamise vĂ”imalused.
* Kuigi suurt logi töötledes on K9s aeg-ajalt aeglane. Sellistel hetkedel kasutas utiliit isegi kaks Intel Xeon E312xx sĂŒdamikku ja vĂ”is isegi hanguda.
Mida hetkel puudub? Kiire tagasimine minevikku (mitte RS) ilma katalooge sisenemata. Lisaks toimub taastamine vaid kogu ressursi osas: kui kustutatud on annotatsioon vĂ”i silt, tuleb kustutada ja taastada kogu ressurss (siin tuleb tĂ”epoolest minna katalooge). Veel ĂŒks pisiasi - puudub salvestatud 'backupide' kuupĂ€ev.
P.S.
Lugege ka meie blogist:
- «»;
- «»;
- «».
Allikas: habr.com
