K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

K9s pakub terminali kasutajaliidese, et suhelda Kubernetes'i klastritega. Selle avatud lÀhtekoodi projekti eesmÀrk on hÔlbustada navigeerimist K8s rakendustes, nende jÀlgimist ja haldamist. K9s jÀlgib pidevalt muutusi Kubernetes'is ja pakub kiireid kÀske jÀlgitavate ressursside haldamiseks.

Projekt on kirjutatud Go keeles ja on tegutsenud ĂŒle pooleteise aasta: esimene commit tehti 1. veebruaril 2019. Artikli kirjutamise hetkel on ĂŒle 9000 tĂ€he ja umbes 80 kaastöötajat. GitHub Vaatame, mida k9s oskab?

Paigaldamine ja kÀivitamine

See on kliendirakendus (Kubernetes'i klastri suhtes), mida on kÔige lihtsam kÀivitada kui Docker'i kujund:

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

MĂ”nede Linux'i distributsioonide ja muude opsĂŒsteemide jaoks on ka valmis installimiseks paketid. paketidÜldiselt vĂ”ib Linux'i sĂŒsteemide jaoks paigaldada 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

Klaster K8s jaoks ei ole mingeid spetsiifilisi nÔudeid. Tagasiside pÔhjal töötab rakendus ka vanemate Kubernetes'i versioonidega, nagu 1.12.

Rakendus kĂ€ivitub standardse konfi kasutamisega .kube/config — sarnaselt sellele, mida teeb kubectl.

Navigeerimine

Vaikimisi avatakse aken standardse namespace'iga, mis on mÀrgitud kontekstiks. See tÀhendab, et kui olete kirjutanud kubectl config set-context --current --namespace=test, siis avataksegi namespace test. (Konteksti/nimi ruumide vahetamisest lugege allpool.)

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Liikumine kĂ€skude reĆŸiimi toimub vajutades «:». PĂ€rast seda saate k9s-i tööd juhtida kĂ€skudega — nĂ€iteks, et vaadata StatefulSets'i loendit (praeguses nime ruumis), saate sisestada :sts.

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

MÔnede teiste Kubernetes'i ressursside jaoks:

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

Kogu ressursside tĂŒĂŒpide loendi kuvamiseks on kĂ€sk :aliases.

Mugav on vaadata ka kÀskude loendit, mis on saadaval kuumade klahvikombinatsioonide kaudu praeguses aknas: selleks piisab, kui vajutada «?».

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

K9s-is on ka otsingu reĆŸiim, millele pÀÀsemiseks piisab, kui sisestate «/». Sellega otsitakse praeguse «akna» sisu. Oletame, et olete enne seda sisestanud :ns, teil, et teil on nimekirja nimesid. Kui neid on liialt palju, et mitte pikalt all kerida, piisab, kui kirjutad namespaces aknas. /mynamespace.

Siltide otsimiseks saad valida kÔik pod'id soovitud nimes, seejÀrel tippida nÀiteks / -l app=whoami. Me saame nimekirja pod'idest, millel on see silt:

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Otsing toimib kĂ”igis akendes, sealhulgas logides, YAML-manifeste vaadates ja describe ressursside jaoks — lisainfot nende vĂ”imaluste kohta vt allpool.

Milline on ĂŒldine tegevuste jĂ€rjestus navigeerimiseks?

KĂ€sk :ctx saad valida konteksti:

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Nimespetsi valimiseks on juba mainitud kÀsk :ns, seejÀrel saad kasutada otsingut vajaliku nimespetsi jaoks: /test.

Kui nĂŒĂŒd valitakse huvipakkuv ressurss (nĂ€iteks sama StatefulSet), kuvatakse vastav teave: kui palju pod'e on kĂ€imas koos nende lĂŒhikese teabega.

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

VĂ”ib olla huvipakkuvad ainult pod'id — siis piisab, kui kirjutada :pod. ConfigMap'ide puhul (:cm — nende ressursside nimekirja jaoks) saad valida huvipakkuva objekti ja vajutada 'u', mille jĂ€rel K9s nĂ€itab, kes konkreetset (seda CM) kasutab.

Veel ĂŒks mugav funktsioon ressursside vaatamiseks — nende "röntgen" (XRay view). Selline reĆŸiim kĂ€ivitatakse kĂ€suga :xray RESOURCE ja... on lihtsam nĂ€idata, kuidas see töötab, kui selgitada. Siin on illustreeriv nĂ€ide StatefulSets'i kohta:

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks
(Iga neid ressursse saab redigeerida, muuta, teha describe.)

Siin on Deployment koos Ingress'iga:

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Töötamine ressurssidega

Iga ressursi kohta on vÔimalik saada teavet YAML formaadis vÔi tema describe vajutades vastavaid klaviatuurikombinatsioone («y» ja «d» vastavalt). PÔhitegevusi on muidugi veel rohkem: nende loetelu ja klaviatuurikombinatsioonid on alati nÀhtavad tÀnu mugavale «pealkirjale» liideses (mis peidetakse, vajutades Ctrl + e).

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Ressursi redigeerimise korral (vajutades «e» pÀrast selle valimist) avaneb tekstiredaktor, mis on mÀÀratud keskkonnamuutujates (export EDITOR=vim).

Siin on, kuidas ressursi ĂŒksikasjalik kirjeldus vĂ€lja nĂ€eb (describe):

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Sellise vÀljundi (vÔi YAML-maniifesti kuvamise vÀljundi) saab salvestada tavalise klaviatuurikombinatsiooni Ctrl + s abil. Kuhu see salvestatakse, selgub K9s'i sÔnumist:

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

Loodud varufailidest saab ka ressursse taastada, eemaldates eelnevalt sĂŒsteemi sildid ja annotatsioonid. Selleks tuleb minna kaustadesse, kus need asuvad (:dir /tmp), see valitud fail ja rakenda rakenda.

Muide, igal ajal on vÔimalik tagasi minna varasemale ReplicaSet'ile, kui praegusega on probleeme. Selleks tuleb valida soovitud RS (:rs nende loendist):

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks


 ja teostada rollback klahv kombinatsiooniga Ctrl + l. Peame saama teate, et kÔik on lÀinud edukalt:

k9s/whoami-5cfbdbb469 on edukalt tagasiviidud

Ja et koopiaid skaleerida, piisab, kui vajutada «s» (scale) ja valida soovitud eksemplaride arv:

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Igas konteineris saab shell'i kaudu sisse minna: selleks liikuda soovitud pod'ile, vajutada «s» (shell) ja valida konteiner.

Teised vÔimalused

Loomulikult toetatakse ka logide vaatamist («l» valitud ressursi jaoks). Ja et vaadata uusi logisid, ei pea pidevalt vajutama Enter: piisab, kui teha mÀrgistus («m»), pÀrast mida jÀlgida ainult uusi sÔnumeid.

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Samuti saab selles aknas valida ajavahemiku logide kuvamiseks:

  • klahv «1» — 1 minuti jooksul;
  • «2» — 5 minutit;
  • «3» — 15 minutit;
  • «4» — 30 minutit;
  • «5» — 1 tund;
  • «0» — kogu pod'i eluaja jooksul.

Pulse'i erireĆŸiim (kĂ€sk :pulse) nĂ€itab ĂŒldteavet Kubernetes'i klastrist:

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Selles saab nÀha ressursside arvu ja nende seisundit (roheline nÀitab neid, millel on staatus) Running).

Veel ĂŒks huvitav funktsioon K9s kannab nime Popeye. See kontrollib kĂ”iki ressursse teatud korrektsuse kriteeriumide jĂ€rgi ja kuvab saadud "hindamise" koos selgitustega. NĂ€iteks saab nĂ€ha, et puudu on vahemikud vĂ”i piirangud, ning mĂ”ni konteiner vĂ”ib kĂ€ivituda root'i all


K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Helmi pÔhitoe olemasolu. NÀiteks saab vaadata klastrisse paigaldatud vÀljalaskeid:

:helm all # kÔik
:helm $namespace # konkreetses nimede ruumis

Benchmark

K9s on sisseehitatud isegi hey — lihtne koormuse generaator HTTP-serverile, alternatiiv tuntud ab-le (ApacheBench).

Selle sisselĂŒlitamiseks on vajalik port-forward aktiviseerimine pod'is. Selleks valime pod'i ja vajutame Shift + f, seejĂ€rel liigume port-forward alammenĂŒĂŒsse alias'iga «pf».

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

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

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks
K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Benchmark'i konfiguratsiooni muutmiseks tuleb luua fail $HOME/.k9s/bench-.yml (mÀÀratakse igas klastris eraldi).

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

Konfiguratsiooni nÀidis:

benchmark'id:
  defaults:
    # SĂŒsteemi lĂ”ime arv
    concurrency: 2
    # KĂŒsimuste arv
    requests: 1000
  konteinerid:
    # Seaded konteineri jaoks benchmark'iga
    # Kase on mÀÀritud kui 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
 teenused:
    # Benchmark'i vÔib viia lÀbi teenustes nagu NodePort ja LoadBalancer
    # SĂŒntaks: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

Liides

Ressurside loendi veergude vÀlimus muutub 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, veergu siltide kohta jÀÀb puudu, mille kohta on probleem projektis.

Veergude jÀrgi sorteerimiseks kasutatakse klaviatuuri kombinatsioone:

  • 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 — valmiduse staatuse jĂ€rgi;
  • Shift + c — CPU kasutuse jĂ€rgi;
  • Shift + m — mĂ€lu kasutuse jĂ€rgi.

Kui aga kellegile ei meeldi vaikimisi vĂ€rvitoonid, toetab K9s isegi nahkasid. Valmis nĂ€ited (7 tĂŒkki) on saadaval siit. Siin on ĂŒks sellise nahka nĂ€ide (laevastikus):

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Pluginad

LĂ”puks, pluginate laiendavad K9s-i vĂ”imalusi. Olen ise kasutanud töös vaid ĂŒht neist — kubectl get all -n $namespace.

See nÀeb vÀlja jÀrgmine. 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 nimekonda ja vajutada «g», et vastava kĂ€suga edasi minna:

K9s ĂŒlevaade — tĂ€iustatud terminali liides Kubernetes'e jaoks

Pluginite seas on nÀiteks integratsioonid kubectl-jq ja logide vaatamise utiliidiga stern.

KokkuvÔte

Minu arvates on K9s töö tegemisel vĂ€ga mugav: selle abil harjub kiiresti leidma vajadused ilma kasutamata kubectl. Logide vaatamine ja nende salvestamine, kiire ressursside redigeerimine ja töö kiirus olid kokkuvĂ”ttes kasulikud, samuti osutus kasulikuks Ń€Đ”Đ¶ĐžĐŒ Popeye. Eraldi mainimist vÀÀrivad pluginite loomise ning rakenduse kohandamise vĂ”imalused.

* Kuigi suurt logi töötledes on K9s aeg-ajalt aeglane. Sellistel hetkedel kasutas utiliit isegi kaks Intel Xeon E312xx sĂŒdamikku ja vĂ”is isegi hanguda.

Mida hetkel puudub? Kiire tagasimine minevikku (mitte RS) ilma katalooge sisenemata. Lisaks toimub taastamine vaid kogu ressursi osas: kui kustutatud on annotatsioon vĂ”i silt, tuleb kustutada ja taastada kogu ressurss (siin tuleb tĂ”epoolest minna katalooge). Veel ĂŒks pisiasi - puudub salvestatud 'backupide' kuupĂ€ev.

P.S.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster