Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

K9s jipprovdi interface għall-utent terminali għall-interazzjoni ma 'clusters ta' Kubernetes. L-għan ta 'dan il-proġett Open Source huwa li jagħmilha faċli biex wieħed jinnaviga, jimmonitorja, u jimmaniġġja l-applikazzjonijiet fil-K8s. K9s jimmonitorja kontinwament il-bidliet f'Kubernetes u joffri kmandi ta' malajr biex jaħdem b'riżorsi mmonitorjati.

Il-proġett huwa miktub f’Go u ilu aktar minn sena u nofs: l-ewwel impenn sar fl-1 ta’ Frar, 2019. Fiż-żmien tal-kitba, hemm 9000+ stilla fuq GitHub u madwar 80 kontributur. Ejja naraw x'jistgħu jagħmlu k9s?

Installazzjoni u tnedija

Din hija applikazzjoni klijent (b'relazzjoni mal-cluster Kubernetes) li hija l-aktar faċli biex titħaddem bħala immaġni Docker:

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

Għal xi distribuzzjonijiet Linux u sistemi operattivi oħra, hemm ukoll lesti biex jiġu installati pakketti. B'mod ġenerali, għal sistemi Linux, tista 'tinstalla fajl binarju:

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

M'hemm l-ebda rekwiżiti speċifiċi għall-cluster K8s innifsu. Meta wieħed jiġġudika mir-reviżjonijiet, l-applikazzjoni taħdem ukoll ma 'verżjonijiet eqdem ta' Kubernetes bħal 1.12.

L-applikazzjoni hija mnedija bl-użu tal-konfigurazzjoni standard .kube/config - simili għal kif tagħmel kubectl.

Навигация

B'mod awtomatiku, tinfetaħ tieqa bl-ispazju tal-isem default speċifikat għall-kuntest. Jiġifieri jekk ktibt kubectl config set-context --current --namespace=test, imbagħad jinfetaħ l-ispazju tal-isem test. (Ara hawn taħt għal kuntesti/ispazji tal-ismijiet li jinbidlu.)

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Mur fuq mod ta' kmand isir billi tagħfas ":". Wara dan, tista 'tikkontrolla l-operat ta' k9s billi tuża kmandi - pereżempju, biex tara l-lista ta 'StatefulSets (fl-ispazju tal-isem attwali), tista' tidħol :sts.

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Għal xi riżorsi oħra ta' Kubernetes:

  • :ns — spazji tal-ismijiet;
  • :deploy — Skjeramenti;
  • :ing — Dħul;
  • :svc — Servizzi.

Biex turi lista sħiħa ta 'tipi ta' riżorsi disponibbli għall-wiri, hemm kmand :aliases.

Huwa wkoll konvenjenti li tara l-lista ta 'kmandi disponibbli b'kombinazzjonijiet ta' hot key fit-tieqa attwali: biex tagħmel dan, ikklikkja fuq "?".

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Ukoll fil-k9s hemm mod ta' tfittxija, biex tmur għaliha huwa biżżejjed li tidħol "/". Magħha, titwettaq tfittxija fuq il-kontenut tat-"tieqa" attwali. Ejja ngħidu jekk dħaltx qabel :ns, għandek lista ta' namespaces miftuħa. Jekk hemm wisq minnhom, allura biex ma tiskrollx 'l isfel għal żmien twil, huwa biżżejjed li tidħol fit-tieqa bi namespaces /mynamespace.

Biex tfittex bit-tikketti, tista 'tagħżel il-miżwed kollha fl-ispazju tal-isem mixtieq, imbagħad daħħal, pereżempju, / -l app=whoami. Aħna se tikseb lista ta 'miżwed b'din it-tikketta:

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

It-tfittxija taħdem fit-tipi kollha ta 'twieqi, inklużi zkuk, wiri ta' manifesti YAML, u describe għar-riżorsi - ara hawn taħt għal aktar dettalji dwar dawn il-karatteristiċi.

Kif jidher il-fluss ġenerali tan-navigazzjoni?

Bl-użu tal-kmand :ctx tista' tagħżel kuntest:

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Biex tagħżel namespace, hemm il-kmand diġà msemmi :ns, u mbagħad tista' tuża t-tfittxija għall-ispazju mixtieq: /test.

Jekk issa nagħżlu r-riżorsa li aħna interessati fiha (per eżempju, l-istess StatefulSet), l-informazzjoni korrispondenti tidher għaliha: kemm imżiewed qed jaħdmu b'informazzjoni qasira dwarhom.

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Il-miżwed biss jistgħu jkunu ta 'interess - allura huwa biżżejjed li tidħol :pod. Fil-każ ta' ConfigMaps (:cm - għal-lista ta 'dawn ir-riżorsi), tista' tagħżel l-oġġett ta 'interess u tikklikkja fuq "u", wara li K9s jgħidlek min jużah speċifikament (din is-CM).

Karatteristika oħra utli għall-wiri tar-riżorsi hija tagħhom "x-ray" (dehra tar-raġġi X). Din il-modalità tissejjaħ mill-kmand :xray RESOURCE u ... huwa aktar faċli li turi kif taħdem milli tispjega. Hawnhekk hawn illustrazzjoni għal StatefulSets:

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes
(Kull wieħed minn dawn ir-riżorsi jista 'jiġi editjat, mibdul, magħmul describe.)

U hawn huwa l-Iskjerament b'Ingress:

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Ħidma bir-riżorsi

Tista' tikseb informazzjoni dwar kull riżorsa f'YAML jew tagħha describe billi tagħfas is-shortcuts tat-tastiera korrispondenti (“y” u “d”, rispettivament). Naturalment, hemm operazzjonijiet saħansitra aktar bażiċi: il-lista tagħhom u s-shortcuts tat-tastiera huma dejjem viżibbli grazzi għal "header" konvenjenti fl-interface (moħbija billi tagħfas Ctrl + e).

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Meta teditja kwalunkwe riżors ("e" wara l-għażla tagħha), jinfetaħ l-editur tat-test definit fil-varjabbli tal-ambjent (export EDITOR=vim).

U hawnhekk hija kif tidher id-deskrizzjoni dettaljata tar-riżors (describe):

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Dan l-output (jew l-output tal-wiri tal-manifest tar-riżorsi YAML) jista 'jiġi ssejvjat bl-użu tas-shortcut tat-tastiera familjari Ctrl + s. Fejn se jiġi ffrankat se jkun magħruf mill-messaġġ K9s:

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

Tista 'wkoll tirrestawra r-riżorsi mill-fajls ta' backup maħluqa, wara li tneħħi t-tikketti u l-annotazzjonijiet tas-sistema. Biex tagħmel dan, trid tmur fid-direttorju magħhom (:dir /tmp), imbagħad agħżel il-fajl mixtieq u applika apply.

Mill-mod, fi kwalunkwe ħin tista 'tmur lura għar-ReplicaSet preċedenti jekk ikun hemm problemi ma' dak attwali. Biex tagħmel dan, agħżel l-RS mixtieqa (:rs għal-lista tagħhom):

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

... u rollback bi Ctrl + l. Għandna nirċievu notifika li kollox mar tajjeb:

k9s/whoami-5cfbdbb469 successfully rolled back

U biex tiskala r-repliki, ikklikkja fuq il-"s" (skala) u agħżel in-numru mixtieq ta' każijiet:

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Tista 'tidħol f'kull wieħed mill-kontenituri billi tuża l-qoxra: biex tagħmel dan, mur fil-powd mixtieq, ikklikkja fuq "s" (qoxra) u agħżel il-kontenitur.

Karatteristiċi oħra

Naturalment, il-wiri ta 'zkuk huwa wkoll appoġġjat ("l" għar-riżors magħżul). U sabiex tara zkuk ġodda, m'hemmx bżonn li kontinwament tagħfas Enter: huwa biżżejjed li timmarka ("m"), u mbagħad issegwi biss messaġġi ġodda.

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Ukoll fl-istess tieqa, tista 'tagħżel il-medda ta' ħin għall-output ta 'zkuk:

  • ċavetta "1" - għal minuta 1;
  • "2" - 5 minuti;
  • "3" - 15 minuti;
  • "4" - 30 minuti;
  • "5" - 1 siegħa;
  • "0" - għall-ħajja kollha tal-pod.

Mod ta' tħaddim speċjali Pulse (kmand :pulse) turi informazzjoni ġenerali dwar il-cluster Kubernetes:

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Fiha tista 'tara n-numru ta' riżorsi u l-istatus tagħhom (aħdar juri dawk li għandhom l-istatus Running).

Karatteristika oħra friska ta 'K9s tissejjaħ Popeye. Jiċċekkja r-riżorsi kollha għal ċerti kriterji ta 'korrettezza u juri l-"klassifikazzjoni" li tirriżulta bi spjegazzjonijiet. Per eżempju, tista 'tara li m'hemmx biżżejjed kampjuni jew limiti, u xi kontenitur jista' jaħdem bħala għerq ...

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Hemm appoġġ bażiku għal Helm. Per eżempju, dan huwa kif tista 'tara r-rilaxxi skjerati fil-cluster:

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

Kriterju

Anke mibnija fil-K9s hey huwa ġeneratur sempliċi tat-tagħbija tas-server HTTP, alternattiva għall-ab magħruf aħjar (ApacheBench).

Biex tkun tista', trid tattiva l-port-forward fil-pod. Biex tagħmel dan, agħżel il-pod u agħfas Shift + f, mur fis-submenu port-forward billi tuża l-alias "pf".

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Wara li tagħżel il-port u tagħfas Ctrl + b, il-benchmark innifsu jibda. Ir-riżultati tax-xogħol tiegħu huma maħżuna fil /tmp u huma disponibbli għall-wiri aktar tard fil-K9s.

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes
Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Biex tibdel il-konfigurazzjoni tal-benchmark, għandek bżonn toħloq fajl $HOME/.k9s/bench-<my_context>.yml (determinat għal kull cluster).

NB: Huwa importanti li l-estensjoni tal-fajls YAML kollha f'direttorju .k9s kien eżattament .yml (.yaml ma taħdimx sew).

Eżempju ta' konfigurazzjoni:

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

Id-dehra tal-kolonni għal-listi ta' riżorsi hija modifikata billi jinħoloq fajl $HOME/.k9s/views.yml. Eżempju tal-kontenut tiegħu:

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

Veru, m'hemmx biżżejjed kolonna għat-tikketti, li għalihom hemm kwistjoni fil-proġett.

L-għażla skont il-kolonni titwettaq permezz ta' shortcuts tat-tastiera:

  • Shift + n - bl-isem;
  • Shift + o - minn nodi;
  • Shift + i - mill-IP;
  • Shift + a - mill-ħajja tal-kontenitur;
  • Shift + t - bin-numru ta 'startjar mill-ġdid;
  • Shift + r - mill-istatus ta 'prontezza;
  • Shift + c - mill-konsum tas-CPU;
  • Shift + m - mill-konsum tal-memorja.

Jekk xi ħadd ma jħobbx l-iskema tal-kulur default, K9s anke jappoġġja ġlud. Eżempji lesti (7 biċċiet) huma disponibbli hawn. Hawn eżempju ta 'waħda minn dawn il-ġlud (fil-flotta):

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Plugins

Fl-aħħarnett, il- plugins jippermettulek tespandi l-kapaċitajiet tal-K9s. Jien stess użajt waħda minnhom biss fix-xogħol tiegħi - kubectl get all -n $namespace.

Jidher bħal dan. Oħloq fajl $HOME/.k9s/plugin.yml b'kontenut bħal dan:

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"

Issa tista 'tmur fl-ispazju tal-isem u agħfas "g" biex tesegwixxi bil-kmand korrispondenti:

Ħarsa ġenerali lejn k9s - interface terminali avvanzat għal Kubernetes

Fost il-plugins hemm, pereżempju, integrazzjoni ma 'kubectl-jq u utilità biex tara zkuk poppa.

Konklużjoni

Għat-togħma tiegħi, K9s irriżultaw li kienu konvenjenti ħafna biex taħdem magħhom: tista 'malajr tidra tfittex dak kollu li għandek bżonn mingħajr ma tużah. kubectl. Kont kuntent bil-fehma tar-zkuk u l-iffrankar tagħhom, l-editjar rapidu tar-riżorsi, il-veloċità tax-xogħol b'mod ġenerali *, il-mod Popeye irriżulta li kien utli. Aċċenn speċjali hija l-abbiltà li toħloq plugins u timmodifika l-applikazzjoni biex taqbel mal-bżonnijiet tiegħek.

* Għalkemm, b'volum kbir ta 'zkuk, innotajt ukoll it-tħaddim bil-mod tal-K9s. F'mumenti bħal dawn, l-utilità "tiekol" 2 cores mill-Intel Xeon E312xx u tista 'saħansitra tiffriża.

X'inhu nieqes bħalissa? Qlib malajr għall-verżjoni preċedenti (m'aħniex nitkellmu dwar RS) mingħajr ma mmorru fid-direttorju. Barra minn hekk, l-irkupru jseħħ biss għal biss riżorsa: jekk tħassar annotazzjoni jew tikketta, ikollok tħassar u tirrestawra r-riżors kollu (dan huwa fejn trid tmur fid-direttorju). Trifle ieħor - m'hemmx biżżejjed data għal tali "backups" salvati.

PS

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment