Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

K9s tillhandahÄller ett terminalgrÀnssnitt för att interagera med Kubernetes-kluster. MÄlet med detta Open Source-projekt Àr att underlÀtta enkel navigering av applikationer i K8s, övervakning av dem samt hantering av dem. K9s övervakar kontinuerligt förÀndringar i Kubernetes och erbjuder snabba kommandon för arbete med de övervakade resurserna.

Projektet Àr skrivet i Go och har funnits i mer Àn ett och ett halvt Är: den första committen gjordes den 1 februari 2019. Vid tidpunkten för skrivandet finns det över 9000 stjÀrnor pÄ GitHub och cirka 80 bidragsgivare. Vad kan k9s göra?

Installera och köra

Detta Àr en klientapplikation (i förhÄllande till Kubernetes-klustret) som enklast kan köras som en Docker-bild:

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

För vissa Linux-distributioner och andra operativsystem finns det Àven paket som kan installeras. paketI allmÀnhet kan du för Linux-system installera en binÀrfil:

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 finns inga specifika krav pÄ sjÀlva K8s-klustret. Enligt recensionerna fungerar applikationen Àven med Àldre versioner av Kubernetes, som 1.12.

Applikationen startas med hjĂ€lp av standardkonfigurationsfilen .kube/config — pĂ„ ett sĂ€tt som liknar hur det görs av kubectl.

Navigation

Som standard öppnas ett fönster med det standardnamnrymd som anges för kontexten. Det vill sÀga, om du angav kubectl config set-context --current --namespace=test, kommer namnomrÄdet att öppnas test. (Om att byta mellan kontexter/namnrymder, se nedan.)

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

ÖvergĂ„ng till kommandolĂ€ge sker genom att trycka pĂ„ ‘:’. Efter det kan du styra k9s med hjĂ€lp av kommandon — till exempel för att visa listan över StatefulSets (i det aktuella namnomrĂ„det) kan du skriva :sts.

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

För nÄgra andra Kubernetes-resurser:

  • :ns — Namnrymder;
  • :deploy — Distributioner;
  • :ing — Ingress;
  • :svc — TjĂ€nster.

För att fÄr en komplett lista över resurstypen som Àr tillgÀngliga för visning finns det ett kommando :aliases.

Det Ă€r bekvĂ€mt att se en lista över kommandon som Ă€r tillgĂ€ngliga med genvĂ€gar i det aktuella fönstret: för detta rĂ€cker det att trycka pĂ„ ‘?’.

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

I k9s finns det ocksĂ„ söklĂ€ge, för att övergĂ„ till detta rĂ€cker det att skriva ‘/’. Med det görs sökningar i innehĂ„llet i det aktuella ‘fönstret’. Anta att om du tidigare har angett :ns, har du en lista över namnrymder. Om det finns för mĂ„nga, sĂ„ för att slippa scrolla för lĂ€nge ner, rĂ€cker det att skriva i fönstret med namnrymder. /mynamespace.

För att söka efter etiketter kan du vÀlja alla poddar i det önskade namnomrÄdet och sedan till exempel skriva in, / -l app=whoami. Vi fÄr en lista med poddar som har denna etikett:

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Sökningen fungerar i alla typer av fönster, inklusive loggar, visning av YAML-manifest och objektet PVC: för resurser — mer information om dessa möjligheter finns nedan.

Hur ser sekvensen för navigation ut generellt?

Med kommandot :ctx kan du vÀlja kontext:

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

För att vÀlja namnomrÄde finns det redan nÀmnda kommandot :ns, och sedan kan man anvÀnda sökfunktionen för det önskade namnomrÄdet: /test.

Om vi nu vÀljer den resurs som intresserar oss (till exempel StatefulSet) kommer motsvarande information att visas: hur mÄnga poddar som körs med kort information om dem.

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Kanske vill vi bara se poddar — dĂ„ rĂ€cker det att skriva in :pod. NĂ€r det gĂ€ller ConfigMap (:cm — för listan över dessa resurser) kan man vĂ€lja det intressanta objektet och trycka pĂ„ "u", dĂ„ kommer K9s att föreslĂ„ vem som specifikt anvĂ€nder detta CM.

En annan praktisk funktion för att se resurser Àr deras "röntgen" (XRay view). Denna lÀge Äkallas med kommandot :xray RESOURCE och... det Àr enklare att visa hur det fungerar Àn att förklara. HÀr Àr en illustration för StatefulSets:

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes
(Varje av dessa resurser kan redigeras, Àndras, göras objektet PVC:.)

HÀr Àr en Deployment med Ingress:

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Arbeta med resurser

Om varje resurs kan man fÄ information i YAML eller dess objektet PVC: genom att trycka pÄ motsvarande tangentkombinationer ("y" och "d" respektive). Basoperationerna Àr naturligtvis Ànnu fler: deras lista och tangentkombinationer Àr alltid synliga tack vare en bekvÀm "huvud" i grÀnssnittet (den döljs med Ctrl + e).

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Vid redigering av vilken resurs som helst ("e" efter att ha valt den) öppnas en textredigerare som definieras i miljövariabler (export EDITOR=vim).

HÀr Àr hur en detaljerad beskrivning av resursen ser ut (objektet PVC:):

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Denna utdata (eller utdata frÄn att visa YAML-manifestet för resursen) kan sparas med den vanliga tangentkombinationen Ctrl + s. Var den sparas blir kÀnt frÄn meddelandet frÄn K9s:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml sparad framgÄngsrikt!

FrÄn de skapade backupfilerna kan resurser ÄterstÀllas, efter att ha tagit bort systemetiketter och anteckningar. För detta krÀvs det att gÄ till katalogen med dem (:dir /tmp), och sedan vÀlja den nödvÀndiga filen och tillÀmpa apply.

För att nÀmna det, kan man nÀr som helst ÄtergÄ till föregÄende ReplicaSet om det nuvarande har problem. För att göra detta mÄste du vÀlja den relevanta RS (:rs för deras lista):

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes


 och utföra rollback med hjĂ€lp av Ctrl + l. Vi bör fĂ„ en avisering om att allt har gĂ„tt bra:

k9s/whoami-5cfbdbb469 har ÄterstÀllts framgÄngsrikt

För att skala upp repliker rÀcker det med att trycka pÄ «s» (scale) och vÀlja det antal instanser som behövs:

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

I vilken container som helst kan du gÄ in med hjÀlp av shell: gÄ till den önskade podden, tryck pÄ «s» (shell) och vÀlj containern.

Andra möjligheter

SjÀlvklart stöds Àven visning av loggar («l» för den valda resursen). För att se nya loggar behöver du inte kontinuerligt trycka pÄ Enter: det rÀcker att markera («m»), varefter du bara följder de nya meddelandena.

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

I detta fönster kan du ocksÄ vÀlja en tidsperiod för loggarna:

  • tangenten «1» — för 1 minut;
  • «2» — 5 minuter;
  • «3» — 15 minuter;
  • «4» — 30 minuter;
  • «5» — 1 timme;
  • «0» — för hela livslĂ€ngden för podden.

Ett speciellt lÀge i Pulse (kommandot :pulse) visar allmÀn information om Kubernetes-klustret:

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

HÀr kan du se antalet resurser och deras status (de med status visas i grönt Running).

En annan intressant funktion i K9s kallas Popeye. Den kontrollerar alla resurser efter vissa korrekthetskriterier och ger en «betyg» med förklaringar. Till exempel kan du se att det saknas begrĂ€nsningar eller grĂ€nser, och att en viss container kan köras som root


Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Det finns grundlÀggande stöd för Helm. Till exempel kan du pÄ detta sÀtt se vilka releaser som har distribuerats till klustret:

:helm all # alla
:helm $namespace # i ett specifikt namnrymd

Benchmark

I K9s har de till och med byggt in hey — det Ă€r en enkel belastningstestare för HTTP-servrar, ett alternativ till den mer kĂ€nda ab (ApacheBench).

För att aktivera det behöver du aktivera port-forward i podden. VÀlj podden och tryck pÄ Shift + f, gÄ till undermenyn port-forward med aliaset «pf».

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Efter val av port och tryck pÄ Ctrl + b startas sjÀlva benchmarket. Resultaten av dess arbete sparas i /tmp och Àr tillgÀngliga för efterföljande visning i K9s.

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes
Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

För att Àndra benchmark-konfigurationen mÄste du skapa en fil $HOME/.k9s/bench-.yml (det bestÀms för varje kluster).

NB: Viktigt att alla YAML-filer i katalogen .k9s har just .yml (.yaml fungerar inte korrekt).

Exempelkonfiguration:

benchmark:
  defaults:
    # Antal trÄdar
    concurrency: 2
    # Antal förfrÄgningar
    requests: 1000
  containers:
    # InstÀllningar för containern med benchmark
    # Containern definieras som 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:
    # Benchmarking kan göras pÄ tjÀnster av typen NodePort och LoadBalancer
    # Syntax: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

GrÀnssnitt

Visning av kolumner för resurslistor modifieras genom att skapa en fil $HOME/.k9s/views.yml. Exempel pÄ innehÄllet Àr:

k9s:
 views:
   v1/pods:
     columns:
       - ÅLDER
       - NAMESPACE
       - NAMN
       - IP
       - NOD
       - STATUS
       - KLAR
   v1/services:
     columns:
       - ÅLDER
       - NAMESPACE
       - NAMN
       - TYP
       - KLUSTER-IP

Det saknas dock en kolumn för etiketter, vilket finns som ett Àrende i projektet.

Sortering av kolumner görs med tangentkombinationer:

  • Shift + n — efter namn;
  • Shift + o — efter noder;
  • Shift + i — efter IP;
  • Shift + a — efter behĂ„llarens livstid;
  • Shift + t — efter antalet omstarter;
  • Shift + r — efter status för beredskap;
  • Shift + c — efter CPU-anvĂ€ndning;
  • Shift + m — efter minnesanvĂ€ndning.

Om nÄgon inte gillar den förvalda fÀrgsÀttningen, stöder K9s till och med teman. FÀrdiga exempel (7 stycken) finns tillgÀngliga hÀr. HÀr Àr ett exempel pÄ ett av dessa teman (in the navy):

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Plugins

Slutligen, plugins ökar K9s möjligheter. Jag har sjĂ€lv anvĂ€nt bara ett av dem — kubectl get all -n $namespace.

Det ser ut pÄ följande sÀtt. Vi skapar en fil $HOME/.k9s/plugin.yml med följande innehÄll:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: hÀmta allt
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

Nu kan vi gÄ till namnomrÄdet och trycka pÄ "g" för att utföra kommandot:

Översikt över k9s — en avancerad terminalgrĂ€nssnitt för Kubernetes

Bland plugins finns till exempel integrationer med kubectl-jq och loggvisningsverktyget stern.

Slutsats

Efter min mening har K9s visat sig vara mycket anvÀndbar: man vÀnjer sig snabbt vid att hitta allt utan att anvÀnda kubectl. Jag blev glad över loggvisningen och deras sparande, snabb redigering av resurser, och hastigheten i allmÀnhet*, fungerade lÀget Popeye bra. Möjligheten att skapa plugins och anpassa applikationen efter egna behov förtjÀnar sÀrskild uppmÀrksamhet.

* Även om jag har mĂ€rkt att K9s arbetar lĂ„ngsamt vid stora loggningsvolymer. Under sĂ„dana tider "Ă„t" verktyget 2 kĂ€rnor av Intel Xeon E312xx och kunde till och med frysa.

Vad saknas just nu? En snabb Ă„tergĂ„ng till en tidigare version (inte RS) utan att gĂ„ in i katalogen. Dessutom sker Ă„terstĂ€llningen endast för alla resursen: om du har tagit bort en annotation eller etikett mĂ„ste du ta bort och Ă„terstĂ€lla hela resursen (och hĂ€r mĂ„ste du gĂ„ in i katalogen). En annan smĂ„sak — det saknas datum för sĂ„dana sparade "backup-filer".

P.S.

LÀs Àven i vÄr blogg:

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster