Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

K9s gir et terminalbrukergrensesnitt for samhandling med Kubernetes-klynger. Målet med dette Open Source-prosjektet er å gjøre det enkelt å navigere, overvåke og administrere applikasjoner i K8s. K9s overvåker konstant endringer i Kubernetes og tilbyr raske kommandoer for å jobbe med overvåkede ressurser.

Prosjektet er skrevet i Go og har eksistert i over halvannet år: den første forpliktelsen ble gjort 1. februar 2019. I skrivende stund er det 9000+ stjerner på GitHub og rundt 80 bidragsytere. La oss se hva k9s kan gjøre?

Installasjon og lansering

Dette er et klientprogram (i forhold til Kubernetes-klyngen) som er enklest å kjøre som et Docker-bilde:

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

For noen Linux-distribusjoner og andre operativsystemer finnes det også klare til å installere pakker. Generelt, for Linux-systemer, kan du installere en binær fil:

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

Det er ingen spesifikke krav til selve K8s-klyngen. Etter anmeldelsene å dømme fungerer applikasjonen også med eldre versjoner av Kubernetes som 1.12.

Applikasjonen startes ved å bruke standardkonfigurasjonen .kube/config - lik hvordan det gjør kubectl.

Navigasjon

Som standard åpnes et vindu med standard navneområde spesifisert for konteksten. Altså hvis du skrev kubectl config set-context --current --namespace=test, så åpnes navneområdet test. (Se nedenfor for å endre kontekster/navneområder.)

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Gå til kommandomodus gjøres ved å trykke ":". Etter det kan du kontrollere driften av k9s ved hjelp av kommandoer - for for eksempel å se listen over StatefulSets (i gjeldende navneområde), kan du gå inn :sts.

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

For noen andre Kubernetes-ressurser:

  • :ns — navnerom;
  • :deploy — Utplasseringer;
  • :ing — Ingresser;
  • :svc — Tjenester.

For å vise en fullstendig liste over ressurstyper tilgjengelig for visning, er det en kommando :aliases.

Det er også praktisk å se listen over kommandoer som er tilgjengelige med hurtigtastkombinasjoner i det gjeldende vinduet: for å gjøre dette, klikk bare på "?".

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Også i k9s er det søkemodus, for å gå til som det er nok å skrive inn "/". Med den utføres et søk på innholdet i det gjeldende "vinduet". La oss si om du har skrevet inn tidligere :ns, har du en liste over navneområder åpen. Hvis det er for mange av dem, er det nok å gå inn i vinduet med navnerom for ikke å rulle nedover lenge /mynamespace.

For å søke etter etiketter kan du velge alle pods i ønsket navneområde, og deretter skrive inn f.eks. / -l app=whoami. Vi vil få en liste over pods med denne etiketten:

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Søket fungerer i alle typer vinduer, inkludert logger, visning av YAML-manifester og describe for ressurser - se nedenfor for mer informasjon om disse funksjonene.

Hvordan ser den generelle navigasjonsflyten ut?

Med kommandoen :ctx du kan velge en kontekst:

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

For å velge et navneområde, er det den allerede nevnte kommandoen :ns, og deretter kan du bruke søket etter ønsket plass: /test.

Hvis vi nå velger ressursen vi er interessert i (for eksempel det samme StatefulSet), vil den tilsvarende informasjonen vises for den: hvor mange poder kjører med kort informasjon om dem.

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Kun poder kan være av interesse - da er det nok å gå inn :pod. Når det gjelder ConfigMaps (:cm - for listen over disse ressursene), kan du velge objektet av interesse og klikke på "u", hvoretter K9s vil fortelle deg hvem som spesifikt bruker det (denne CM).

En annen nyttig funksjon for å vise ressurser er deres "røntgen" (røntgenvisning). Denne modusen kalles av kommandoen :xray RESOURCE og ... det er lettere å vise hvordan det fungerer enn å forklare. Her er en illustrasjon for StatefulSets:

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes
(Hver av disse ressursene kan redigeres, endres, lages describe.)

Og her er Deployment with Ingress:

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Arbeid med ressurser

Du kan få informasjon om hver ressurs i YAML eller dens describe ved å trykke på de tilsvarende hurtigtastene ("y" og "d", henholdsvis). Selvfølgelig er det enda mer grunnleggende operasjoner: deres liste og hurtigtaster er alltid synlige takket være en praktisk "overskrift" i grensesnittet (skjult ved å trykke Ctrl + e).

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Når du redigerer en ressurs ("e" etter dens valg), åpnes tekstredigeringsprogrammet definert i miljøvariablene (export EDITOR=vim).

Og her er hvordan den detaljerte beskrivelsen av ressursen ser ut (describe):

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Denne utdata (eller utdata fra visning av YAML-ressursmanifestet) kan lagres ved å bruke den kjente hurtigtasten Ctrl + s. Hvor det vil bli lagret vil bli kjent fra K9s-meldingen:

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

Du kan også gjenopprette ressurser fra de opprettede sikkerhetskopiene etter å ha fjernet systemetiketter og merknader. For å gjøre dette, må du gå til katalogen med dem (:dir /tmp), velg deretter ønsket fil og bruk apply.

Forresten, når som helst kan du rulle tilbake til forrige ReplicaSet hvis det er problemer med det gjeldende. For å gjøre dette, velg ønsket RS (:rs for deres liste):

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

... og rulle tilbake med Ctrl + l. Vi bør få et varsel om at alt gikk bra:

k9s/whoami-5cfbdbb469 successfully rolled back

Og for å skalere kopiene, klikker du bare på "s" (skala) og velger ønsket antall forekomster:

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Du kan gå inn i hvilken som helst av beholderne ved å bruke skallet: for å gjøre dette, gå til ønsket pod, klikk på "s" (skall) og velg beholderen.

Andre funksjoner

Visning av logger støttes selvfølgelig også ("l" for den valgte ressursen). Og for å se nye logger, er det ikke nødvendig å trykke på Enter hele tiden: det er nok å merke ("m") og så bare spore nye meldinger.

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

I samme vindu kan du også velge tidsintervall for utdata av logger:

  • tast "1" - i 1 minutt;
  • "2" - 5 minutter;
  • "3" - 15 minutter;
  • "4" - 30 minutter;
  • "5" - 1 time;
  • "0" - for hele levetiden til poden.

Spesiell driftsmodus Puls (kommando :pulse) viser generell informasjon om Kubernetes-klyngen:

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

I den kan du se antall ressurser og deres status (grønt viser de som har statusen Running).

En annen kul funksjon av K9s kalles Popeye. Den sjekker alle ressurser for visse kriterier for korrekthet og viser den resulterende "vurderingen" med forklaringer. For eksempel kan du se at det ikke er nok prøver eller grenser, og noen beholder kan kjøre som root ...

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Det er grunnleggende støtte for Helm. Slik kan du for eksempel se utgivelsene som er distribuert i klyngen:

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

benchmark

Til og med innebygd i K9s hey er en enkel HTTP-serverbelastningsgenerator, et alternativ til den bedre kjente ab (ApacheBench).

For å aktivere det, må du aktivere port-forward i poden. For å gjøre dette, velg poden og trykk Shift + f, gå til port-forward-undermenyen ved å bruke "pf"-aliaset.

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Etter å ha valgt porten og trykket Ctrl + b, starter selve referansen. Resultatene av arbeidet hans er lagret i /tmp og er tilgjengelig for senere visning i K9s.

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes
Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

For å endre konfigurasjonen av benchmark, må du opprette en fil $HOME/.k9s/bench-<my_context>.yml (bestemmes for hver klynge).

NB: Det er viktig at utvidelsen av alle YAML-filer i en katalog .k9s det var akkurat .yml (.yaml fungerer ikke riktig).

Konfigurasjonseksempel:

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

grensesnitt

Utseendet til kolonner for lister over ressurser endres ved å lage en fil $HOME/.k9s/views.yml. Et eksempel på innholdet:

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

Riktignok er det ikke nok kolonne for etiketter, som det er problemstilling i prosjektet.

Sortering etter kolonner utføres med hurtigtaster:

  • Shift + n - etter navn;
  • Shift + o - etter noder;
  • Shift + i - etter IP;
  • Shift + a - etter beholderens levetid;
  • Shift + t - med antall omstarter;
  • Shift + r - etter beredskapsstatus;
  • Shift + c - etter CPU-forbruk;
  • Shift + m - etter minneforbruk.

Hvis noen ikke liker standard fargeskjema, støtter K9s til og med skins. Ferdige eksempler (7 stk) er tilgjengelige her. Her er et eksempel på et av disse skinnene (i marinen):

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Плагины

Til slutt, den plugins lar deg utvide mulighetene til K9s. Selv har jeg bare brukt én av dem i arbeidet mitt - kubectl get all -n $namespace.

Det ser slik ut. Opprett en fil $HOME/.k9s/plugin.yml med innhold som dette:

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å kan du gå til navneområdet og trykke "g" for å utføre med den tilsvarende kommandoen:

Oversikt over k9s - et avansert terminalgrensesnitt for Kubernetes

Blant pluginene er det for eksempel integrasjoner med kubectl-jq og et verktøy for visning av logger Stern.

Konklusjon

For min smak viste K9s seg å være veldig praktisk å jobbe med: du kan raskt venne deg til å lete etter alt du trenger uten å bruke det. kubectl. Jeg var fornøyd med visningen av loggene og deres lagring, rask redigering av ressurser, hastigheten på arbeidet generelt *, Popeye-modusen viste seg å være nyttig. En spesiell omtale er muligheten til å lage plugins og endre applikasjonen for å passe dine behov.

* Selv om jeg, med et stort volum av logger, også la merke til den trege driften til K9s. I slike øyeblikk "spiste" verktøyet 2 kjerner fra Intel Xeon E312xx og kunne til og med fryse.

Hva mangler for øyeblikket? Rask tilbakeføring til forrige versjon (vi snakker ikke om RS) uten å gå til katalogen. I tillegg skjer utvinning kun for bare ressurs: hvis du sletter en merknad eller etikett, må du slette og gjenopprette hele ressursen (det er her du må gå til katalogen). En annen bagatell - det er ikke nok dato for slike lagrede "sikkerhetskopier".

PS

Les også på bloggen vår:

Kilde: www.habr.com

Legg til en kommentar