A k9s áttekintése — fejlett terminálfelület Kuberneteshez

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

K9s 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 GitHub 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/k9s

Néhány Linux disztribúcióhoz és más operációs rendszerekhez készen álló telepítési csomagok. Á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/bin

Nincsenek 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.)

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

Á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.

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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 áttekintése — fejlett terminálfelület Kuberneteshez

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 k9s áttekintése — fejlett terminálfelület Kuberneteshez

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 k9s áttekintése — fejlett terminálfelület Kuberneteshez

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.

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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:

A k9s áttekintése — fejlett terminálfelület Kuberneteshez
(Ezek közül bármelyik erőforrás szerkeszthető, módosítható, lehet velük csinálni describe.)

Íme egy Deployment Ingress-szel:

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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).

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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):

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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):

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

… é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ítva

A replikák méretezéséhez elegendő megnyomni az 's' (scale) gombot, és kiválasztani a kívánt példányszámot:

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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.

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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:

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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ó...

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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 hey 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 k9s áttekintése — fejlett terminálfelület Kuberneteshez

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 k9s áttekintése — fejlett terminálfelület Kuberneteshez
A k9s áttekintése — fejlett terminálfelület Kuberneteshez

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 probléma a projektben.

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 bővítményeket. Készen álló példák (7 db) állnak rendelkezésre itt. Itt van egy példa egy ilyen bővítményre (a haditengerészetben):

A k9s áttekintése — fejlett terminálfelület Kuberneteshez

Bővítmények

Végül, a bővítmények 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 k9s áttekintése — fejlett terminálfelület Kuberneteshez

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 stern.

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster