K9s pakub terminali kasutajaliidest Kubernetese klastritega suhtlemiseks. Selle avatud lähtekoodiga projekti eesmärk on muuta K8s rakendustes navigeerimine, jälgimine ja haldamine lihtsaks. K9s jälgib pidevalt Kubernetese muudatusi ja pakub jälgitavate ressurssidega töötamiseks kiireid käske.
Projekt on kirjutatud Go-s ja on olnud juba üle pooleteise aasta: esimene kohustus tehti 1. veebruaril 2019. Kirjutamise ajal on peal 9000+ tärni GitHub ja umbes 80 kaastöölist. Vaatame, mida k9s teha suudab?
Paigaldamine ja käivitamine
See on klientrakendus (seoses Kubernetese klastriga), mida on kõige lihtsam käivitada Dockeri pildina:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Mõnede Linuxi distributsioonide ja muude operatsioonisüsteemide jaoks on olemas ka installimisvalmis pakette. Üldiselt saate Linuxi süsteemide jaoks installida binaarfaili:
K8s klastri enda jaoks erinõudeid pole. Arvustuste põhjal otsustades töötab rakendus ka Kubernetese vanemate versioonidega, näiteks 1.12.
Rakendus käivitatakse standardse konfiguratsiooni abil .kube/config - sarnane sellega, kuidas see toimib kubectl.
Navigatsioon
Vaikimisi avaneb aken konteksti jaoks määratud vaikenimeruumiga. See tähendab, et kui sa kirjutasid kubectl config set-context --current --namespace=test, siis avaneb nimeruum test. (Kontekstide/nimeruumide muutmise kohta vaadake altpoolt.)
Minema käsurežiim seda tehakse, vajutades ":". Pärast seda saate k9s-i tööd juhtida käskude abil - näiteks StatefulSetsi loendi vaatamiseks (praeguses nimeruumis) võite sisestada :sts.
Mõnede muude Kubernetese ressursside jaoks:
:ns — nimeruumid;
:deploy — kasutuselevõtt;
:ing — sissetungimine;
:svc — Teenused.
Vaatamiseks saadaolevate ressursitüüpide täieliku loendi kuvamiseks on olemas käsk :aliases.
Samuti on mugav vaadata aktiivses aknas kiirklahvikombinatsioonidega saadaolevate käskude loendit: selleks klõpsake lihtsalt "?".
Ka k9s on olemas otsingurežiim, kuhu minemiseks piisab "/" sisestamisest. Sellega otsitakse praeguse "akna" sisust. Oletame, et olete varem sisestanud :ns, on teil avatud nimeruumide loend. Kui neid on liiga palju, siis selleks, et mitte pikalt alla kerida, piisab nimeruumidega aknasse sisestamisest /mynamespace.
Siltide järgi otsimiseks saate soovitud nimeruumis valida kõik kaustad ja seejärel sisestada näiteks / -l app=whoami. Saame selle sildiga kaunade loendi:
Otsing töötab igasugustes akendes, sealhulgas logides, YAML-i manifestide vaatamises ja describe ressursside jaoks – vaadake nende funktsioonide kohta lisateavet allpool.
Milline näeb välja üldine navigeerimisvoog?
Kasutades käsku :ctx saate valida konteksti:
Nimeruumi valimiseks on juba mainitud käsk :nsja seejärel saate kasutada soovitud ruumi otsingut: /test.
Kui nüüd valime meid huvitava ressursi (näiteks seesama StatefulSet), siis ilmub selle kohta vastav info: mitu podi töötab koos nende kohta lühiinfoga.
Huvi võivad pakkuda ainult kaunad - siis piisab sisenemisest :pod. ConfigMapsi puhul (:cm - nende ressursside loendi jaoks saate valida huvipakkuva objekti ja klõpsata "u", misjärel K9s ütleb teile, kes seda konkreetselt kasutab (see CM).
Teine mugav funktsioon ressursside vaatamiseks on nende "röntgenikiirgus" (röntgenivaade). Seda režiimi kutsutakse välja käsuga :xray RESOURCE ja ... on lihtsam näidata, kuidas see toimib, kui selgitada. Siin on StatefulSetsi näide:
(Iga neid ressursse saab redigeerida, muuta, teha describe.)
Ja siin on juurutamine koos Ingressiga:
Töötamine ressurssidega
Saate teavet iga YAMLi või selle ressursi kohta describe vajutades vastavaid kiirklahve (vastavalt y ja d). Muidugi on põhitoiminguid veelgi rohkem: nende loend ja kiirklahvid on alati nähtavad tänu liidese mugavale “päisele” (peidetud klahvikombinatsiooni Ctrl + e vajutamisega).
Ressursi redigeerimisel (peale selle valimist "e") avaneb keskkonnamuutujates defineeritud tekstiredaktor (export EDITOR=vim).
Ja siin näeb välja ressursi üksikasjalik kirjeldus (describe):
Selle väljundi (või YAML-i ressursi manifesti vaatamise väljundi) saab salvestada tuttava kiirklahviga Ctrl + s. Kuhu see salvestatakse, saab teada K9s sõnumist:
Pärast süsteemisiltide ja märkuste eemaldamist saate loodud varukoopiafailidest ressursse ka taastada. Selleks peate minema nendega kataloogi (:dir /tmp), seejärel valige soovitud fail ja rakendage apply.
Muide, kui praegusega on probleeme, saate igal ajal eelmisele ReplicaSetile tagasi pöörduda. Selleks valige soovitud RS (:rs nende nimekirja jaoks):
... ja tagasipööramine klahvikombinatsiooniga Ctrl + l. Peaksime saama teate, et kõik läks hästi:
k9s/whoami-5cfbdbb469 successfully rolled back
Ja koopiate skaleerimiseks klõpsake lihtsalt "s" (skaala) ja valige soovitud arv eksemplare:
Kesta abil saate sisestada mis tahes konteineri: selleks minge soovitud kaustale, klõpsake nuppu "s" (kest) ja valige konteiner.
Teised omadused
Loomulikult on toetatud ka logide vaatamine (valitud ressursi puhul "l"). Ja uute logide vaatamiseks pole vaja pidevalt sisestusklahvi vajutada: piisab, kui märkida (“m”) ja seejärel ainult uusi sõnumeid jälgida.
Samas aknas saate valida ka ajavahemiku logide väljastamiseks:
Selles näete ressursside arvu ja nende olekut (rohelised näitavad neid, millel on olek Running).
Veel üks K9-de lahe omadus on nn Popeye. See kontrollib kõiki ressursse teatud kriteeriumide õigsuse suhtes ja kuvab saadud "hinnangu" koos selgitustega. Näiteks näete, et näidiseid või piiranguid pole piisavalt ja mõnda konteinerit saab käivitada juurfailina ...
Helmi põhitugi on olemas. Näiteks näete klastris juurutatud väljalaseid järgmiselt.
:helm all # все
:helm $namespace # в конкретном пространстве имен
võrrelda
Isegi K9-sse sisseehitatud hei on lihtne HTTP-serveri laadimisgeneraator, alternatiiv tuntumale ab-le (ApacheBench).
Selle lubamiseks peate pordis lubama edasisuunamise. Selleks valige pod ja vajutage klahvikombinatsiooni Shift + f, minge pordi edasisuunamise alammenüüsse, kasutades varjunime "pf".
Pärast pordi valimist ja klahvikombinatsiooni Ctrl + b vajutamist käivitub võrdlusalus ise. Tema töö tulemused on talletatud /tmp ja on K9s hiljem vaatamiseks saadaval.
Võrdlusaluse konfiguratsiooni muutmiseks peate looma faili $HOME/.k9s/bench-<my_context>.yml (määratakse iga klastri jaoks).
NB: On oluline, et kõigi kataloogis olevate YAML-failide laiendused .k9s see oli täpselt .yml (.yaml ei tööta korralikult).
Konfiguratsiooni näide:
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
liides
Ressursiloendite veergude välimust muudetakse faili loomisega $HOME/.k9s/views.yml. Selle sisu näide:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Tõsi, siltide jaoks pole piisavalt veergu, mille jaoks on probleem projektis.
Veergude järgi sortimine toimub kiirklahvide abil:
Tõstuklahv + n - nime järgi;
Shift + o - sõlmede kaupa;
Shift + i - IP järgi;
Shift + a - konteineri eluea järgi;
Shift + t - taaskäivituste arvu järgi;
Shift + r - valmisoleku järgi;
Shift + c - protsessori tarbimise järgi;
Shift + m - mälutarbimise järgi.
Kui kellelegi vaikevärviskeem ei meeldi, toetab K9s seda isegi nahad. Saadaval on valmisnäidised (7 tükki). siin. Siin on näide ühest neist nahkadest (mereväes):
Плагины
Lõpuks pistikprogrammid võimaldab teil K9-de võimalusi laiendada. Olen ise kasutanud oma töös neist ainult ühte - kubectl get all -n $namespace.
See näeb välja selline. Looge fail $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 saate minna nimeruumi ja vajutada "g", et käivitada vastava käsuga:
Pluginate hulgas on näiteks integratsioonid kubectl-jq-ga ja utiliit logide vaatamiseks Ahter.
Järeldus
Minu maitse jaoks osutus K9s töötamiseks väga mugavaks: saab kiiresti harjuda kõike vajalikku otsima ilma seda kasutamata. kubectl. Mul oli hea meel logide vaate ja nende salvestamise, ressursside kiire redigeerimise, töö kiiruse üle üldiselt *, Popeye režiim osutus kasulikuks. Eraldi mainitakse võimalust luua pluginaid ja muuta rakendust vastavalt oma vajadustele.
* Kuigi suure palgimahu juures märkasin ka K9-de aeglast tööd. Sellistel hetkedel sõi utiliit Intel Xeon E2xx-st 312 tuuma ja võis isegi külmuda.
Mis on hetkel puudu? Kiire tagasipööramine eelmisele versioonile (me ei räägi RS-ist) ilma kataloogi minemata. Lisaks toimub taastumine ainult ainult ressurss: kui kustutate märkuse või sildi, peate kustutama ja taastama kogu ressursi (see on koht, kus peate minema kataloogi). Veel üks pisiasi - selliste salvestatud "varukoopiate" jaoks pole piisavalt kuupäeva.