Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

K9 pruža terminalski korisnički interfejs za interakciju sa Kubernetes klasterima. Cilj ovog projekta otvorenog koda je da olakša navigaciju, praćenje i upravljanje aplikacijama u K8s. K9s konstantno prati promjene u Kubernetesu i pruža brze komande za rad sa nadgledanim resursima.

Projekat je napisan na Go-u i postoji više od godinu i po dana: prvi angažman je napravljen 1. februara 2019. godine. U trenutku pisanja, ima više od 9000 zvjezdica GitHub i oko 80 saradnika. Hajde da vidimo šta k9s može?

Instalacija i pokretanje

Ovo je klijentska (u odnosu na Kubernetes klaster) aplikacija, koju je najlakše pokrenuti kao Docker sliku:

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

Za neke Linux distribucije i druge operativne sisteme postoje i spremni za instalaciju paketi. Općenito, za Linux sisteme možete instalirati binarnu datoteku:

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

Ne postoje posebni zahtjevi za sam klaster K8s. Sudeći po recenzijama, aplikacija radi i sa starijim verzijama Kubernetesa kao što je 1.12.

Aplikacija počinje koristiti standardnu ​​konfiguraciju .kube/config - slično kako to radi kubectl.

Навигация

Podrazumevano, otvara se prozor sa standardnim prostorom imena specificiranim za kontekst. Odnosno, ako ste napisali kubectl config set-context --current --namespace=test, tada će se otvoriti imenski prostor test. (Pogledajte ispod o promjeni konteksta/imenskih prostora.)

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Idi komandni mod vrši se klikom na “:”. Zatim možete kontrolirati kako k9s radi pomoću naredbi - na primjer, da biste vidjeli listu StatefulSets (u trenutnom imenskom prostoru) možete unijeti :sts.

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Za neke druge Kubernetes resurse:

  • :ns - Imenski prostori;
  • :deploy — Raspoređivanja;
  • :ing - Ingress;
  • :svc - Usluge.

Za prikaz kompletne liste tipova resursa dostupnih za pregled postoji komanda :aliases.

Takođe je zgodno pogledati listu komandi dostupnih preko kombinacija prečica u trenutnom prozoru: da biste to uradili, samo kliknite na „?”.

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Takođe u k9s postoji način pretraživanja, da biste otišli na koji samo trebate unijeti “/”. Pretražuje sadržaj trenutnog „prozora“. Na primjer, ako ste prethodno unijeli :ns, imate otvorenu listu imenskih prostora. Ako ih ima previše, onda kako ne biste dugo pomicali prema dolje, samo unesite u prozor s imenskim prostorima /mynamespace.

Za pretraživanje prema oznakama, možete odabrati sve podove u željenom imenskom prostoru, a zatim unijeti npr. / -l app=whoami. Dobit ćemo listu mahuna sa ovom oznakom:

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Pretraživanje radi u svim vrstama prozora, uključujući dnevnike, pregled YAML manifesta i describe za resurse - pogledajte ispod za više informacija o ovim mogućnostima.

Kako izgleda ukupni tok navigacije?

Pomoću naredbe :ctx možete odabrati kontekst:

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Za odabir imenskog prostora postoji već spomenuta komanda :ns, a zatim možete koristiti pretragu za željenim prostorom: /test.

Ako sada odaberemo resurs koji nas zanima (na primjer, isti StatefulSet), za njega će se pojaviti odgovarajuća informacija: koliko podova radi s kratkim informacijama o njima.

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Samo mahune mogu biti interesantne - tada samo uđite :pod. U slučaju ConfigMaps (:cm - za listu ovih resursa) možete odabrati objekat od interesa i kliknuti na “u”, nakon čega će vam K9s reći ko ga tačno (ovaj CM) koristi.

Još jedna pogodna karakteristika za pregled resursa je njihova "Rentgen" (rendgenski prikaz). Ovaj mod se poziva naredbom :xray RESOURCE i... lakše je pokazati kako radi nego objasniti. Evo ilustracije za StatefulSets:

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes
(Svaki od ovih resursa se može uređivati, mijenjati, praviti describe.)

A evo i implementacije sa Ingressom:

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Rad sa resursima

Informacije o svakom resursu mogu se dobiti u YAML-u ili njegovom describe pritiskom na odgovarajuće prečice na tastaturi (“y” i “d” respektivno). Postoje, naravno, još jednostavnije operacije: njihova lista i prečice na tastaturi su uvek vidljive zahvaljujući praktičnom „zaglavlju“ u interfejsu (skrivenim pritiskom na Ctrl + e).

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Prilikom uređivanja bilo kojeg resursa (“e” nakon što ga odaberete), uređivač teksta je definiran u varijablama okruženja (export EDITOR=vim).

A evo kako izgleda detaljan opis resursa (describe):

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Ovaj izlaz (ili rezultat pregleda YAML manifesta resursa) može se sačuvati upotrebom uobičajene prečice na tastaturi Ctrl + s. Gdje će biti sačuvan znat će se iz K9s poruke:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

Također možete vratiti resurse iz kreiranih datoteka sigurnosne kopije tako što ćete prvo ukloniti sistemske oznake i bilješke. Da biste to učinili, morat ćete otići u direktorij s njima (:dir /tmp), zatim odaberite željeni fajl i primijenite apply.

Usput, u svakom trenutku možete se vratiti na prethodni ReplicaSet ako postoje problemi sa trenutnim. Da biste to učinili, morate odabrati željeni RS (:rs za njihovu listu):

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

... i vratite nazad koristeći Ctrl + l. Trebali bismo dobiti obavještenje da je sve bilo uspješno:

k9s/whoami-5cfbdbb469 successfully rolled back

A da biste skalirali replike, samo kliknite na “s” (razmjer) i odaberite potreban broj kopija:

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Možete ući u bilo koji od kontejnera pomoću ljuske: da biste to učinili, idite na željeni pod, kliknite na “s” (ljuska) i odaberite kontejner.

Ostale karakteristike

Naravno, podržano je i pregledanje dnevnika (“l” za odabrani resurs). A da biste pregledali nove dnevnike, nema potrebe stalno pritiskati Enter: samo označite (“m”), a zatim pratite samo nove poruke.

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Također u istom prozoru možete odabrati vremenski raspon za izlaz dnevnika:

  • taster “1” - za 1 minut;
  • “2” - 5 minuta;
  • “3” - 15 minuta;
  • “4” - 30 minuta;
  • "5" - 1 sat;
  • “0” — za cijeli životni vijek mahune.

Poseban režim rada Puls (komanda :pulse) prikazuje opšte informacije o Kubernetes klasteru:

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

U njemu možete vidjeti broj resursa i njihov status (oni koji imaju status su prikazani zelenom bojom Running).

Još jedna zanimljiva karakteristika K9s se zove Popeye. Provjerava sve resurse za određene kriterije ispravnosti i prikazuje rezultirajuću “ocenu” sa objašnjenjima. Na primjer, možete vidjeti da nema dovoljno uzoraka ili ograničenja, a neki kontejner se može pokrenuti kao root...

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Postoji osnovna podrška za Helm. Na primjer, ovako možete vidjeti izdanja raspoređena u klaster:

:helm all # все
:helm $namespace # в конкретном пространстве имен

reper

Čak su ga ugradili u K9 ej je jednostavan generator opterećenja za HTTP server, alternativa poznatijem ab (ApacheBench).

Da biste to omogućili, morat ćete omogućiti prosljeđivanje porta u pod. Da biste to uradili, odaberite pod i pritisnite Shift + f, idite na podmeni port-forward koristeći pseudonim “pf”.

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Nakon što odaberete port i pritisnete Ctrl + b, sam benchmark će se pokrenuti. Rezultati njegovog rada su pohranjeni u /tmp i dostupni su za kasnije gledanje u K9s.

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes
Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Da biste promijenili konfiguraciju benčmarka, potrebno je da kreirate datoteku $HOME/.k9s/bench-<my_context>.yml (definirano za svaki klaster).

NB: Važno je da ekstenzije svih YAML datoteka u direktoriju .k9s bilo je tačno .yml (.yaml ne radi ispravno).

Primjer konfiguracije:

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

sučelje

Izgled kolona za liste resursa se mijenja kreiranjem datoteke $HOME/.k9s/views.yml. Primjer njegovog sadržaja:

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

Istina, nema dovoljno kolone za etikete, za šta postoji pitanje u projektu.

Sortiranje po kolonama vrši se pomoću prečica na tastaturi:

  • Shift + n - po imenu;
  • Shift + o - po čvorovima;
  • Shift + i - po IP;
  • Shift + a - prema vijeku trajanja kontejnera;
  • Shift + t — po broju ponovnih pokretanja;
  • Shift + r - po statusu spremnosti;
  • Shift + c - prema potrošnji CPU-a;
  • Shift + m - prema potrošnji memorije.

Ako se nekome ne sviđa zadana shema boja, K9s čak podržava kože. Dostupni su gotovi primjerci (7 komada). ovdje. Evo primjera jednog od ovih skinova (u mornarici):

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Dodaci

Na kraju, dodaci omogućavaju vam da proširite mogućnosti K9s. I sam sam koristio samo jedan od njih u svom radu - kubectl get all -n $namespace.

To izgleda ovako. Kreirajte fajl $HOME/.k9s/plugin.yml sa ovakvim sadržajem:

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"

Sada možete otići u imenski prostor i pritisnuti “g” da izvršite odgovarajuću naredbu:

Pregled k9s - naprednog terminalskog interfejsa za Kubernetes

Među dodacima postoje, na primjer, integracije sa kubectl-jq i uslužni program za pregled dnevnika kruto.

zaključak

Za moj ukus, K9s se pokazao vrlo praktičnim za korištenje: s njim se možete brzo naviknuti da pronađete sve što vam je potrebno bez korištenja kubectl. Bio sam zadovoljan pregledom dnevnika i njihovim spremanjem, brzim uređivanjem resursa, brzinom rada općenito*, način rada Popeye se pokazao korisnim. Posebno treba spomenuti mogućnost kreiranja dodataka i prilagođavanja aplikacije prema vašim potrebama.

* Iako sam, uz veliku količinu dnevnika, primijetio i spor rad K9. U takvim trenucima, uslužni program je "pojeo" 2 jezgra Intel Xeon E312xx i mogao bi se čak i zamrznuti.

Šta trenutno nedostaje? Brzi povratak na prethodnu verziju (ne govorimo o RS) bez odlaska u direktorij. Osim toga, restauracija se događa samo za ukupno resurs: ako ste izbrisali bilješku ili oznaku, morat ćete izbrisati i vratiti cijeli resurs (ovdje ćete morati otići u direktorij). Još jedna sitnica je što nedostaje datum tako sačuvanih „bekapa“.

PS

Pročitajte i na našem blogu:

izvor: www.habr.com

Dodajte komentar