Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

K9 za hutoa kiolesura cha mtumiaji wa mwisho kwa kuingiliana na makundi ya Kubernetes. Lengo la mradi huu wa Open Source ni kurahisisha kuvinjari, kufuatilia na kudhibiti programu katika K8s. K9s hufuatilia mabadiliko kila mara katika Kubernetes na hutoa amri za haraka za kufanya kazi na rasilimali zinazofuatiliwa.

Mradi huo umeandikwa katika Go na umekuwepo kwa zaidi ya mwaka mmoja na nusu: ahadi ya kwanza ilifanywa mnamo Februari 1, 2019. Wakati wa kuandika, kuna nyota 9000+ kwenye GitHub na wachangiaji wapatao 80. Hebu tuone k9s wanaweza kufanya nini?

Ufungaji na uzinduzi

Huyu ni mteja (kuhusiana na kikundi cha Kubernetes) programu, ambayo ni rahisi kuendesha kama picha ya Docker:

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

Kwa usambazaji wa Linux na mifumo mingine ya uendeshaji pia kuna tayari kusakinisha vifurushi. Kwa ujumla, kwa mifumo ya Linux unaweza kusakinisha faili ya binary:

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

Hakuna mahitaji maalum kwa nguzo ya K8s yenyewe. Kwa kuzingatia hakiki, programu pia inafanya kazi na matoleo ya zamani ya Kubernetes kama vile 1.12.

Programu huanza kutumia usanidi wa kawaida .kube/config - sawa na jinsi inavyofanya kubectl.

Навигация

Kwa chaguo-msingi, dirisha hufungua na nafasi ya majina ya kawaida iliyoainishwa kwa muktadha. Hiyo ni, ikiwa uliandika kubectl config set-context --current --namespace=test, kisha nafasi ya majina itafunguka test. (Angalia hapa chini kuhusu kubadilisha miktadha/nafasi za majina.)

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Enda kwa hali ya amri inafanywa kwa kubofya ":". Kisha unaweza kudhibiti jinsi k9s inavyofanya kazi kwa kutumia amri - kwa mfano, kutazama orodha ya StatefulSets (katika nafasi ya sasa ya majina) unaweza kuingiza. :sts.

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Kwa rasilimali zingine za Kubernetes:

  • :ns - Nafasi za majina;
  • :deploy - Usambazaji;
  • :ing - Ingress;
  • :svc - Huduma.

Ili kuonyesha orodha kamili ya aina za rasilimali zinazopatikana kwa kutazama, kuna amri :aliases.

Pia ni rahisi kutazama orodha ya amri zinazopatikana kupitia mchanganyiko wa hotkey ndani ya dirisha la sasa: kufanya hivyo, bonyeza tu "?".

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Pia katika k9s kuna hali ya utafutaji, kwenda ambayo unahitaji tu kuingiza "/". Inatafuta yaliyomo kwenye "dirisha" ya sasa. Kwa mfano, ikiwa uliingia hapo awali :ns, una orodha ya nafasi za majina zilizofunguliwa. Ikiwa kuna mengi yao, basi ili usitembee chini kwa muda mrefu, ingiza tu kwenye dirisha na nafasi za majina. /mynamespace.

Kutafuta kwa lebo, unaweza kuchagua ganda zote kwenye nafasi ya majina unayotaka, na kisha ingiza, kwa mfano, / -l app=whoami. Tutapata orodha ya maganda yenye lebo hii:

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Utafutaji hufanya kazi katika aina zote za madirisha, ikiwa ni pamoja na kumbukumbu, kutazama maonyesho ya YAML na describe kwa nyenzo - tazama hapa chini kwa habari zaidi juu ya uwezo huu.

Je, mtiririko wa jumla wa urambazaji unaonekanaje?

Kutumia amri :ctx unaweza kuchagua muktadha:

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Ili kuchagua nafasi ya majina kuna amri iliyotajwa tayari :ns, na kisha unaweza kutumia utaftaji wa nafasi unayotaka: /test.

Ikiwa sasa tutachagua rasilimali tunayopendezwa nayo (kwa mfano, StatefulSet sawa), taarifa inayolingana itatokea kwa ajili yake: ni maganda ngapi yanayoendesha na maelezo mafupi kuwahusu.

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Maganda tu yanaweza kuwa ya riba - basi ingiza tu :pod. Kwa upande wa ConfigMaps (:cm - kwa orodha ya rasilimali hizi) unaweza kuchagua kitu cha kupendeza na ubofye "u", baada ya hapo K9s itakuambia ni nani hasa (CM hii) anaitumia.

Kipengele kingine cha urahisi cha kutazama rasilimali ni yao "X-ray" (mtazamo wa XRay). Hali hii inaitwa kwa amri :xray RESOURCE na ... ni rahisi kuonyesha jinsi inavyofanya kazi kuliko kuelezea. Hapa kuna kielelezo cha StatefulSets:

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes
(Kila moja ya rasilimali hizi inaweza kuhaririwa, kubadilishwa, kufanywa describe.)

Na hapa kuna Upelekaji na Ingress:

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Kufanya kazi na Rasilimali

Taarifa kuhusu kila rasilimali inaweza kupatikana katika YAML au yake describe kwa kubonyeza mikato ya kibodi inayofaa ("y" na "d" mtawalia). Kuna, bila shaka, shughuli za msingi zaidi: orodha yao na njia za mkato za kibodi daima zinaonekana shukrani kwa "kichwa" cha urahisi kwenye interface (kilichofichwa kwa kushinikiza Ctrl + e).

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Wakati wa kuhariri rasilimali yoyote ("e" baada ya kuichagua), kihariri cha maandishi kilifafanuliwa katika anuwai za mazingira (export EDITOR=vim).

Na hii ndio maelezo ya kina ya rasilimali inaonekana kama (describe):

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Toleo hili (au matokeo ya kutazama faili ya maelezo ya YAML ya nyenzo) inaweza kuhifadhiwa kwa kutumia njia ya mkato ya kibodi ya Ctrl + s. Ambapo itahifadhiwa itajulikana kutoka kwa ujumbe wa K9s:

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

Unaweza pia kurejesha rasilimali kutoka kwa faili za chelezo zilizoundwa kwa kuondoa kwanza lebo za mfumo na vidokezo. Ili kufanya hivyo utahitaji kwenda kwenye saraka nao (:dir /tmp), kisha chagua faili unayotaka na uitumie apply.

Kwa njia, wakati wowote unaweza kurudi kwenye ReplicaSet ya awali ikiwa kuna matatizo na ya sasa. Ili kufanya hivyo, unahitaji kuchagua RS inayotaka (:rs kwa orodha yao):

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

... na kurudisha nyuma kwa kutumia Ctrl + l. Tunapaswa kupokea arifa kwamba kila kitu kilifanikiwa:

k9s/whoami-5cfbdbb469 successfully rolled back

Na kuongeza nakala, bonyeza tu kwenye "s" (wadogo) na uchague nambari inayotakiwa ya nakala:

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Unaweza kuingiza chombo chochote kwa kutumia shell: kwa kufanya hivyo, nenda kwenye pod inayotakiwa, bofya kwenye "s" (shell) na uchague chombo.

Vipengele vingine

Bila shaka, kumbukumbu za kutazama pia zinasaidiwa ("l" kwa rasilimali iliyochaguliwa). Na kutazama kumbukumbu mpya, hakuna haja ya kushinikiza mara kwa mara Ingiza: fanya tu alama ("m"), na kisha ufuatilie ujumbe mpya tu.

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Pia kwenye dirisha lile lile unaweza kuchagua safu ya saa ya kutoa magogo:

  • ufunguo "1" - katika dakika 1;
  • "2" - dakika 5;
  • "3" - dakika 15;
  • "4" - dakika 30;
  • "5" - saa 1;
  • "0" - kwa maisha yote ya ganda.

Hali maalum ya uendeshaji Pulse (amri :pulse) inaonyesha habari ya jumla kuhusu nguzo ya Kubernetes:

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Ndani yake unaweza kuona idadi ya rasilimali na hali zao (zile ambazo zina hali zinaonyeshwa kwa kijani Running).

Kipengele kingine cha kuvutia cha K9s kinaitwa Popeye. Hukagua rasilimali zote kwa vigezo fulani vya usahihi na huonyesha "ukadiriaji" unaotokana na maelezo. Kwa mfano, unaweza kuona kwamba hakuna sampuli au vikomo vya kutosha, na chombo fulani kinaweza kuendeshwa kama mzizi...

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Kuna msaada wa msingi wa Helm. Kwa mfano, hivi ndivyo unavyoweza kuona matoleo yaliyotumwa kwa nguzo:

:helm all # всС
:helm $namespace # Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½

Benchmark

Waliijenga hata katika K9s hey ni jenereta rahisi ya kupakia kwa seva ya HTTP, mbadala wa ab inayojulikana zaidi (ApacheBench).

Ili kuiwezesha, utahitaji kuwezesha usambazaji wa bandari kwenye ganda. Ili kufanya hivyo, chagua ganda na ubonyeze Shift + f, nenda kwenye menyu ndogo ya kupeleka mbele mlango kwa kutumia lakabu "pf".

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Baada ya kuchagua bandari na kushinikiza Ctrl + b, benchmark yenyewe itazindua. Matokeo ya kazi yake yamehifadhiwa ndani /tmp na zinapatikana kwa kutazamwa baadaye katika K9s.

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes
Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Ili kubadilisha usanidi wa benchmark unahitaji kuunda faili $HOME/.k9s/bench-<my_context>.yml (imefafanuliwa kwa kila nguzo).

NB: Ni muhimu kwamba upanuzi wa faili zote za YAML kwenye saraka .k9s ilikuwa hasa .yml (.yaml haifanyi kazi kwa usahihi).

Mfano wa usanidi:

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

Mwonekano wa safu wima za orodha za rasilimali hurekebishwa kwa kuunda faili $HOME/.k9s/views.yml. Mfano wa yaliyomo:

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

Kweli, hakuna safu ya kutosha kwa ajili ya maandiko, ambayo kuna suala katika mradi huo.

Kupanga kwa safu wima hufanywa kwa kutumia mikato ya kibodi:

  • Shift + n - kwa jina;
  • Shift + o - kwa nodes;
  • Shift + i - kwa IP;
  • Shift + a - kwa maisha ya chombo;
  • Shift + t - kwa idadi ya kuanzisha upya;
  • Shift + r - kwa hali ya utayari;
  • Shift + c - kwa matumizi ya CPU;
  • Shift + m - kwa matumizi ya kumbukumbu.

Ikiwa mtu hapendi mpango wa rangi chaguo-msingi, K9s hata inasaidia ngozi. Mifano iliyopangwa tayari (vipande 7) vinapatikana hapa. Hapa kuna mfano wa moja ya ngozi hizi (katika jeshi la wanamaji):

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Programu-jalizi

Mwishowe programu-jalizi hukuruhusu kupanua uwezo wa K9s. Mimi mwenyewe nilitumia moja tu katika kazi yangu - kubectl get all -n $namespace.

Inaonekana hivi. Unda faili $HOME/.k9s/plugin.yml na maudhui haya:

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"

Sasa unaweza kwenda kwenye nafasi ya majina na ubonyeze "g" kutekeleza amri inayolingana:

Mapitio ya k9s - interface ya juu ya terminal kwa Kubernetes

Miongoni mwa programu-jalizi kuna, kwa mfano, miunganisho na kubectl-jq na matumizi ya kutazama kumbukumbu. mkali.

Hitimisho

Kwa ladha yangu, K9s iligeuka kuwa rahisi sana kutumia: nayo unaweza kuzoea haraka kupata kila kitu unachohitaji bila kutumia. kubectl. Nilifurahishwa na kutazama kumbukumbu na kuzihifadhi, uhariri wa haraka wa rasilimali, kasi ya kazi kwa ujumla *, hali ya Popeye iligeuka kuwa muhimu. Taja maalum inapaswa kufanywa juu ya uwezo wa kuunda programu-jalizi na kubinafsisha programu ili kukidhi mahitaji yako.

* Ingawa, kwa idadi kubwa ya magogo, pia niliona uendeshaji wa polepole wa K9s. Kwa wakati kama huo, matumizi "yalikula" cores 2 za Intel Xeon E312xx na inaweza hata kufungia.

Ni nini kinakosekana kwa sasa? Urejeshaji wa haraka kwa toleo la awali (hatuzungumzii kuhusu RS) bila kwenda kwenye saraka. Kwa kuongeza, marejesho hutokea tu kwa tu rasilimali: ikiwa umefuta maelezo au lebo, utalazimika kufuta na kurejesha rasilimali nzima (hapa ndio utahitaji kwenda kwenye saraka). Kitu kingine kidogo ni kwamba tarehe ya "chelezo" zilizohifadhiwa haipo.

PS

Soma pia kwenye blogi yetu:

Chanzo: mapenzi.com

Kuongeza maoni