K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

K9s pakub terminali kasutajaliidest Kubernetes klastrite haldamiseks. Selle Open Source projekti eesmÀrk on lihtsustada rakenduste navigeerimist K8s keskkonnas, nende jÀlgimist ja haldamist. K9s jÀlgib pidevalt Kubernetes'e muudatusi ja pakub kiireid kÀsklusi jÀlgitavate ressursside haldamiseks.

Projekt on kirjutatud Go keeles ja see on eksisteerinud juba ĂŒle pooleteise aasta: esimene commit tehti 1. veebruaril 2019. Artikli kirjutamise ajal on sellele antud ĂŒle 9000 tĂ€he GitHub ja ligi 80 kaastöötajat. Vaatame, mida k9s suudab?

Installeerimine ja kÀivitamine

See on kliendi (Kubernetes klastrile) rakendus, mida on kÔige lihtsam kÀivitada Docker pildina:

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

MĂ”nede Linuxi distributsioonide ja teiste operatsioonisĂŒsteemide jaoks on samuti valmis installivad pakett. Üldiselt saab Linuxi sĂŒsteemidele installida binaarfaili:

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

Spetsiifilisi nÔudeid klastrile K8s ei ole. Tagasiside pÔhjal töötab rakendus ka vanade Kubernetes versioonidega, nagu 1.12.

Rakendust kĂ€ivitada, kasutades standardset konfguratsioonifaili .kube/config — sarnaselt sellele, kuidas seda teeb kubectl.

Navigeerimine

Koheselt avatakse aken, kus on vaikimisi tÀhtsuse nimi, mis on mÀÀratud konteksti jaoks. Kui olete mÀÀranud kubectl config set-context --current --namespace=test, siis avatakse see nimi test. (Kontekstide/nime ruumide vahetamisest vt allpool.)

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Liikumiseks kĂ€skude reĆŸiimi tuleb vajutada «:». PĂ€rast seda saate k9s'i tööprotsesse hallata kĂ€skudega — nĂ€iteks saab vÀÀrtuse StatefulSets vaatamiseks sisestada :sts.

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

MÔnede teiste Kubernetes ressursside jaoks:

  • :ns — Nime ruumid;
  • :deploy — Rakendused;
  • :ing — Sisenemised;
  • :svc — Teenused.

Kuna need on tĂ€ielik loetelu ressursitĂŒĂŒpide vaatamiseks, on kĂ€sk :aliases.

Mugavalt saab vaadata ka kÀskude nimekirja, mis on saadaval kuumade klahvikombinatsioonide raames praeguses aknas: selleks piisab, kui vajutada «?».

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

K9s'is on samuti otsingureĆŸiim, kuhu liikumiseks tuleb lihtsalt sisestada «/». Sellega otsitakse praeguse „akna” sisu. Oletame, et kui te juba sisestasite :ns, avate nimekiri nimevaid ruume. Kui neid on liiga palju, et pikka aega alla kerida, piisab nimekiri aknas sisse kirjutamisest /mynamespace.

Labelsit otsimisel saab valida kÔik pod'id soovitud nimede ruumis ja seejÀrel sisestada nÀiteks / -l app=whoami. Saame nimekirja pod'idest, millel on see silt:

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Otsing toimib kĂ”igis akend tĂŒĂŒps, sealhulgas logides, YAML-manifestide vaatamises ja describe resursside jaoks — rohkem nende vĂ”imaluste kohta vt allpool.

Kuidas nĂ€eb ĂŒldiselt vĂ€lja navigeerimise jĂ€rjestus?

KÀsk :ctx vÔimaldab valida konteksti:

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Nimede ruumi valimiseks on juba varem mainitud kÀsk :ns, ja seejÀrel saab kasutada otsingut soovitud nime ruumi jaoks: /test.

Kui nĂŒĂŒd valida huvipakkuv ressurss (nĂ€iteks sama StatefulSet), kuvatakse selle kohta vastav teave: kui palju pod'e on kĂ€imas ja lĂŒhikesed andmed nende kohta.

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

VĂ”ibolla huvitavad ainult pod'id — siis piisab, kui sisestada :pod. ConfigMap’ide puhul (:cm — nende ressursside nimekiri) saab valida huvipakkuva objekti ja vajutada "u", mille jĂ€rel K9s ĂŒtleb, kes konkreetselt seda (seda CM) kasutab.

Veel ĂŒks mugav funktsioon ressursside vaatamiseks on nende "rentgen" (XRay view). Selle reĆŸiimi aktiveerib kĂ€sk :xray RESOURCE ja... lihtsam on nĂ€idata, kuidas see töötab, kui seletada. Siin on illustreerimine StatefulSets'i jaoks:

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele
(Iga neid ressurssidest saab redigeerida, muuta, teha describe.)

Ja siin on Deployment koos Ingressiga:

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Töötamine ressurssidega

Iga ressursi kohta saab teavet YAML-formaadis vÔi selle describe vastavate klahvikombinatsioonide vajutamisega ("y" ja "d" vastavalt). Loomulikult on veel rohkem pÔhitegevusi: nende nimekiri ja klahvikombinatsioonid on alati nÀhtavad tÀnu mugavale "peakirjale" liideses (peidetakse vajutades Ctrl + e).

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Iga ressursi redigeerimisel ("e" pÀrast valimist) avatakse tekstiredaktor, mis on mÀÀratud keskkonnamuutujates (export EDITOR=vim).

Nii nĂ€eb vĂ€lja ressursi ĂŒksikasjalik kirjeldus (describe):

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Sellist vÀljundit (vÔi vÀljundit YAML-manifesti vaatamisest) saab salvestada tuttava klahvikombinatsiooni Ctrl + s kasutades. Kuhu see salvestatakse, selgub K9s teatest:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml salvestatud edukalt!

Loodud varufailidest saab taastada ressursse, eemaldades eelnevalt sĂŒsteemi etiketid ja annotatsioonid. Selleks tuleb minna direktoriumi, kus need asuvad (:dir /tmp), seejĂ€rel valida vajalik fail ja rakendada apply.

Muide, igal ajal on vĂ”imalik tagasi lĂŒĂŒa ka eelnevale ReplicaSet'ile, kui praegusega on probleeme. Selleks tuleb valida vajalik RS (:rs nende nimekirjast):

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele


ja teostada rollback kombinatsiooniga Ctrl + l. Me peaksime saama teate, et kÔik lÀks edukalt:

k9s/whoami-5cfbdbb469 successfully rolled back

Ja et koopiaid skaleerida, piisab, kui vajutada „s” (scale) ja valida vajalik eksemplaride arv:

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Igas konteineris on vĂ”imalik shelliga sisse logida: selleks minge soovitud pod'i juurde, vajutage „s” (shell) ja valige konteiner.

Muud vÔimalused

TĂ”epoolest, toetatakse ka logide vaatamist („l” valitud ressursi jaoks). Ja et vaadata uusi logisid, pole pidevalt vaja vajutada Enter: piisab, kui teha mĂ€rgistamine („m”), pĂ€rast mida jĂ€lgite ainult uusi sĂ”numeid.

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Samuti saab samas aknas valida ajavahemiku logide vÀljastamiseks:

  • klahv „1” — 1 minuti jooksul;
  • „2” — 5 minutit;
  • „3” — 15 minutit;
  • „4” — 30 minutit;
  • „5” — 1 tund;
  • „0” — kogu pod’i eluaja jooksul.

Eraldi tööreĆŸiim Pulse (kommando :pulse) nĂ€itab ĂŒldteavet Kubernetes klastrist:

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Selles saab nÀha ressursside arvu ja nende olekut (rohelisega kuvatakse need, millel on staatus KÀimas).

Veel ĂŒks huvitav K9s funktsioon kannab nime Popeye. See kontrollib kĂ”iki ressursse teatud korrektsuse kriteeriumite jĂ€rgi ja vĂ€ljastab saadud „hinnangu” koos selgitustega. NĂ€iteks vĂ”ib nĂ€ha, et puuduvad proovid vĂ”i piirangud, ja mĂ”ni konteiner vĂ”ib kĂ€ivituda root'ina...

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Toetatakse ka pÔhitoetust Helm. NÀiteks saab vaadata klastrisse juurutatud vabastusi:

:helm all # kÔik
:helm $namespace # konkreetse nimespetsiifilise jaoks

Benchmark

K9s on isegi integreeritud hey — see on lihtne HTTP-serverile koormuse generaator, alternatiiv tuntud ab (ApacheBench) suhtes.

Selle kĂ€ivitamiseks on vajalik port-forward aktiveerimine pod'is. Selleks valime pod'i ja vajutame Shift + f, liikudes port-forward alamvalikusse aliasega „pf”.

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

PÀrast pordi valimist ja Ctrl + b vajutamist kÀivitub ise benchmark. Selle töö tulemused salvestatakse /tmp ja on saadaval edasiseks vaatamiseks K9s-is.

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele
K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Benchmarki konfiguratsiooni muutmiseks tuleb luua fail $HOME/.k9s/bench-.yml (mÀÀratakse iga klastrile).

NB: Oluline on, et kÔikide YAML-failide laiendid kaustas .k9s oleks tÀpselt .yml (.yaml ei tööta korrektselt).

Konfiguratsiooni nÀidis:

tulemused:
  vaikeparameetrid:
    # Ühenduste arv
    concurrency: 2
    # KĂŒsimuste arv
    requests: 1000
  konteinerid:
    # Seaded bÀnkmurda konteineri jaoks
    # Kontainer mÀÀratletakse kui namespace/pod-nimi:container-nimi
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 teenused:
    # BÀnkmurda saab lÀbi viia NodePort ja LoadBalancer teenustes
    # SĂŒntaks: namespace/teenuse-nimi
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

Liides

Ressursside loendi veergude vÀlimus muudetakse faili loomisega $HOME/.k9s/views.yml. NÀide selle sisust:

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

TÔsi, veergude jÀrgi sildi puudumise kohta on olemas probleem projektis.

Veergude sortimine toimub klaviatuurikombinatsioonide abil:

  • Shift + n — nime jĂ€rgi;
  • Shift + o — sĂ”lmede jĂ€rgi;
  • Shift + i — IP jĂ€rgi;
  • Shift + a — konteineri eluea jĂ€rgi;
  • Shift + t — taaskĂ€ivituste arvu jĂ€rgi;
  • Shift + r — valmisoleku staatuse jĂ€rgi;
  • Shift + c — CPU tarbimise jĂ€rgi;
  • Shift + m — mĂ€lu tarbimise jĂ€rgi.

Kuid kui kellelegi ei meeldi vaikimisi vĂ€rvilahendus, toetab K9s isegi nahkasid. Valmis nĂ€idised (7 tk) on saadaval siin. Siin on nĂ€ide ĂŒhest sellisest nahkade (in the navy):

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Pluginad

LĂ”puks pluginad laiendada K9s vĂ”imalusi. Isiklikult olen kasutanud vaid ĂŒhte neist — kubectl get all -n $namespace.

See nÀeb vÀlja selline. Loome faili $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 saab liikuda nimede ruumi ja vajutada "g" vastava kĂ€su tĂ€itmiseks:

K9s ĂŒlevaade – tĂ€iustatud terminali liides Kubernetes’ele

Pluginate seas on nÀiteks integreerimised kubectl-jq ja logide vaatamise utiliidiga stern.

KokkuvÔte

Minu arust on K9s töös vĂ€ga mugav: harjub ĂŒsna kiiresti kĂ”ike vajalikku otsima ilma kubectl. Meeldis logide vaatamine ja nende salvestamine, ressursside kiire redigeerimine, ĂŒldine töö kiirus*, osutus kasulikuks Popeye reĆŸiim. Eraldi vÀÀrivad mĂ€rkimist pluginade loomise vĂ”imalused ja rakenduse kohandamine vastavalt oma vajadustele.

* Kuigi olen suurte logide mahtude puhul mÀrganud K9s aeglast tööd. Sellistel hetkedel kasutas utiliit isegi 2 Intel Xeon E312xx tuuma ja vÔis isegi hanguda.

Mida hetkel puudub? Kiire tagasipöördumine eelmisele versioonile (see ei puuduta RS) ilma kaustasse minekuta. Lisaks toimub taastamine ainult kogu ressursi jaoks: kui olete eemaldanud annotatsiooni vÔi sildi, tuleb eemaldada ja taastada kogu ressurss (siin tuleb minna kausta). Teine pisiasi - puudub selliste salvestatud "bÀkkapide" kuupÀev.

P.S.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster