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:
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.)
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.
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-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 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 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.
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:
(Ezek az erőforrások mindegyike szerkeszthető, módosítható, elkészíthető describe.)
És íme a Deployment with Ingress:
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).
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):
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:
Ú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):
... é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 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.
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:
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ó...
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 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 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
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):
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 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.