A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

K9s terminál felhasználói felületet biztosít a Kubernetes-fürtökkel való interakcióhoz. Ennek a nyílt forráskódú projektnek az a célja, hogy megkönnyítse a navigációt, a figyelést és az alkalmazások kezelését a K8s-ban. A K9s folyamatosan figyeli a Kubernetes változásait, és gyors parancsokat ad a felügyelt erőforrásokkal való munkavégzéshez.

A projekt Go nyelven íródott, és több mint másfél éve létezik: az első commit 1. február 2019-jén történt. A cikk írásakor több mint 9000 csillag van rajta GitHub és mintegy 80 közreműködő. Lássuk, mire képesek a k9s?

Telepítés és indítás

Ez egy kliens (a Kubernetes-fürthöz kapcsolódóan) alkalmazás, amelyet a legegyszerűbb Docker-képként futtatni:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

Egyes Linux-disztribúciók és más operációs rendszerek esetében szintén telepítésre készek пакеты. Általában Linux rendszereken telepítheti a bináris fájlt:

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

Magával a K8s-klaszterrel szemben nincsenek speciális követelmények. A vélemények alapján az alkalmazás a Kubernetes régebbi verzióival is működik, például az 1.12-vel.

Az alkalmazás elkezdi használni a szabványos konfigurációt .kube/config - hasonlóan ahhoz, ahogyan teszi kubectl.

Navigáció

Alapértelmezés szerint megnyílik egy ablak a kontextushoz megadott szabványos névtérrel. Mármint ha írtál kubectl config set-context --current --namespace=test, akkor megnyílik a névtér test. (Lásd alább a kontextusok/névterek megváltoztatásáról.)

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Menj parancs mód a „:” gombra kattintva hajthatja végre. Ezután parancsokkal szabályozhatja a k9s működését - például a StatefulSets listájának megtekintéséhez (az aktuális névtérben) megadhatja :sts.

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Néhány más Kubernetes-forráshoz:

  • :ns - Névterek;
  • :deploy — Bevetések;
  • :ing - Ingress;
  • :svc - Szolgáltatások.

A megtekinthető erőforrástípusok teljes listájának megjelenítéséhez van egy parancs :aliases.

Az aktuális ablakban kényelmesen megtekintheti a gyorsbillentyűkombinációkkal elérhető parancsok listáját is: ehhez kattintson a „?” gombra.

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A k9s-ben is van keresési mód, amelyhez csak a „/” jelet kell beírnia. Az aktuális „ablak” tartalmában keres. Például, ha korábban megadta :ns, meg van nyitva a névterek listája. Ha túl sok van belőlük, akkor, hogy ne görgessen le sokáig, csak írja be a névtereket tartalmazó ablakba /mynamespace.

Ha címkék szerint szeretne keresni, kijelölheti a kívánt névtér összes sorát, majd beírhatja például: / -l app=whoami. Megkapjuk a következő címkével ellátott hüvelyek listáját:

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A keresés minden típusú ablakban működik, beleértve a naplókat, a YAML-jegyzékek megtekintését és describe az erőforrásokért – lásd alább, ha többet szeretne megtudni ezekről a képességekről.

Hogyan néz ki a teljes navigációs folyamat?

A paranccsal :ctx kiválaszthatja a kontextust:

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A névtér kiválasztásához a már említett parancs található :ns, majd használhatja a keresést a kívánt helyre: /test.

Ha most kiválasztjuk a minket érdeklő erőforrást (például ugyanazt a StatefulSet-et), akkor megjelenik a megfelelő információ: hány pod fut rövid információval.

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Csak a hüvelyek lehetnek érdekesek – akkor csak lépjen be :pod. ConfigMaps esetén (:cm - ezen erőforrások listájához) kiválaszthatja a kívánt tárgyat, és kattintson az „u” gombra, ami után a K9s megmondja, hogy pontosan ki használja (ez a CM).

Az erőforrások megtekintésének másik kényelmes funkciója az "Röntgen" (XRay nézet). Ezt a módot a parancs hívja meg :xray RESOURCE és... könnyebb megmutatni, hogyan működik, mint elmagyarázni. Íme a StatefulSets illusztrációja:

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára
(Ezek az erőforrások mindegyike szerkeszthető, módosítható, elkészíthető describe.)

És íme a Deployment with Ingress:

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Munka az erőforrásokkal

Az egyes erőforrásokról információkat szerezhet be a YAML-ben vagy annak describe a megfelelő billentyűparancsok ("y" és "d") megnyomásával. Vannak persze még alapvetőbb műveletek is: listájuk és billentyűparancsaik mindig láthatóak a felületen található kényelmes „fejlécnek” köszönhetően (amit a Ctrl + e megnyomásával el lehet rejteni).

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Bármely erőforrás (kijelölése után „e”) szerkesztésekor a szövegszerkesztő a környezeti változókban (export EDITOR=vim).

És így néz ki az erőforrás részletes leírása (describe):

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Ez a kimenet (vagy egy erőforrás YAML-jegyzékének megtekintésének kimenete) a szokásos Ctrl + s billentyűparancs segítségével menthető. A mentés helye a K9s üzenetéből kiderül:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

Úgy is visszaállíthatja az erőforrásokat a létrehozott biztonsági mentési fájlokból, hogy először eltávolítja a rendszercímkéket és a megjegyzéseket. Ehhez el kell lépnie velük a könyvtárba (:dir /tmp), majd válassza ki a kívánt fájlt, és alkalmazza apply.

Egyébként bármikor visszatérhet az előző ReplicaSethez, ha problémák vannak az aktuálisval. Ehhez ki kell választania a kívánt RS-t (:rs a listájukhoz):

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

... és visszaállítás a Ctrl + l használatával. Értesítést kell kapnunk, hogy minden sikeres volt:

k9s/whoami-5cfbdbb469 successfully rolled back

A replikák méretezéséhez egyszerűen kattintson az „s”-re (méretarány), és válassza ki a kívánt példányszámot:

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A shell használatával bármelyik tárolót megadhatja: ehhez lépjen a kívánt podra, kattintson az „s” (shell) gombra, és válassza ki a tárolót.

Más funkciók

Természetesen a naplók megtekintése is támogatott („l” a kiválasztott erőforráshoz). Az új naplók megtekintéséhez pedig nem kell folyamatosan nyomni az Enter billentyűt: csak jelöljön be ("m"), majd csak az új üzeneteket figyelje.

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Ugyanebben az ablakban kiválaszthatja a naplók kiadásának időtartamát is:

  • "1" gomb - 1 percen belül;
  • „2” - 5 perc;
  • „3” - 15 perc;
  • „4” - 30 perc;
  • "5" - 1 óra;
  • „0” – a hüvely teljes élettartama alatt.

Speciális üzemmód Impulzus (parancs :pulse) általános információkat jelenít meg a Kubernetes-fürtről:

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Ebben láthatja az erőforrások számát és állapotát (azok, amelyeknek van állapotuk, zölden jelennek meg Running).

A K9s másik érdekes tulajdonsága az ún Popeye. Ellenőrzi az összes erőforrást bizonyos helyességi kritériumok tekintetében, és az eredményül kapott „értékelést” magyarázatokkal együtt megjeleníti. Például láthatja, hogy nincs elég minta vagy limit, és néhány tároló rootként futtatható...

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

Van alapvető Helm támogatás. Például így tekintheti meg a fürtbe telepített kiadásokat:

:helm all # все
:helm $namespace # в конкретном пространстве имен

benchmark

Még a K9-be is beépítették hey egy egyszerű terhelésgenerátor egy HTTP-kiszolgálóhoz, alternatíva a jobban ismert ab-hoz (ApacheBench).

Az engedélyezéséhez engedélyeznie kell a port-továbbítást a podban. Ehhez válassza ki a pod elemet, és nyomja meg a Shift + f billentyűkombinációt, és lépjen a port-forward almenübe a „pf” álnévvel.

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A port kiválasztása és a Ctrl + b megnyomása után maga a benchmark elindul. Munkájának eredményeit tárolják /tmp és később megtekinthetők a K9s-ben.

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára
A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A benchmark konfiguráció módosításához létre kell hoznia egy fájlt $HOME/.k9s/bench-<my_context>.yml (minden klaszterhez meghatározva).

Megjegyzés: Fontos, hogy a könyvtárban lévő összes YAML fájl kiterjesztése .k9s pontosan az volt .yml (.yaml nem működik megfelelően).

Konfigurációs példa:

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

felület

Az erőforráslisták oszlopainak megjelenése egy fájl létrehozásával módosítható $HOME/.k9s/views.yml. Példa a tartalmára:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

Igaz, nincs elég oszlop a címkék számára, amihez van kérdés a projektben.

Az oszlopok szerinti rendezés billentyűparancsokkal történik:

  • Shift + n - név szerint;
  • Shift + o - csomópontok szerint;
  • Shift + i - IP alapján;
  • Shift + a - a tartály élettartama szerint;
  • Shift + t — az újraindítások számával;
  • Shift + r - készenléti állapot szerint;
  • Shift + c - CPU-fogyasztás szerint;
  • Shift + m - memóriafelhasználás szerint.

Ha valakinek nem tetszik az alapértelmezett színséma, a K9s még azt is támogatja bőrök. Kész példányok (7 db) állnak rendelkezésre itt. Íme egy példa az egyik ilyen bőrre (a tengerészetnél):

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

plugins

Végül, a bővítmények lehetővé teszi a K9-ek képességeinek bővítését. Jómagam közülük csak egyet használtam a munkám során - kubectl get all -n $namespace.

Ez így néz ki. Hozzon létre egy fájlt $HOME/.k9s/plugin.yml ilyen tartalommal:

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"

Most léphet a névtérbe, és nyomja meg a „g” billentyűt a megfelelő parancs végrehajtásához:

A k9s áttekintése - egy fejlett terminál interfész a Kubernetes számára

A beépülő modulok között megtalálható például a kubectl-jq-val való integráció és a naplók megtekintésére szolgáló segédprogram csillag.

Következtetés

Az én ízlésem szerint a K9s nagyon kényelmesnek bizonyult: vele gyorsan meg lehet szokni, hogy mindent megtalál, amire szüksége van. kubectl. Elégedett voltam a naplók megtekintésével és mentésével, az erőforrások gyors szerkesztésével, a munka sebességével általában*, a Popeye mód hasznosnak bizonyult. Külön említést érdemel a bővítmények létrehozásának és az alkalmazás igényeinek megfelelő testreszabásának lehetősége.

* Bár nagy mennyiségű napló mellett a K9-ek lassú működését is észrevettem. Ilyen pillanatokban a segédprogram „megette” az Intel Xeon E2xx 312 magját, és akár le is fagyhat.

Mi hiányzik jelenleg? Gyors visszaállítás az előző verzióra (nem RS-ről beszélünk) anélkül, hogy a könyvtárba menne. Ezenkívül a helyreállítás csak a csak erőforrás: ha törölt egy megjegyzést vagy címkét, törölnie kell és vissza kell állítania a teljes erőforrást (itt kell mennie a könyvtárba). Egy másik apróság, hogy az ilyen mentett „mentések” dátuma hiányzik.

PS

Olvassa el blogunkon is:

Forrás: will.com

Hozzászólás