Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

K9s furnisce una interfaccia d'utilizatore terminale per interagisce cù i cluster Kubernetes. L'obiettivu di stu prughjettu Open Source hè di fà più faciule per navigà, monitorizà è gestisce l'applicazioni in K8s. K9s monitoreghja constantemente i cambiamenti in Kubernetes è offre cumandamenti rapidi per travaglià cù risorse monitorate.

U prugettu hè scrittu in Go è hè statu dapoi più di un annu è mezu: u primu impegnu hè statu fattu l'1 di ferraghju 2019. À u mumentu di a scrittura, ci sò più di 9000 stelle GitHub è circa 80 cuntributori. Videmu ciò chì k9s pò fà?

Installazione è lanciazione

Questa hè una applicazione cliente (in relazione à u cluster Kubernetes) chì hè più faciule per eseguisce cum'è una maghjina Docker:

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

Per certi distribuzioni Linux è altri sistemi operativi, ci sò ancu pronti per installà pacchetti. In generale, per i sistemi Linux, pudete installà un schedariu binariu:

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

Ùn ci sò micca esigenze specifiche per u cluster K8s stessu. A ghjudicà da e recensioni, l'applicazione funziona ancu cù versioni più vechje di Kubernetes cum'è 1.12.

L'applicazione hè lanciata cù a cunfigurazione standard .kube/config - simile à cumu si faci kubectl.

Navigazione

Per automaticamente, una finestra si apre cù u spaziu di nome predeterminatu specificatu per u cuntestu. Questu hè, si avete scrittu kubectl config set-context --current --namespace=test, allura u spaziu di nomi si apre test. (Vede quì sottu per cambià cuntesti / namespaces.)

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Andà à modu di cumandamentu hè fattu premendu ":". Dopu questu, pudete cuntrullà l'operazione di k9s cù cumandamenti - per esempiu, per vede a lista di StatefulSets (in u namespace currente), pudete entre. :sts.

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Per alcune altre risorse Kubernetes:

  • :ns - spazii di nomi;
  • :deploy - implementazioni;
  • :ing - Ingressi;
  • :svc - Servizi.

Per vede una lista completa di i tipi di risorse dispunibuli per vede, ci hè un cumandamentu :aliases.

Hè ancu cunvenutu per vede a lista di cumandamenti dispunibuli da combinazioni di tasti caldi in a finestra attuale: per fà questu, basta à cliccà nantu à "?".

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Ancu in k9s ci hè modu di ricerca, per andà à quale basta à entre "/". Cun ella, una ricerca hè realizata nantu à u cuntenutu di a "finestra" attuale. Diciamu s'è vo avete intrutu prima :ns, avete una lista di spazii di nomi aperti. S'ellu ci sò troppu, allora per ùn scorri per un bellu pezzu, hè abbastanza per entre in a finestra cù namespaces. /mynamespace.

Per cercà per etichette, pudete selezziunate tutti i pods in u spaziu di nome desideratu, dopu entre, per esempiu, / -l app=whoami. Averemu una lista di pods cù questa etichetta:

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

A ricerca travaglia in tutti i tipi di finestri, cumpresi logs, vede manifesti YAML, è describe per e risorse - vede quì sottu per più dettagli nantu à queste caratteristiche.

Chì ghjè u flussu generale di navigazione?

Utilizà u cumandamentu :ctx pudete sceglie un cuntestu:

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Per selezziunà un namespace, ci hè u cumandimu digià citatu :ns, è dopu pudete aduprà a ricerca di u spaziu desideratu: /test.

Sè avemu avà selezziunate a risorsa chì ci interessa (per esempiu, u stessu StatefulSet), l'infurmazioni currispundenti apparisceranu per questu: quantu pods sò in esecuzione cù brevi infurmazioni nantu à elli.

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Solu i baccelli ponu esse d'interessu - allora hè abbastanza per entre :pod. In u casu di ConfigMaps (:cm - per a lista di sti risorse), pudete selezziunà l'ughjettu d'interessu è cliccate nant'à "u", dopu chì K9s vi diciarà quale l'usa specificamente (questu CM).

Un'altra funzione utile per vede risorse hè u so "x-ray" (vista a raghji X). Stu modu hè chjamatu da u cumandamentu :xray RESOURCE è ... hè più faciule per dimustrà cumu funziona chè di spiegà. Eccu un'illustrazione per StatefulSets:

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes
(Ognunu di sti risorse pò esse editatu, cambiatu, fattu describe.)

È quì hè Deployment with Ingress:

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

U travagliu cù risorse

Pudete ottene infurmazione nantu à ogni risorsa in YAML o in u so describe premendo i tasti di scelta rapida corrispondenti ("y" è "d", rispettivamente). Di sicuru, ci sò ancu più operazioni basiche: a so lista è i scurciati di u teclatu sò sempre visibili grazia à una "header" cunvene in l'interfaccia (oculata pressu Ctrl + e).

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Quandu editate ogni risorsa ("e" dopu a so selezzione), l'editore di testu definitu in e variabili di l'ambiente hè apertu (export EDITOR=vim).

È quì hè ciò chì a descrizzione dettagliata di a risorsa pare (describe):

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Questa output (o output di vede u manifestu di risorsa YAML) pò esse salvatu usendu a scurciata di tastiera familiar Ctrl + s. Induve serà salvatu serà cunnisciutu da u missaghju K9s:

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

Pudete ancu risturà risorse da i schedarii di salvezza creati, dopu avè eliminatu l'etichetti di u sistema è l'annotazioni. Per fà questu, avete bisognu à andà in u cartulare cun elli (:dir /tmp), dopu selezziunate u schedariu desideratu è applicà apply.

Per via, in ogni mumentu pudete retrocede à u ReplicaSet precedente se ci sò prublemi cù l'attuale. Per fà questu, selezziunate u RS desideratu (:rs per a so lista):

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

... è rollback cù Ctrl + l. Avemu da riceve una notificazione chì tuttu hè andatu bè:

k9s/whoami-5cfbdbb469 successfully rolled back

È per scala e rèpliche, basta à cliccà nantu à a "s" (scala) è selezziunate u numeru desideratu di casi:

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Pudete inserisce qualsiasi di i cuntenituri cù a cunchiglia: per fà questu, andate à u pod desideratu, cliccate nantu à "s" (shell) è selezziunate u cuntinuu.

Altre caratteristiche

Di sicuru, a visualizazione di logs hè ancu supportata ("l" per a risorsa scelta). È per guardà novi logs, ùn ci hè bisognu di appughjà constantemente Enter: hè abbastanza per marcà ("m"), è dopu solu seguità novi missaghji.

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Ancu in a stessa finestra, pudete selezziunà u intervalu di tempu per l'output di logs:

  • chjave "1" - per 1 minutu;
  • "2" - 5 minuti;
  • "3" - 15 minuti;
  • "4" - 30 minuti;
  • "5" - 1 ora;
  • "0" - per tutta a vita di u pod.

Modu operativu speciale Pulse (cumandamentu :pulse) mostra infurmazione generale nantu à u cluster Kubernetes:

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

In questu pudete vede u numeru di risorse è u so statutu (i verdi mostranu quelli chì anu u statutu Running).

Una altra funzione cool di K9s hè chjamata Popeye. Verifica tutte e risorse per certi criterii di correttezza è mostra a "valutazione" risultante cù spiegazioni. Per esempiu, pudete vede chì ùn ci sò micca abbastanza campioni o limiti, è qualchì cuntainer pò esse esecutatu cum'è root ...

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Ci hè un supportu basicu per Helm. Per esempiu, questu hè cumu pudete vede e versioni implementate in u cluster:

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

Benchmark

Ancu integratu in K9s ehi hè un simplice generatore di carica di u servitore HTTP, una alternativa à l'ab più cunnisciutu (ApacheBench).

Per attivà, avete bisognu di attivà port-forward in u pod. Per fà questu, selezziunate u pod è appughjà Shift + f, andate à u submenu di portu-forward cù l'alias "pf".

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Dopu avè sceltu u portu è pressu Ctrl + b, u benchmark stessu cumminciarà. I risultati di u so travagliu sò guardati in /tmp è sò dispunibili per a visualizazione dopu in K9s.

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes
Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Per cambià a cunfigurazione di u benchmark, avete bisognu di creà un schedariu $HOME/.k9s/bench-<my_context>.yml (determinatu per ogni cluster).

NB: Hè impurtante chì l'estensione di tutti i schedari YAML in un cartulare .k9s era esattamente .yml (.yaml ùn funziona micca bè).

Esempiu di cunfigurazione:

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

interfaccia

L'apparizione di e culonni per i listi di risorse hè mudificatu creendu un schedariu $HOME/.k9s/views.yml. Un esempiu di u so cuntenutu:

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

True, ùn ci hè micca abbastanza colonna per etichette, per quale ci hè prublema in u prugettu.

L'ordinamentu per colonne hè realizatu da i tasti di scelta rapida:

  • Shift + n - per nome;
  • Shift + o - per nodi;
  • Shift + i - per IP;
  • Shift + a - da a vita di u cuntinuu;
  • Shift + t - da u numeru di riavvia;
  • Shift + r - per statu di prontezza;
  • Shift + c - da u cunsumu CPU;
  • Shift + m - per u cunsumu di memoria.

Se qualchissia ùn piace micca u schema di culore predeterminatu, K9s supporta ancu pelli. Esempii pronti (7 pezzi) sò dispunibili ccà. Eccu un esempiu di una di sti pelle (in marina):

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Plugins

Infine plugins permette di espansione e capacità di K9s. Eiu stessu aghju utilizatu solu unu di elli in u mo travagliu - kubectl get all -n $namespace.

Sembra cusì. Crea un schedariu $HOME/.k9s/plugin.yml cun cuntenutu cum'è questu:

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"

Avà pudete andà à u namespace è appughjà "g" per eseguisce cù u cumandamentu currispundente:

Panoramica di k9s - una interfaccia di terminal avanzata per Kubernetes

Trà i plugins ci sò, per esempiu, integrazioni cù kubectl-jq è una utilità per vede logs stern.

cunchiusioni

Per u mo gustu, K9s hè diventatu assai cunvene per travaglià: pudete rapidamente abituà à circà tuttu ciò chì avete bisognu senza usà. kubectl. Eru cuntentu cù a vista di i logs è u so salvamentu, edizione rapida di risorse, a rapidità di u travagliu in generale *, u modu Popeye hè stata utile. Una menzione speciale hè a capacità di creà plugins è mudificà l'applicazione per adattà à i vostri bisogni.

* Ancu s'ellu, cù un grande voluminu di logs, aghju nutatu ancu l'operazione lenta di K9s. In tali mumenti, l'utilità "mangia" 2 core da l'Intel Xeon E312xx è puderia ancu congelate.

Chì manca à u mumentu ? Ritorna rapida à a versione precedente (ùn parlemu micca di RS) senza andà in u cartulare. Inoltre, a ricuperazione accade solu per tutali risorsa: se sguassate una annotazione o etichetta, duverete sguassà è restaurà tuttu u risorsu (hè quì chì avete bisognu à andà in u cartulare). Un altru trifle - ùn ci hè micca abbastanza data per tali "backups" salvati.

PS

Leghjite puru nant'à u nostru blog:

Source: www.habr.com