K9s apžvalga - pažangi terminalo sąsaja, skirta Kubernetes
K9s suteikia terminalo vartotojo sąsają, skirtą bendrauti su Kubernetes klasteriais. Šio atvirojo kodo projekto tikslas – palengvinti K8s programų naršymą, stebėjimą ir valdymą. K9s nuolat stebi Kubernetes pokyčius ir siūlo greitas komandas dirbti su stebimais ištekliais.
Projektas parašytas Go ir gyvuoja daugiau nei pusantrų metų: pirmasis įsipareigojimas buvo atliktas 1 m. vasario 2019 d. Rašymo metu yra 9000+ žvaigždžių GitHub ir apie 80 bendradarbių. Pažiūrėkime, ką gali padaryti k9s?
Įdiegimas ir paleidimas
Tai yra kliento programa (susijusi su Kubernetes klasteriumi), kurią lengviausia paleisti kaip „Docker“ vaizdą:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Kai kuriems Linux platinimams ir kitoms operacinėms sistemoms taip pat yra paruoštų įdiegti paketai. Paprastai Linux sistemose galite įdiegti dvejetainį failą:
Pačiam K8 klasteriui specifinių reikalavimų nėra. Sprendžiant iš apžvalgų, programa taip pat veikia su senesnėmis Kubernetes versijomis, tokiomis kaip 1.12.
Programa paleidžiama naudojant standartinę konfigūraciją .kube/config - panašiai kaip tai daroma kubectl.
Navigacija
Pagal numatytuosius nustatymus atsidaro langas, kuriame yra numatyta kontekstui nurodyta vardų sritis. Tai yra, jei parašėte kubectl config set-context --current --namespace=test, tada atsidarys vardų erdvė test. (Žr. toliau, kaip pakeisti kontekstą / vardų erdves.)
Eiti į komandų režimas Tai daroma paspaudus ":". Po to galite valdyti k9s veikimą naudodami komandas - pavyzdžiui, norėdami peržiūrėti StatefulSets sąrašą (dabartinėje vardų erdvėje), galite įvesti :sts.
Kai kuriems kitiems Kubernetes ištekliams:
:ns — vardų erdvės;
:deploy — dislokavimas;
:ing — Patekimai;
:svc - Paslaugos.
Norėdami parodyti visą galimų peržiūrėti išteklių tipų sąrašą, yra komanda :aliases.
Taip pat patogu peržiūrėti komandų, pasiekiamų naudojant karštųjų klavišų kombinacijas esamame lange, sąrašą: norėdami tai padaryti, tiesiog spustelėkite "?".
Taip pat k9s yra paieškos režimas, į kurią eiti pakanka įvesti „/“. Su juo atliekama paieška dabartinio „lango“ turinyje. Tarkime, jei įvedėte anksčiau :ns, atidarytas vardų erdvių sąrašas. Jei jų yra per daug, norint ilgai neslinkti žemyn, pakanka įvesti lange su vardų erdvėmis /mynamespace.
Norėdami ieškoti pagal etiketes, galite pasirinkti visas ankštis norimoje vardų srityje, tada įveskite, pvz. / -l app=whoami. Gausime ankščių su šia etikete sąrašą:
Paieška veikia visų tipų languose, įskaitant žurnalus, YAML manifestų peržiūrą ir describe Norėdami gauti daugiau informacijos apie šias funkcijas, žr. toliau.
Kaip atrodo bendras navigacijos srautas?
Su komanda :ctx galite pasirinkti kontekstą:
Norint pasirinkti vardų erdvę, yra jau minėta komanda :ns, tada galite naudoti ieškomos vietos paiešką: /test.
Jei dabar pasirinksime mus dominantį išteklį (pavyzdžiui, tą patį StatefulSet), jam atsiras atitinkama informacija: kiek podų veikia su trumpa informacija apie juos.
Gali sudominti tik ankštys – tada užtenka įvesti :pod. „ConfigMaps“ atveju (:cm - norėdami pamatyti šių išteklių sąrašą), galite pasirinkti dominantį objektą ir spustelėti „u“, po kurio K9s pasakys, kas konkrečiai jį naudoja (šis CM).
Kita patogi išteklių peržiūros funkcija yra jų "rentgeno spinduliai" (rentgeno vaizdas). Šis režimas iškviečiamas komanda :xray RESOURCE ir ... lengviau parodyti, kaip tai veikia, nei paaiškinti. Štai StatefulSets iliustracija:
(Kiekvieną iš šių išteklių galima redaguoti, keisti, kurti describe.)
Ir čia yra diegimas naudojant „Ingress“:
Darbas su ištekliais
Galite gauti informacijos apie kiekvieną YAML ar jo šaltinį describe paspausdami atitinkamus sparčiuosius klavišus („y“ ir „d“ atitinkamai). Žinoma, yra ir daugiau pagrindinių operacijų: jų sąrašas ir spartieji klavišai visada matomi dėl patogios sąsajos „antraštės“ (paslėpta paspaudus Ctrl + e).
Redaguojant bet kurį išteklį (po jo pasirinkimo „e“), atidaromas aplinkos kintamuosiuose apibrėžtas teksto redaktorius (export EDITOR=vim).
Štai kaip atrodo išsamus šaltinio aprašymas (describe):
Šią išvestį (arba šaltinio YAML manifesto peržiūros išvestį) galima išsaugoti naudojant pažįstamą Ctrl + s spartųjį klavišą. Kur jis bus išsaugotas, bus žinoma iš K9s pranešimo:
Taip pat galite atkurti išteklius iš sukurtų atsarginių kopijų failų, pašalinę sistemos etiketes ir komentarus. Norėdami tai padaryti, su jais turite eiti į katalogą (:dir /tmp), tada pasirinkite norimą failą ir pritaikykite apply.
Beje, bet kuriuo metu galite grįžti prie ankstesnio ReplicaSet, jei kyla problemų dėl dabartinio. Norėdami tai padaryti, pasirinkite norimą RS (:rs jų sąrašui):
... ir atšaukti su Ctrl + l. Turėtume gauti pranešimą, kad viskas klostėsi gerai:
k9s/whoami-5cfbdbb469 successfully rolled back
Ir norėdami pakeisti kopijų mastelį, tiesiog spustelėkite „s“ (mastelė) ir pasirinkite norimą egzempliorių skaičių:
Naudodami apvalkalą galite įvesti bet kurį konteinerį: norėdami tai padaryti, eikite į norimą ankštį, spustelėkite „s“ (apvalkalas) ir pasirinkite konteinerį.
Kitos funkcijos
Žinoma, žurnalų peržiūra taip pat palaikoma ("l" pasirinktam ištekliui). O norint žiūrėti naujus žurnalus, nereikia nuolat spausti Enter: pakanka pažymėti („m“), o tada tik sekti naujus pranešimus.
Taip pat tame pačiame lange galite pasirinkti žurnalų išvesties laiko intervalą:
klavišas "1" - 1 minutę;
„2“ – 5 minutės;
„3“ – 15 minutės;
„4“ – 30 minutės;
"5" - 1 valanda;
„0“ – visą ankšties naudojimo laiką.
Specialus veikimo režimas Impulsas (komand :pulse) rodo bendrą informaciją apie „Kubernetes“ klasterį:
Jame galite pamatyti išteklių skaičių ir jų būseną (žalia spalva rodo tuos, kurie turi būseną Running).
Kita puiki K9 savybė vadinama Popajus. Ji patikrina visus išteklius, ar nėra tam tikrų teisingumo kriterijų, ir parodo gautą „įvertinimą“ su paaiškinimais. Pavyzdžiui, galite matyti, kad nėra pakankamai pavyzdžių arba apribojimų, o kai kurie konteineriai gali būti naudojami kaip root ...
Yra pagrindinis Helm palaikymas. Pavyzdžiui, taip galite pamatyti klasteryje įdiegtus leidimus:
:helm all # все
:helm $namespace # в конкретном пространстве имен
etalonas
Netgi įmontuota į K9 ei yra paprastas HTTP serverio apkrovos generatorius, geriau žinomo ab (ApacheBench) alternatyva.
Norėdami jį įjungti, turite įjungti prievado peradresavimą. Norėdami tai padaryti, pasirinkite podą ir paspauskite Shift + f, eikite į prievado peradresavimo submeniu naudodami "pf" slapyvardį.
Pasirinkus prievadą ir paspaudus Ctrl + b, prasidės pats etalonas. Jo darbo rezultatai saugomi /tmp ir juos galima peržiūrėti vėliau naudojant K9s.
Norėdami pakeisti etalono konfigūraciją, turite sukurti failą $HOME/.k9s/bench-<my_context>.yml (nustatoma kiekvienai klasteriui).
NB: Svarbu, kad visi YAML failai būtų išplėsti kataloge .k9s tai buvo tiksliai .yml (.yaml neveikia tinkamai).
Konfigūracijos pavyzdys:
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
sąsaja
Išteklių sąrašų stulpelių išvaizda pakeičiama sukuriant failą $HOME/.k9s/views.yml. Jo turinio pavyzdys:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Rūšiavimas pagal stulpelius atliekamas sparčiaisiais klavišais:
Shift + n - pagal pavadinimą;
Shift + o - pagal mazgus;
Shift + i - pagal IP;
Shift + a - pagal konteinerio eksploatavimo laiką;
Shift + t - pagal pakartotinių paleidimų skaičių;
Shift + r - pagal parengties būseną;
Shift + c - pagal procesoriaus suvartojimą;
Shift + m - pagal atminties suvartojimą.
Jei kam nepatinka numatytoji spalvų schema, K9s netgi palaiko odos. Yra paruoštų pavyzdžių (7 vnt.). čia. Štai vienos iš šių odų pavyzdys (laivyne):
Papildiniai
Galiausiai, įskiepių leidžia išplėsti K9 galimybes. Aš pats savo darbe naudojau tik vieną iš jų - kubectl get all -n $namespace.
Tai atrodo taip. Sukurkite failą $HOME/.k9s/plugin.yml su tokiu turiniu:
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"
Dabar galite eiti į vardų erdvę ir paspausti „g“, kad vykdytumėte atitinkamą komandą:
Tarp įskiepių yra, pavyzdžiui, integracijos su kubectl-jq ir žurnalų peržiūros įrankis laivagalis.
išvada
Mano skoniui su K9s pasirodė labai patogu dirbti: galima greitai priprasti ieškoti visko, ko reikia nenaudojant. kubectl. Mane nudžiugino žurnalų vaizdas ir jų išsaugojimas, greitas išteklių redagavimas, darbo greitis apskritai *, Popeye režimas pasirodė naudingas. Ypatingas paminėjimas yra galimybė kurti papildinius ir modifikuoti programą, kad ji atitiktų jūsų poreikius.
* Nors, esant dideliam rąstų kiekiui, pastebėjau ir lėtą K9s veikimą. Tokiais momentais programa „suvalgė“ 2 branduolius iš „Intel Xeon E312xx“ ir netgi galėjo užšalti.
Ko šiuo metu trūksta? Greitas grįžimas į ankstesnę versiją (mes nekalbame apie RS) nesikreipiant į katalogą. Be to, atsigavimas vyksta tik tik išteklius: jei ištrinsite anotaciją ar etiketę, turėsite ištrinti ir atkurti visą šaltinį (čia reikia eiti į katalogą). Dar viena smulkmena – tokioms išsaugotoms „atsarginėms kopijoms“ neužtenka datos.