
felhasználói felületet biztosít a Kubernetes klaszterekhez való interakcióhoz. Ennek az Open Source projektnek a célja a K8s alkalmazások egyszerűbb navigálása, megfigyelése és kezelése. A K9s folyamatosan figyeli a Kubernetes változásait és gyors parancsokat kínál az észlelt erőforrások kezelésére.
A projekt Go nyelven készült, és már másfél éve létezik: az első elkötelezés 2019. február 1-jén történt. A cikk írásakor több mint 9000 csillag található a oldalon, és körülbelül 80 hozzájáruló dolgozik rajta. Nézzük meg, mit tud a k9s?
Telepítés és indítás
Ez egy klienst alkalmazás (a Kubernetes klaszterrel), amelyet a legegyszerűbben Docker-képként lehet futtatni:
docker run --rm -it -v $KUBECONFIG: /root/.kube/config quay.io/derailed/k9sNéhány Linux disztribúcióhoz és más operációs rendszerekhez készen álló telepítési . Általában Linux rendszerekhez egy bináris fájl telepíthető:
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/binNincsenek specifikus követelmények a K8s klaszterhez. Az értékelések alapján az alkalmazás a Kubernetes régebbi verzióival, mint például az 1.12, is működik.
Az alkalmazás a standard konfigurációt használva indul el konfigurációs forma jön létre: - hasonlóan módon ahogy a kubectl.
Navigáció
Alapértelmezés szerint egy ablak nyílik meg a standard névtérrel, amely a kontextushoz van rendelve. Tehát ha beírtad kubectl config set-context --current --namespace=test, akkor a névtér is megnyílik teszt. (Névtér/változatok váltásáról lásd alább.)

Átállás parancs üzemmódban a „:” megnyomásával történik. Ezután a k9s működését parancsokkal lehet irányítani - például, a StatefulSets listájának megtekintéséhez (az aktuális névtérben) írd be :sts.
![]()
Néhány más Kubernetes erőforráshoz:
-
:ns- Nevek; -
:deploy- Telepítések; -
:ing- Bejáratok; -
:svc- Szolgáltatások.
A megtekinthető erőforrástípusok teljes listájának megjelenítéséhez a parancs: :aliases.
Kényelmes megtekinteni a jelenlegi ablakban elérhető parancsok listáját is, amelyhez elég megnyomni a „?”.

A k9s-ben van keresési üzemmód, amelybe való átálláshoz elég csak beírni a „/”-t. Ezzel a jelenlegi „ablak” tartalmában lehet keresni. Tegyük fel, hogy korábban beírtad :ns, neked pedig nyitva van a névtér listája. Ha túl sok van, akkor, hogy ne kelljen hosszú ideig lefelé görgetni, elegendő a neveket tartalmazó ablakban beírni. /mynamespace.
A címkék szerinti kereséshez ki lehet választani az összes podot a megadott névtérben, majd beírni például / -l app=whoami. Ezt követően megkapjuk a megfelelő címkével rendelkező podok listáját:
![]()
A keresés minden ablakfajtában működik, beleértve a naplókat, a YAML-manifesztusok megtekintését és describe az erőforrásokra — a lehetőségekről részletesebben lásd alább.
Hogyan néz ki alapvetően a navigálási folyamat?
A következő parancs segítségével :ctx ki lehet választani a kontextust:

A névtér kiválasztásához már említett parancs van :ns, majd használhatjuk a keresést a kívánt névtérhez: /test.
Ha most kiválasztjuk a számunkra érdekes erőforrást (például a StatefulSet-et), akkor megjelenik a megfelelő információ: hány pod fut, rövid áttekintéssel róluk.
![]()
Lehet, hogy csak a podok érdekelnek — akkor elegendő beírni :pod. A ConfigMap-ek esetén (:cm — ezeknek az erőforrásoknak a listája) ki lehet választani a számunkra érdekes objektumot, és megnyomni az «u» gombot, ekkor a K9s megmondja, hogy ki használja azt (ezt a CM-t).
Még egy kényelmes funkció az erőforrások megtekintéséhez — az «röntgen» (XRay view). Ezt a módot a parancs hívja elő :xray RESOURCE és… egyszerűbb megmutatni, hogyan működik, mint elmagyarázni. Íme egy illusztráció a StatefulSets számára:

(Ezek közül bármelyik erőforrás szerkeszthető, módosítható, lehet velük csinálni describe.)
Íme egy Deployment Ingress-szel:

Az erőforrások kezelése
Minden erőforrásról információt kaphatunk YAML formátumban vagy annak describe megnyomásával a megfelelő billentyűkombinációkkal («y» és «d» ennek megfelelően). Persze, az alapvető műveletek száma még több: ezek listája és a billentyűkombinációk mindig láthatóak a kényelmes «fejlécben» az interfészen (elrejthető a Ctrl + e megnyomásával).

Bármely erőforrás szerkesztésekor («e» a kiválasztás után) megnyílik a szövegszerkesztő, amelyet a környezeti változók határoznak meg (export EDITOR=vim).
Íme, hogyan néz ki egy erőforrás részletes leírása (describe):

Ez a kimenet (vagy a YAML-manifesztus erőforrásának megtekintése) elmenthető a szokásos billentyűparancs segítségével, Ctrl + s. Hova fog mentődni, azt a K9s üzenetéből tudhatják meg:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml sikeresen mentve! A létrehozott mentési fájlokból erőforrásokat is vissza lehet állítani, előtte eltüntetve a rendszercímkéket és annotációkat. Ehhez szükséges belépni a mappába (:dir /tmp), majd ki kell választani a kívánt fájlt és alkalmazni apply.
Mellesleg bármikor vissza lehet térni a korábbi ReplicaSet-re, ha a jelenlegivel probléma van. Ehhez ki kell választani a kívánt RS-t (:rs a listájukhoz):

… és végrehajtani a rollback-et a Ctrl + l segítségével. Értesítést kell kapnunk, hogy minden sikeresen lezajlott:
k9s/whoami-5cfbdbb469 sikeresen visszaállítvaA replikák méretezéséhez elegendő megnyomni az 's' (scale) gombot, és kiválasztani a kívánt példányszámot:

Bármelyik konténerhez shell-lépésben is lehet csatlakozni: ehhez lépjünk a kívánt pod-hoz, nyomjuk meg az 's' (shell) gombot és válasszuk ki a konténert.
Egyéb lehetőségek
Természetesen a logok megtekintése is támogatott (az 'l' a kiválasztott erőforráshoz). Új logok nézéséhez nem szükséges folyamatosan nyomogatni az Enter-t: elegendő egy címke létrehozása ('m'), ami után csak az új üzeneteket figyeljük.

Ugyanebben az ablakban időtartamot is választhatunk a logok kiírására:
- az '1' gomb — 1 percig;
- '2' — 5 perc;
- '3' — 15 perc;
- '4' — 30 perc;
- '5' — 1 óra;
- '0' — a pod teljes élettartama alatt.
A Pulse speciális üzemmód (parancs :pulse) általános információkat mutat a Kubernetes klaszterről:

Itt láthatjuk az erőforrások számát és állapotukat (zölddel jelölik, amelyek ' Futásban).
Egy másik érdekes funkciója a K9s-nek a következőképpen hívják Popeye. Ez ellenőrzi az összes erőforrást bizonyos helyességi kritériumok alapján és megjeleníti a kapott 'értékelést' magyarázatokkal együtt. Például láthatjuk, hogy hiányoznak korlátok vagy limit értékek, esetleg egy konténer root felhasználó alatt futtatható...

Alapvető támogatás érhető el Helm számára. Például így megnézhetjük a klaszterbe telepített verziókat:
:helm all # mind
:helm $namespace # adott névtérben
Benchmark
A K9s-be akár egy is beépítették - ez egy egyszerű terhelésgenerátor HTTP szerverhez, alternatívája a jobban ismert ab (ApacheBench)-nek.
A bekapcsolásához szükséges a port-forward aktiválása a pod-ban. Ehhez válasszuk ki a pod-ot, és nyomjuk meg a Shift + f-ot, lépjünk a port-forward almok menübe a 'pf' alias segítségével.

A port kiválasztása után és a Ctrl + b megnyomásával elindul a benchmark. A munkája eredményei elmentésre kerülnek /tmp és a későbbi megtekintéshez elérhetők lesznek a K9s-ben.


A benchmark konfigurációjának megváltoztatásához létre kell hozni egy fájlt $HOME/.k9s/bench-.yml (minden klaszterre meghatározott).
NB: Fontos, hogy minden YAML fájl kiterjesztése a következő könyvtárban .k9s éppen .yml (.yaml nem működik helyesen).
Példa konfiguráció:
teljesítménytesztek:
alapértelmezett:
# Szálak száma
párhuzamosság: 2
# Kérések száma
kérések: 1000
konténerek:
# Beállítások a teljesítményteszt konténeréhez
# A konténer namespace/pod-név:konténer-név formátumban van meghatározva
default/nginx:nginx:
párhuzamosság: 2
kérések: 10000
http:
útvonal: /
metódus: POST
törzs:
{"foo":"bar"}
fejlécek:
Accept:
- text/html
Content-Type:
- application/json
szolgáltatások:
# Teljesítményteszt végezhető NodePort és LoadBalancer típusú szolgáltatásokon
# Szintaxis: namespace/szolgáltatás-név
default/nginx:
párhuzamosság: 5
kérések: 500
http:
metódus: GET
útvonal: /auth
hitelesítés:
felhasználó: flant
jelszó: s3cr3tp455w0rd
Felület
Az erőforráslisták oszlopainak megjelenése fájl létrehozásával módosítható $HOME/.k9s/views.yml. Példa a tartalmára:
k9s:
nézetek:
v1/podok:
oszlopok:
- ÉLETKOR
- NAMESPACE
- NÉV
- IP
- CSOMÓPONT
- ÁLLAPOT
- KÉSZ
v1/szolgáltatások:
oszlopok:
- ÉLETKOR
- NAMESPACE
- NÉV
- TÍPUS
- KLASZTER-IP
Igaz, hiányzik egy oszlop a címkékre vonatkozóan, amire van .
Az oszlopok szerinti rendezés billentyűkombinációkkal történik:
- Shift + n — név szerint;
- Shift + o — csomópontok szerint;
- Shift + i — IP szerint;
- Shift + a — konténer élettartam szerint;
- Shift + t — újraindítások száma szerint;
- Shift + r — kész állapot szerint;
- Shift + c — CPU használat szerint;
- Shift + m — memória használat szerint.
Ha valakinek nem tetszik az alapértelmezett színösszeállítás, a K9s még támogatta . Készen álló példák (7 db) állnak rendelkezésre . Itt van egy példa egy ilyen bővítményre (a haditengerészetben):

Bővítmények
Végül, lehetővé teszik a K9s képességeinek bővítését. Én magam a munkámban csak egyet használtam közülük — kubectl get all -n $namespace.
Ez így néz ki. Készítünk egy fájlt $HOME/.k9s/plugin.yml a következő tartalommal:
bővítmény:
get-all:
gyorsbillentyű: g
megerősítés: hamis
leírás: minden lekérése
hatáskörök:
- minden
parancs: sh
háttér: hamis
argumentumok:
- -c
- "kubectl -n $NAMESPACE get all -o wide | less"Most már lehet váltani a névtérbe, és megnyomni az 'g' billentyűt a megfelelő parancs végrehajtásához:

A bővítmények között van például integráció a kubectl-jq-val és a naplómegjelenítő eszközzel .
Zárás
Szerintem a K9s nagyon kényelmes a használatban: viszonylag gyorsan hozzászokik, hogy mindent szükségeset anélkül keressen, hogy kubectl. Örömmel töltötte el a naplók megtekintése és mentése, az erőforrások gyors szerkesztése, a gyorsaság, és hasznos volt a Popeye üzemmód is. Külön említést érdemelnek a bővítmények létrehozásának és az alkalmazás testreszabásának lehetőségei.
* Bár amikor nagy mennyiségű naplóvan, észleltem, hogy a K9s lassan működik. Ilyenkor az eszköz 2 magot is használt az Intel Xeon E312xx-ból, és akár még meg is fagytak.
Mi hiányzik jelenleg? Gyors visszaállítás az előző verzióra (nem az RS-ről) anélkül, hogy belépne a könyvtárba. Ráadásul a helyreállítás csak a teljes erőforráshoz történik: ha törölte az annotációt vagy címkét, akkor az egész erőforrást is törölni és helyreállítani kell (itt már szükség lesz belépni a könyvtárba). Egy másik kis dolog — hiányzik az ilyen mentett „békák” dátuma.
P.S.
Olvasson további információkat a blogunkban:
- «»;
- «»;
- «».
Forrás: habr.com
