Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

K9 pruža terminalsko korisničko sučelje za interakciju s Kubernetes klasterima. Cilj ovog Open Source projekta je olakšati navigaciju, nadzor i upravljanje aplikacijama u K8s. K9s neprestano prati promjene u Kubernetesu i nudi brze naredbe za rad s nadziranim resursima.

Projekt je napisan u Go-u i postoji više od godinu i pol dana: prvi commit napravljen je 1. veljače 2019. U vrijeme pisanja, na njemu je bilo 9000+ zvjezdica GitHub i oko 80 suradnika. Da vidimo što 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 sustave postoje i spremni za instalaciju paketi. Općenito, za Linux sustave 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 poput 1.12.

Aplikacija se pokreće pomoću standardne konfiguracije .kube/config - slično kako to radi kubectl.

Navigacija

Prema zadanim postavkama otvara se prozor sa zadanim prostorom imena navedenim za kontekst. Odnosno, ako ste napisali kubectl config set-context --current --namespace=test, otvorit će se imenski prostor test. (Pogledajte dolje za promjenu konteksta/prostora imena.)

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Ići zapovjedni način rada vrši se pritiskom na ":". Nakon toga možete kontrolirati rad k9s pomoću naredbi - na primjer, za pregled popisa StatefulSets (u trenutnom imenskom prostoru), možete unijeti :sts.

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Za neke druge Kubernetes resurse:

  • :ns — prostori imena;
  • :deploy — raspoređivanja;
  • :ing — Ulazi;
  • :svc — Usluge.

Za prikaz cjelovitog popisa vrsta resursa dostupnih za pregled, postoji naredba :aliases.

Također je prikladno pregledati popis naredbi dostupnih kombinacijama vrućih tipki unutar trenutnog prozora: da biste to učinili, samo kliknite na "?".

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Također u k9s postoji način pretraživanja, za odlazak na koji je dovoljno unijeti "/". Njime se vrši pretraga sadržaja trenutnog "prozora". Recimo ako ste prethodno unijeli :ns, imate otvoren popis imenskih prostora. Ako ih ima previše, kako se ne biste dugo pomicali prema dolje, dovoljno je unijeti u prozor s prostorima imena /mynamespace.

Za pretraživanje po oznakama možete odabrati sve mahune u željenom prostoru naziva, a zatim unijeti, na primjer, / -l app=whoami. Dobit ćemo popis mahuna s ovom oznakom:

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Pretraživanje radi u svim vrstama prozora, uključujući zapisnike, pregled YAML manifesta i describe za resurse - pogledajte dolje za više pojedinosti o ovim značajkama.

Kako izgleda cjelokupni tijek navigacije?

Uz zapovijed :ctx možete odabrati kontekst:

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Za odabir imenskog prostora postoji već spomenuta naredba :ns, a zatim možete koristiti pretragu za željeni prostor: /test.

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

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Samo mahune mogu biti zanimljive - tada je dovoljno unijeti :pod. U slučaju ConfigMaps (:cm - za popis ovih resursa), možete odabrati predmet interesa i kliknuti na "u", nakon čega će vam K9s reći tko ga konkretno koristi (ovaj CM).

Još jedna zgodna značajka za pregled resursa je njihova "rendgenski snimak" (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 sučelja za Kubernetes
(Svaki od ovih izvora može se uređivati, mijenjati, napraviti describe.)

A ovdje je implementacija s Ingressom:

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Rad s resursima

Informacije o svakom resursu možete dobiti u YAML-u ili njegovom describe pritiskom na odgovarajuće tipkovničke prečace (“y” odnosno “d”). Naravno, ima još osnovnih operacija: njihov popis i prečaci na tipkovnici uvijek su vidljivi zahvaljujući prikladnom "zaglavlju" u sučelju (skriveno pritiskom na Ctrl + e).

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Prilikom uređivanja bilo kojeg resursa ("e" nakon njegovog odabira), otvara se uređivač teksta definiran u varijablama okruženja (export EDITOR=vim).

A evo kako izgleda detaljan opis resursa (describe):

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Ovaj izlaz (ili izlaz pregledavanja manifesta YAML resursa) može se spremiti pomoću poznate tipkovničke prečice Ctrl + s. Gdje će biti pohranjen saznat će se iz poruke K9s:

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

Također možete vratiti resurse iz kreiranih datoteka sigurnosne kopije, nakon uklanjanja sistemskih oznaka i bilješki. Da biste to učinili, morate otići u imenik s njima (:dir /tmp), zatim odaberite željenu datoteku i primijenite apply.

Usput, u bilo kojem trenutku možete se vratiti na prethodni ReplicaSet ako postoje problemi s trenutnim. Da biste to učinili, odaberite željeni RS (:rs za njihov popis):

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

... i vratite se s Ctrl + l. Trebali bismo dobiti obavijest da je sve prošlo u redu:

k9s/whoami-5cfbdbb469 successfully rolled back

A za skaliranje replika, samo kliknite na "s" (skala) i odaberite željeni broj instanci:

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Možete ući u bilo koji spremnik pomoću ljuske: da biste to učinili, idite na željeni modul, kliknite na "s" (ljuska) i odaberite spremnik.

Ostale značajke

Naravno, podržan je i pregled zapisa ("l" za odabrani resurs). A da biste gledali nove zapise, nema potrebe stalno pritiskati Enter: dovoljno je označiti (“m”), a zatim samo pratiti nove poruke.

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Također u istom prozoru možete odabrati vremenski raspon za ispis zapisa:

  • tipka "1" - za 1 minutu;
  • "2" - 5 minuta;
  • "3" - 15 minuta;
  • "4" - 30 minuta;
  • "5" - 1 sat;
  • "0" - za cijeli životni vijek mahune.

Poseban način rada Pulse (naredba :pulse) prikazuje opće informacije o Kubernetes klasteru:

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

U njemu možete vidjeti broj resursa i njihov status (zeleno označava one koji imaju status Running).

Još jedna cool značajka K9s je tzv Popeye. Provjerava sve resurse za određene kriterije ispravnosti i prikazuje dobivenu "ocjenu" s objašnjenjima. Na primjer, možete vidjeti da nema dovoljno uzoraka ili ograničenja, a neki se spremnik može pokrenuti kao root ...

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Postoji osnovna Helm podrška. Na primjer, ovako možete vidjeti izdanja implementirana u klasteru:

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

mjerilo

Čak je ugrađen u K9s ej je jednostavan generator opterećenja HTTP poslužitelja, alternativa poznatijem ab (ApacheBench).

Da biste ga omogućili, morate omogućiti port-forward u modulu. Da biste to učinili, odaberite pod i pritisnite Shift + f, idite na port-forward podizbornik koristeći "pf" alias.

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

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

Pregled k9s - naprednog terminalskog sučelja za Kubernetes
Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Da biste promijenili konfiguraciju referentne vrijednosti, morate stvoriti datoteku $HOME/.k9s/bench-<my_context>.yml (određuje se za svaki klaster).

NAPOMENA: Važno je da ekstenzija svih YAML datoteka u direktoriju .k9s bilo je toč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 stupaca za popise resursa mijenja se stvaranjem 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 stupaca za oznake, za koje postoji pitanje u projektu.

Razvrstavanje po stupcima vrši se tipkovničkim prečacima:

  • Shift + n - po imenu;
  • Shift + o - po čvorovima;
  • Shift + i - prema IP-u;
  • Shift + a - prema vijeku trajanja spremnika;
  • Shift + t - prema broju ponovnih pokretanja;
  • Shift + r - prema statusu spremnosti;
  • Shift + c - prema potrošnji procesora;
  • 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). здесь. Evo primjera jedne od ovih maski (u mornarici):

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Плагины

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

Ovako izgleda. Stvorite datoteku $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" za izvršenje odgovarajuće naredbe:

Pregled k9s - naprednog terminalskog sučelja za Kubernetes

Među dodacima tu su, na primjer, integracije s kubectl-jq i uslužni program za pregled zapisa krma.

Zaključak

Za moj ukus, K9s se pokazao vrlo prikladnim za rad: brzo se možete naviknuti tražiti sve što vam treba bez korištenja. kubectl. Bio sam zadovoljan pregledom zapisa i njihovim spremanjem, brzim uređivanjem resursa, brzinom rada općenito *, način rada Popeye pokazao se korisnim. Posebno treba spomenuti mogućnost izrade dodataka i modificiranja aplikacije kako bi odgovarala vašim potrebama.

* Iako, s velikim volumenom zapisa, primijetio sam i spor rad K9s. U takvim je trenucima uslužni program "pojeo" 2 jezgre iz Intel Xeon E312xx i čak se mogao zamrznuti.

Što trenutno nedostaje? Brzo vraćanje na prethodnu verziju (ne govorimo o RS-u) bez odlaska u imenik. Osim toga, oporavak se događa samo za samo resurs: ako izbrišete napomenu ili oznaku, morat ćete izbrisati i vratiti cijeli resurs (ovo je mjesto gdje morate ići u imenik). Još jedna sitnica - nema dovoljno datuma za tako spremljene "backupe".

PS

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar