Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

k9s bitt eng Terminal User Interface fir Interaktioun mat Kubernetes Cluster. D'Zil vun dësem Open Source Projet ass et einfach ze maachen, fir Uwendungen an K8s ze navigéieren, ze iwwerwaachen an ze verwalten. K9s iwwerwaacht konstant Ännerungen an Kubernetes a bitt séier Kommandoen fir mat iwwerwaachte Ressourcen ze schaffen.

De Projet ass am Go geschriwwen an ass zënter iwwer annerhallef Joer ronderëm: den éischten Engagement gouf den 1. Februar 2019 gemaach. Zu der Zäit vum Schreiwen sinn et 9000+ Stären op GitHub a ronn 80 Mataarbechter. Loosst eis kucken wat k9s maache kënnen?

Installatioun a starten

Dëst ass e Client (am Zesummenhang mam Kubernetes Cluster) Applikatioun déi am einfachsten als Docker Bild ze lafen ass:

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

Fir e puer Linux Verdeelungen an aner Betribssystemer ginn et och fäerdeg ze installéieren Packagen. Am Allgemengen, fir Linux Systemer, kënnt Dir eng binär Datei installéieren:

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

Et gi keng spezifesch Ufuerderunge fir de K8s Cluster selwer. No de Rezensiounen beurteelen, funktionnéiert d'Applikatioun och mat méi al Versioune vu Kubernetes wéi 1.12.

D'Applikatioun gëtt mat der Standardkonfiguratioun gestart .kube/config - ähnlech wéi et mécht kubectl.

Navigatioun

Par défaut gëtt eng Fënster op mat dem Standardnameraum, dee fir de Kontext spezifizéiert ass. Dat ass, wann Dir geschriwwen kubectl config set-context --current --namespace=test, da gëtt den Nummraum op test. (Kuckt hei ënnen fir Kontexter / Nummraim z'änneren.)

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Géi op Kommando Modus gëtt gemaach andeems Dir op ":" dréckt. Duerno kënnt Dir d'Operatioun vu k9s mat Kommandoen kontrolléieren - zum Beispill, fir d'Lëscht vu StatefulSets ze gesinn (am aktuellen Nummraum), kënnt Dir aginn :sts.

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Fir e puer aner Kubernetes Ressourcen:

  • :ns - Nummraim;
  • :deploy - Deployment;
  • :ing - Ingressen;
  • :svc - Servicer.

Fir eng komplett Lëscht vu Ressourcentypen ze weisen, déi verfügbar sinn fir ze kucken, gëtt et e Kommando :aliases.

Et ass och bequem d'Lëscht vun de Kommandoen ze gesinn, déi duerch Hotkey Kombinatiounen an der aktueller Fënster verfügbar sinn: fir dëst ze maachen, klickt einfach op "?".

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Och an k9s gëtt et Sich Modus, fir ze goen, wou et duer geet "/" anzeginn. Mat et gëtt eng Sich op den Inhalt vun der aktueller "Fënster" gemaach. Loosst eis soen ob Dir virdru aginn hutt :ns, Dir hutt eng Lëscht vun den Nummraim op. Wann et ze vill vun hinnen sinn, da fir net laang erof ze scrollen, ass et genuch fir an d'Fënster mat Nummraim anzeginn /mynamespace.

Fir no Etiketten ze sichen, kënnt Dir all Pods am gewënschten Nummraum auswielen, gitt dann z.B. / -l app=whoami. Mir kréien eng Lëscht vu Pods mat dësem Label:

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

D'Sich Wierker an all Zorte vu Fënsteren, dorënner Logbicher, Vue YAML Manifestatiounen, an describe fir Ressourcen - gesinn ënnert fir méi Detailer iwwert dës Fonctiounen.

Wéi gesäit de Gesamtnavigatiounsfloss aus?

Benotzt de Kommando :ctx Dir kënnt e Kontext wielen:

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Fir e Nummraum ze wielen, gëtt et de scho genannte Kommando :ns, an da kënnt Dir d'Sich fir de gewënschten Raum benotzen: /test.

Wa mir elo d'Ressource auswielen an där mir interesséiert sinn (zum Beispill deeselwechte StatefulSet), erschéngt déi entspriechend Informatioun dofir: wéivill Pods lafen mat kuerzer Informatioun doriwwer.

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Nëmmen Pods kënnen interessant sinn - da geet et duer fir anzegoen :pod. Am Fall vu ConfigMaps (:cm - fir d'Lëscht vun dëse Ressourcen), kënnt Dir den Objet vun Interessi auswielen a klickt op "u", no deem K9s Iech soen, wien et speziell benotzt (dëser CM).

Eng aner praktesch Feature fir Ressourcen ze gesinn ass hir "röntgen" (Röntgenbild). Dëse Modus gëtt vum Kommando genannt :xray RESOURCE an ... et ass méi einfach ze weisen wéi et funktionnéiert wéi ze erklären. Hei ass eng Illustratioun fir StatefulSets:

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes
(Jidderee vun dëse Ressourcen kann geännert, geännert, gemaach ginn describe.)

An hei ass Deployment mat Ingress:

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Mat Ressourcen schaffen

Dir kënnt Informatiounen iwwer all Ressource an YAML kréien oder seng describe andeems Dir déi entspriechend Tastatur Ofkiirzungen dréckt ("y" respektiv "d"). Natierlech ginn et nach méi Basis Operatiounen: hir Lëscht an Tastatur Ofkiirzungen sinn ëmmer sichtbar dank engem prakteschen "Header" an der Interface (verstoppt andeems Dir Ctrl + e dréckt).

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Wann Dir eng Ressource ännert ("e" no senger Auswiel), gëtt den Texteditor, deen an den Ëmfeldvariablen definéiert ass, opgemaach (export EDITOR=vim).

An hei ass wéi déi detailléiert Beschreiwung vun der Ressource ausgesäit (describe):

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Dësen Ausgang (oder d'Output fir de YAML Ressource Manifest ze gesinn) kann mat der vertrauter Tastatur Ofkiirzung Ctrl + s gespäichert ginn. Wou et gespäichert gëtt gëtt aus dem K9s Message bekannt:

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

Dir kënnt och Ressourcen aus de erstallte Backupdateien restauréieren, nodeems Dir Systemetiketten an Annotatiounen ewechgeholl hutt. Fir dëst ze maachen, musst Dir an den Dossier mat hinnen goen (:dir /tmp), wielt dann déi gewënschte Datei an gëlt apply.

Iwwregens, zu all Moment kënnt Dir op de fréiere ReplicaSet zréckrollen wann et Probleemer mat deem aktuellen ass. Fir dëst ze maachen, wielt déi gewënscht RS (:rs fir hir Lëscht):

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

... a Réckroll mat Ctrl + l. Mir sollten eng Notifikatioun kréien datt alles gutt gaang ass:

k9s/whoami-5cfbdbb469 successfully rolled back

A fir d'Repliken ze skaléieren, klickt einfach op den "s" (Skala) a wielt déi gewënscht Unzuel vun Instanzen:

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Dir kënnt iergendeng vun de Container mat der Shell aginn: fir dëst ze maachen, gitt op de gewënschten Pod, klickt op "s" (Shell) a wielt de Container.

Aner Funktiounen

Natierlech gëtt och Logbicher kucken ("l" fir déi gewielte Ressource). A fir nei Logbicher ze kucken, ass et net néideg konstant op Enter ze drécken: et ass genuch fir ze markéieren ("m") an dann nëmmen nei Messagen ze verfollegen.

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Och an der selwechter Fënster kënnt Dir d'Zäitbereich fir d'Ausgab vu Logbicher auswielen:

  • Schlëssel "1" - fir 1 Minutt;
  • "2" - 5 Minutten;
  • "3" - 15 Minutten;
  • "4" - 30 Minutten;
  • "5" - 1 Stonn;
  • "0" - fir d'ganz Liewensdauer vum Pod.

Special Betriebsmodus Puls (Kommando :pulse) weist allgemeng Informatioun iwwer de Kubernetes Cluster:

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

An et kënnt Dir d'Zuel vun de Ressourcen an hire Status gesinn (gréng weist déi, déi de Status hunn Running).

Aner cool Fonktioun vun K9s genannt Popeye. Et kontrolléiert all Ressourcen fir bestëmmte Kritäre vun der Richtegkeet a weist déi resultéierend "Bewäertung" mat Erklärungen. Zum Beispill kënnt Dir gesinn datt et net genuch Proben oder Limiten sinn, an e puer Container kënnen als Root lafen ...

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Et gëtt Basis Helm Ënnerstëtzung. Zum Beispill, dëst ass wéi Dir d'Verëffentlechungen am Cluster gesinn:

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

Ulass

Souguer an K9s gebaut hey ass en einfachen HTTP-Server Lastgenerator, eng Alternativ zum besser bekannte Ab (ApacheBench).

Fir et z'aktivéieren, musst Dir Port-Forward am Pod aktivéieren. Fir dëst ze maachen, wielt de Pod an dréckt Shift + f, gitt op de Port-Forward Submenu mam "pf" Alias.

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Nodeems Dir den Hafen gewielt hutt an Ctrl + b dréckt, fänkt de Benchmark selwer un. D'Resultater vu senger Aarbecht sinn am gespäichert /tmp a si verfügbar fir spéider a K9s ze gesinn.

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes
Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Fir d'Konfiguratioun vum Benchmark z'änneren, musst Dir eng Datei erstellen $HOME/.k9s/bench-<my_context>.yml (bestëmmt fir all Cluster).

NB: Et ass wichteg datt d'Extensioun vun all YAML Dateien an engem Verzeichnis .k9s et war genee .yml (.yaml funktionnéiert net richteg).

Konfiguratioun Beispill:

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

Interface

D'Erscheinung vu Spalten fir Lëschte vu Ressourcen gëtt geännert andeems Dir eng Datei erstellt $HOME/.k9s/views.yml. E Beispill vu sengem Inhalt:

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

Richteg, et gëtt net genuch Kolonn fir Etiketten, fir déi et gëtt Thema am Projet.

D'Sortéierung no Spalten gëtt duerch Tastatur Ofkiirzungen duerchgefouert:

  • Shift + n - mam Numm;
  • Shift + o - duerch Knäppercher;
  • Shift + i - duerch IP;
  • Shift + a - duerch d'Liewensdauer vum Container;
  • Shift + t - duerch d'Zuel vun de Restart;
  • Shift + r - duerch Bereetschaft Status;
  • Shift + c - duerch CPU Konsum;
  • Verréckelung + m - vun Erënnerung Konsum.

Wann een de Standardfaarfschema net gär huet, ënnerstëtzt K9s souguer Haut. Fäerdeg Beispiller (7 Stéck) sinn verfügbar hei. Hei ass e Beispill vun enger vun dëse Skins (an der Marine):

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Plugins

Endlech Plugins erlaben Iech d'Méiglechkeeten vun K9s expandéiert. Ech selwer hunn nëmmen ee vun hinnen a menger Aarbecht benotzt - kubectl get all -n $namespace.

Et gesäit esou aus. Schafen eng Datei $HOME/.k9s/plugin.yml mat Inhalt wéi dësen:

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"

Elo kënnt Dir op den Nummraum goen an "g" drécken fir mam entspriechende Kommando auszeféieren:

Iwwersiicht vu k9s - eng fortgeschratt Terminal Interface fir Kubernetes

Ënnert de Plugins ginn et zum Beispill Integratioune mat kubectl-jq an en Utility fir Logbicher ze gesinn hannereneen.

Konklusioun

Fir mäi Goût huet sech d'K9s ganz praktesch erausgestallt fir mat ze schaffen: Dir kënnt séier gewinnt sinn fir alles ze sichen wat Dir braucht ouni et ze benotzen. kubectl. Ech war frou mat der Sicht vun de Logbicher an hir Spueren, séier Redaktioun vu Ressourcen, d'Geschwindegkeet vun der Aarbecht am Allgemengen *, de Popeye Modus huet sech als nëtzlech erausgestallt. Eng speziell Ernimmung ass d'Fäegkeet Plugins ze kreéieren an d'Applikatioun z'änneren fir Äre Besoinen ze passen.

* Och wann ech mat engem grousse Volume vu Logbicher och déi lues Operatioun vu K9s gemierkt hunn. Zu esou Momenter huet d'Utility 2 Cores vum Intel Xeon E312xx "giess" a konnt souguer afréieren.

Wat feelt am Moment? Schnell Réckroll op déi fréier Versioun (mir schwätzen net iwwer RS) ouni an de Verzeechnes ze goen. Zousätzlech geschitt Erhuelung nëmme fir total Ressource: Wann Dir eng Annotatioun oder Label läscht, musst Dir déi ganz Ressource läschen a restauréieren (dat ass wou Dir an den Dossier gitt). Eng aner Trifle - et gëtt net genuch Datum fir sou gespäichert "Backups".

PS

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire