Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

K9s disponigas terminalan uzantinterfacon por interagado kun Kubernetes-aretoj. La celo de ĉi tiu Malfermfonta projekto estas faciligi navigi, monitori kaj administri aplikaĵojn en K8s. K9s konstante kontrolas ŝanĝojn en Kubernetes kaj ofertas rapidajn komandojn por labori kun monitoritaj rimedoj.

La projekto estas skribita en Go kaj ekzistas de pli ol jaro kaj duono: la unua kompromiso estis farita la 1-an de februaro 2019. En la momento de la skribado, estas pli ol 9000 steloj GitHub kaj ĉirkaŭ 80 kontribuantoj. Ni vidu, kion k9s povas fari?

Instalado kaj lanĉo

Ĉi tio estas kliento (rilate al la Kubernetes-grupo) aplikaĵo, kiu estas plej facile rulebla kiel Docker-bildo:

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

Por iuj Linukso-distribuoj kaj aliaj operaciumoj, ekzistas ankaŭ pretaj por instali pakoj. Ĝenerale, por Linukso-sistemoj, vi povas instali binaran dosieron:

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

Ne ekzistas specifaj postuloj por la K8s-areto mem. Juĝante laŭ la recenzoj, la aplikaĵo ankaŭ funkcias kun pli malnovaj versioj de Kubernetes kiel 1.12.

La aplikaĵo estas lanĉita per la norma agordo .kube/config - simile kiel ĝi faras kubectl.

Навигация

Defaŭlte, fenestro malfermiĝas kun la defaŭlta nomspaco specifita por la kunteksto. Tio estas, se vi skribis kubectl config set-context --current --namespace=test, tiam malfermos la nomspaco test. (Vidu malsupre por ŝanĝi kuntekstojn/nomspacojn.)

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Iru al komanda reĝimo estas farita premante ":". Post tio, vi povas kontroli la funkciadon de k9s per komandoj - ekzemple, por vidi la liston de StatefulSets (en la nuna nomspaco), vi povas enigi :sts.

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Por iuj aliaj rimedoj de Kubernetes:

  • :ns — nomspacoj;
  • :deploy — Deplojoj;
  • :ing — Eniroj;
  • :svc — Servoj.

Por montri kompletan liston de rimedotipoj disponeblaj por rigardado, estas komando :aliases.

Ankaŭ estas oportune vidi la liston de komandoj disponeblaj per varmaklavaj kombinaĵoj ene de la nuna fenestro: por fari tion, simple alklaku "?".

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Ankaŭ en k9s ekzistas serĉreĝimo, por iri al kiu sufiĉas enigi "/". Per ĝi, serĉo estas farita sur la enhavo de la nuna "fenestro". Ni diru, ĉu vi antaŭe eniris :ns, vi havas liston de nomspacoj malfermita. Se estas tro da ili, tiam por ne rulumi malsupren dum longa tempo, sufiĉas eniri en la fenestron kun nomspacoj. /mynamespace.

Por serĉi laŭ etikedoj, vi povas elekti ĉiujn podojn en la dezirata nomspaco, poste enigi, ekzemple, / -l app=whoami. Ni ricevos liston de podoj kun ĉi tiu etikedo:

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

La serĉo funkcias en ĉiuj specoj de fenestroj, inkluzive de protokoloj, rigardado de YAML-manifestoj, kaj describe por rimedoj - vidu sube por pliaj detaloj pri ĉi tiuj funkcioj.

Kia aspektas la ĝenerala navigacia fluo?

Uzante la komandon :ctx vi povas elekti kuntekston:

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Por elekti nomspacon, ekzistas la jam menciita komando :ns, kaj tiam vi povas uzi la serĉon por la dezirata spaco: /test.

Se ni nun elektas la rimedon pri kiu ni interesiĝas (ekzemple la sama StatefulSet), la responda informo aperos por ĝi: kiom da podoj funkcias kun mallongaj informoj pri ili.

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Nur balgoj povas interesi - tiam sufiĉas eniri :pod. En la kazo de ConfigMaps (:cm - por la listo de ĉi tiuj rimedoj), vi povas elekti la interesan objekton kaj klaki sur "u", post kio K9s diros al vi, kiu specife uzas ĝin (ĉi tiu CM).

Alia oportuna trajto por vidi rimedojn estas ilia "X-radio" (Rentgenfota vido). Ĉi tiu reĝimo estas vokita de la komando :xray RESOURCE kaj ... estas pli facile montri kiel ĝi funkcias ol klarigi. Jen ilustraĵo por StatefulSets:

Superrigardo de k9s - altnivela fina interfaco por Kubernetes
(Ĉiu el ĉi tiuj rimedoj povas esti redaktita, ŝanĝita, farita describe.)

Kaj jen Deplojo kun Eniro:

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Laborante kun rimedoj

Vi povas ricevi informojn pri ĉiu rimedo en YAML aŭ ties describe premante la respondajn klavarajn ŝparvojojn ("y" kaj "d", respektive). Kompreneble, estas eĉ pli bazaj operacioj: iliaj listo kaj klavaroj estas ĉiam videblaj danke al oportuna "kapo" en la interfaco (kaŝita premante Ctrl + e).

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Dum redaktado de iu ajn rimedo ("e" post ĝia elekto), la tekstredaktilo difinita en la mediovariabloj estas malfermita (export EDITOR=vim).

Kaj jen kiel aspektas la detala priskribo de la rimedo (describe):

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Ĉi tiu eligo (aŭ la eligo de vidado de la YAML-rimeda manifesto) povas esti konservita uzante la konatan klavkombinon Ctrl + s. Kie ĝi estos konservita estos konata de la K9s-mesaĝo:

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

Vi ankaŭ povas restarigi rimedojn de la kreitaj rezervaj dosieroj, post forigo de sistemaj etikedoj kaj komentarioj. Por fari tion, vi devas iri al la dosierujo kun ili (:dir /tmp), tiam elektu la deziratan dosieron kaj apliki apply.

Cetere, iam ajn vi povas reveni al la antaŭa ReplicaSet se estas problemoj kun la nuna. Por fari tion, elektu la deziratan RS (:rs por ilia listo):

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

... kaj retrovu per Ctrl + l. Ni devus ricevi sciigon, ke ĉio iris bone:

k9s/whoami-5cfbdbb469 successfully rolled back

Kaj por grimpi la kopiojn, simple alklaku la "s" (skalo) kaj elektu la deziratan nombron da okazoj:

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Vi povas enigi iun ajn el la ujoj uzante la ŝelon: por fari tion, iru al la dezirata podo, alklaku "s" (ŝelo) kaj elektu la ujon.

Aliaj trajtoj

Kompreneble, ankaŭ spektado de protokoloj estas subtenata ("l" por la elektita rimedo). Kaj por rigardi novajn protokolojn, ne necesas konstante premi Enter: sufiĉas marki ("m"), kaj poste nur spuri novajn mesaĝojn.

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Ankaŭ en la sama fenestro, vi povas elekti la tempoperiodon por eligo de protokoloj:

  • klavo "1" - dum 1 minuto;
  • "2" - 5 minutoj;
  • "3" - 15 minutoj;
  • "4" - 30 minutoj;
  • "5" - 1 horo;
  • "0" - dum la tuta vivdaŭro de la balgo.

Speciala operacia reĝimo Pulso (komando :pulse) montras ĝeneralajn informojn pri la Kubernetes-areto:

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

En ĝi vi povas vidi la nombron da rimedoj kaj ilia stato (verda montras tiujn, kiuj havas la statuson Running).

Alia bonega trajto de K9s nomiĝas Popeye. Ĝi kontrolas ĉiujn rimedojn por certaj kriterioj de ĝusteco kaj montras la rezultan "takson" kun klarigoj. Ekzemple, vi povas vidi, ke ne estas sufiĉe da specimenoj aŭ limoj, kaj iu ujo povas funkcii kiel radiko ...

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Estas baza subteno por Helm. Ekzemple, jen kiel vi povas vidi la eldonojn deplojitajn en la areto:

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

etalono

Eĉ enkonstruita en K9s hej estas simpla HTTP-servila ŝarĝgeneratoro, alternativo al la pli konata ab (ApacheBench).

Por ebligi ĝin, vi devas ebligi port-antaŭen en la pod. Por fari tion, elektu la pod kaj premu Shift + f, iru al la port-antaŭen submenuo uzante la "pf" kaŝnomon.

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Post elekto de la haveno kaj premado Ctrl + b, la komparnormo mem komenciĝos. La rezultoj de lia laboro estas konservitaj en /tmp kaj estas haveblaj por posta spektado en K9s.

Superrigardo de k9s - altnivela fina interfaco por Kubernetes
Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Por ŝanĝi la agordon de la komparnormo, vi devas krei dosieron $HOME/.k9s/bench-<my_context>.yml (determinita por ĉiu areto).

NB: Gravas ke la etendo de ĉiuj YAML dosieroj en dosierujo .k9s estis ĝuste .yml (.yaml ne funkcias ĝuste).

Ekzemplo de agordo:

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

interfaco

La aspekto de kolumnoj por listoj de rimedoj estas modifita kreante dosieron $HOME/.k9s/views.yml. Ekzemplo de ĝia enhavo:

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

Vere, ne estas sufiĉe da kolumno por etikedoj, por kiuj ekzistas afero en la projekto.

Ordigo laŭ kolumnoj estas farata per klavarvojoj:

  • Shift + n - laŭ nomo;
  • Shift + o - per nodoj;
  • Shift + i - per IP;
  • Shift + a - laŭ la vivdaŭro de la ujo;
  • Shift + t - per la nombro da rekomencoj;
  • Shift + r - per preta stato;
  • Shift + c - laŭ CPU-konsumo;
  • Shift + m - per memorkonsumo.

Se iu ne ŝatas la defaŭltan kolorskemon, K9s eĉ subtenas feloj. Pretaj ekzemploj (7 pecoj) haveblas tie. Jen ekzemplo de unu el ĉi tiuj haŭtoj (en la mararmeo):

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Kromaĵoj

Fine kromaĵojn permesas vin vastigi la kapablojn de K9s. Mi mem uzis nur unu el ili en mia laboro - kubectl get all -n $namespace.

Ĝi aspektas tiel. Kreu dosieron $HOME/.k9s/plugin.yml kun enhavo tia:

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"

Nun vi povas iri al la nomspaco kaj premu "g" por ekzekuti per la responda komando:

Superrigardo de k9s - altnivela fina interfaco por Kubernetes

Inter la kromprogramoj estas ekzemple integriĝoj kun kubectl-jq kaj ilo por vidi protokolojn. severa.

konkludo

Por mia gusto, K9s montriĝis tre oportuna por labori: vi povas rapide alkutimiĝi serĉi ĉion, kion vi bezonas sen uzi ĝin. kubectl. Mi ĝojis pri la vido de la protokoloj kaj ilia ŝparado, rapida redaktado de rimedoj, la rapideco de laboro ĝenerale *, la Popeye-reĝimo montriĝis utila. Speciala mencio estas la kapablo krei kromaĵojn kaj modifi la aplikaĵon laŭ viaj bezonoj.

* Kvankam, kun granda volumo da ŝtipoj, mi ankaŭ rimarkis la malrapidan funkciadon de K9s. En tiaj momentoj, la utileco "manĝis" 2 kernojn de la Intel Xeon E312xx kaj eĉ povus frostigi.

Kio mankas nuntempe? Rapida retroiro al la antaŭa versio (ni ne parolas pri RS) sen iri al la dosierujo. Krome, reakiro okazas nur por tuta rimedo: se vi forigas komentarion aŭ etikedon, vi devos forigi kaj restarigi la tutan rimedon (ĉi tie vi devas iri al la dosierujo). Alia bagatelo - ne estas sufiĉe da dato por tiaj konservitaj "rezervoj".

PS

Legu ankaŭ en nia blogo:

fonto: www.habr.com

Aldoni komenton