Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

K9s biedt in terminal brûkersynterface foar ynteraksje mei Kubernetes-klusters. It doel fan dit Open Source-projekt is om it maklik te meitsjen om applikaasjes yn K8s te navigearjen, te kontrolearjen en te behearjen. K9s kontrolearret konstant feroarings yn Kubernetes en biedt rappe kommando's om te wurkjen mei kontroleare boarnen.

It projekt is skreaun yn Go en bestiet al mear as oardel jier: de earste commit waard makke op 1 febrewaris 2019. Op it stuit fan dit skriuwen binne d'r 9000+ stjerren op GitHub en sa'n 80 meiwurkers. Litte wy sjen wat k9s kinne dwaan?

Ynstallaasje en lansearring

Dit is in client (yn relaasje mei it Kubernetes-kluster) applikaasje dy't it maklikst is om te rinnen as in Docker-ôfbylding:

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

Foar guon Linux-distribúsjes en oare bestjoeringssystemen binne d'r ek klear te ynstallearjen pakjes. Yn 't algemien kinne jo foar Linux-systemen in binêre triem ynstallearje:

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

D'r binne gjin spesifike easken foar it K8s-kluster sels. Beoardielje troch de resinsjes, wurket de applikaasje ek mei âldere ferzjes fan Kubernetes lykas 1.12.

De applikaasje wurdt lansearre mei de standert konfiguraasje .kube/config - fergelykber mei hoe't it docht kubectl.

Navigaasje

Standert iepenet in finster mei de standert nammeromte oantsjutte foar de kontekst. Dat is, as jo skreaun hawwe kubectl config set-context --current --namespace=test, dan sil de nammeromte iepenje test. (Sjoch hjirûnder foar feroarjen fan konteksten/nammeromten.)

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Gean nei kommando modus wurdt dien troch te drukken op ":". Dêrnei kinne jo de wurking fan k9s kontrolearje mei kommando's - bygelyks om de list fan StatefulSets te besjen (yn 'e hjoeddeistige nammeromte), kinne jo ynfiere :sts.

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Foar guon oare Kubernetes-boarnen:

  • :ns - nammeromten;
  • :deploy - ynset;
  • :ing - Ingressen;
  • :svc - Tsjinsten.

Om in folsleine list fan boarnetypen te sjen dy't beskikber binne foar besjen, is d'r in kommando :aliases.

It is ek handich om de list mei kommando's te besjen dy't beskikber binne troch fluchtoetskombinaasjes yn it hjoeddeistige finster: om dit te dwaan, klikje gewoan op "?".

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Ek yn k9s is der sykmodus, om te gean wêr't it genôch is om "/" yn te fieren. Dêrmei wurdt in sykopdracht útfierd op de ynhâld fan it aktuele "finster". Litte wy sizze as jo earder ynfierd hawwe :ns, jo hawwe in list mei nammeromten iepen. As d'r tefolle binne, dan is it genôch om yn it finster mei nammeromten te gean, om net lang nei ûnderen te rôljen /mynamespace.

Om op labels te sykjen, kinne jo alle pods yn 'e winske nammeromte selektearje, en dan ynfiere, bygelyks, / -l app=whoami. Wy krije in list mei pods mei dit label:

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

It sykjen wurket yn alle soarten finsters, ynklusyf logs, besjen fan YAML-manifesten, en describe foar boarnen - sjoch hjirûnder foar mear details oer dizze funksjes.

Hoe sjocht de algemiene navigaasjestream der út?

Mei it kommando :ctx jo kinne in kontekst kieze:

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Om in nammeromte te selektearjen, is d'r it al neamde kommando :ns, en dan kinne jo it sykjen brûke foar de winske romte: /test.

As wy no de boarne selektearje wêryn wy ynteressearre binne (bygelyks deselde StatefulSet), sil de oerienkommende ynformaasje dêrfoar ferskine: hoefolle pods rinne mei koarte ynformaasje oer har.

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Allinnich pods kinne fan belang wêze - dan is it genôch om yn te gean :pod. Yn it gefal fan ConfigMaps (:cm - foar de list fan dizze boarnen), kinne jo it objekt fan belang selektearje en klikke op "u", wêrnei't K9s jo fertelle wa't it spesifyk brûkt (dizze CM).

In oare handige funksje foar it besjen fan boarnen is har "röntgen" (röntgenwerjefte). Dizze modus wurdt neamd troch it kommando :xray RESOURCE en ... it is makliker om te sjen hoe't it wurket dan út te lizzen. Hjir is in yllustraasje foar StatefulSets:

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes
(Elk fan dizze boarnen kin wurde bewurke, feroare, makke describe.)

En hjir is ynset mei Ingress:

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Wurkje mei middels

Jo kinne ynformaasje krije oer elke boarne yn YAML as syn describe troch te drukken op de oerienkommende toetseboerd fluchtoetsen ("y" en "d", respektivelik). Fansels binne d'r noch mear basis operaasjes: har list en fluchtoetsen binne altyd sichtber troch in handige "koptekst" yn 'e ynterface (ferburgen troch te drukken op Ctrl + e).

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

By it bewurkjen fan in boarne ("e" nei syn seleksje), wurdt de tekstbewurker definieare yn 'e omjouwingsfariabelen iepene (export EDITOR=vim).

En hjir is hoe't de detaillearre beskriuwing fan 'e boarne derút sjocht (describe):

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Dizze útfier (as de útfier fan it besjen fan it YAML-manifest fan 'e boarne) kin bewarre wurde mei de bekende Ctrl + s toetseboerd fluchtoets. Wêr't it sil wurde bewarre sil bekend wêze fan it K9s-berjocht:

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

Jo kinne ek boarnen weromsette fan 'e oanmakke reservekopybestannen, nei it fuortsmiten fan systeemetiketten en annotaasjes. Om dit te dwaan, moatte jo nei de map mei har (:dir /tmp), selektearje dan it winske bestân en tapasse apply.

Trouwens, jo kinne op elk momint weromdraaie nei de foarige ReplicaSet as d'r problemen binne mei de hjoeddeiske. Om dit te dwaan, selektearje de winske RS (:rs foar harren list):

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

... en weromdraaie mei Ctrl + l. Wy moatte in notifikaasje krije dat alles goed gie:

k9s/whoami-5cfbdbb469 successfully rolled back

En om de replika's te skaaljen, klikje jo gewoan op de "s" (skaal) en selektearje it winske oantal eksimplaren:

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Jo kinne elk fan 'e konteners ynfiere mei de shell: om dit te dwaan, gean nei de winske pod, klikje op "s" (shell) en selektearje de kontener.

Oare mooglikheden

Fansels wurdt it besjen fan logs ek stipe ("l" foar de selektearre boarne). En om nije logs te besjen, is it net nedich om konstant op Enter te drukken: it is genôch om te markearjen ("m") en dan allinich nije berjochten te folgjen.

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Ek yn itselde finster kinne jo it tiidbereik selektearje foar de útfier fan logs:

  • kaai ​​"1" - foar 1 minút;
  • "2" - 5 minuten;
  • "3" - 15 minuten;
  • "4" - 30 minuten;
  • "5" - 1 oere;
  • "0" - foar it hiele libben fan 'e pod.

Spesjale bestjoeringsmodus Pulse (kommando :pulse) toant algemiene ynformaasje oer it Kubernetes-kluster:

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Dêryn kinne jo it oantal boarnen en har status sjen (grien toant dejingen dy't de status hawwe Running).

In oare koele skaaimerk fan K9s hjit Popeye. It kontrolearret alle boarnen foar bepaalde kritearia fan korrektheid en toant de resultearjende "beoardieling" mei taljochtingen. Jo kinne bygelyks sjen dat d'r net genôch samples of limiten binne, en guon kontener kin rinne as root ...

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

D'r is basisstipe foar Helm. Dit is bygelyks hoe't jo de releases sjen kinne ynset yn it kluster:

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

benchmark

Sels boud yn K9s Hey is in ienfâldige HTTP tsjinner load generator, in alternatyf foar de better bekende ab (ApacheBench).

Om it yn te skeakeljen, moatte jo port-forward ynskeakelje yn 'e pod. Om dit te dwaan, selektearje de pod en druk op Shift + f, gean nei it poarte-foarút submenu mei de "pf" alias.

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Nei it selektearjen fan de poarte en drukke op Ctrl + b, sil de benchmark sels begjinne. De resultaten fan syn wurk wurde opslein yn /tmp en binne beskikber foar letter besjen yn K9s.

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes
Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Om de konfiguraasje fan 'e benchmark te feroarjen, moatte jo in bestân oanmeitsje $HOME/.k9s/bench-<my_context>.yml (bepaald foar elk kluster).

NB: It is wichtich dat de útwreiding fan alle YAML triemmen yn in map .k9s it wie krekt .yml (.yaml wurket net goed).

Foarbyld fan konfiguraasje:

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

ynterface

It uterlik fan kolommen foar listen mei boarnen wurdt wizige troch it meitsjen fan in bestân $HOME/.k9s/views.yml. In foarbyld fan har ynhâld:

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

Wier, der is net genôch kolom foar labels, dêr't der is probleem yn it projekt.

Sortearje op kolommen wurdt útfierd troch fluchtoetsen:

  • Shift + n - by namme;
  • Shift + o - troch knopen;
  • Shift + i - troch IP;
  • Shift + a - troch it libben fan 'e kontener;
  • Shift + t - troch it oantal opnij starte;
  • Shift + r - troch status fan reewilligens;
  • Shift + c - troch CPU-konsumpsje;
  • Shift + m - troch ûnthâld konsumpsje.

As immen it standertkleurskema net leuk fynt, stipet K9s sels skins. Kant-makke foarbylden (7 stiks) binne beskikber hjir. Hjir is in foarbyld fan ien fan dizze skins (yn 'e marine):

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Plugins

Einlings plugins tastean jo te wreidzjen de mooglikheden fan K9s. Ik sels haw mar ien fan har brûkt yn myn wurk - kubectl get all -n $namespace.

It liket derop. Meitsje in triem $HOME/.k9s/plugin.yml mei ynhâld lykas dizze:

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"

No kinne jo nei de nammeromte gean en op "g" drukke om út te fieren mei it korrespondearjende kommando:

Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes

Under de plugins binne d'r bygelyks yntegraasjes mei kubectl-jq en in hulpprogramma foar it besjen fan logs stern.

konklúzje

Foar myn smaak bliken K9's heul handich om mei te wurkjen: jo kinne fluch wenne oan it sykjen nei alles wat jo nedich hawwe sûnder it te brûken. kubectl. Ik wie bliid mei it sicht fan 'e logs en har besparring, rappe bewurking fan boarnen, de snelheid fan wurk yn' t algemien *, de Popeye-modus die bliken nuttich te wêzen. In spesjale fermelding is de mooglikheid om plugins te meitsjen en de applikaasje te feroarjen om oan jo behoeften te passen.

* Hoewol, mei in grut folume fan logs, haw ik ek de trage wurking fan K9s opmurken. Op sokke mominten "iten" it hulpprogramma 2 kearnen fan 'e Intel Xeon E312xx en koe sels befrieze.

Wat mist der op it stuit? Fluch weromdraaie nei de foarige ferzje (wy prate net oer RS) sûnder nei de map te gean. Dêrneist herstel komt allinnich foar totaal boarne: as jo in annotaasje of label wiskje, moatte jo de folsleine boarne wiskje en weromsette (dit is wêr't jo nei de map moatte gean). In oar lyts ding - d'r is net genôch datum foar sokke bewarre "backups".

PS

Lês ek op ús blog:

Boarne: www.habr.com

Add a comment