Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

K9s naghatag ug terminal user interface para sa pagpakig-uban sa Kubernetes clusters. Ang tumong niining Open Source nga proyekto mao ang pagpasayon ​​sa pag-navigate, pagmonitor, ug pagdumala sa mga aplikasyon sa K8s. Kanunay nga gimonitor sa K9s ang mga pagbag-o sa Kubernetes ug nagtanyag mga dali nga mando aron magtrabaho uban ang gibantayan nga mga kapanguhaan.

Ang proyekto gisulat sa Go ug naglungtad na sa kapin sa usa ka tuig ug tunga: ang una nga pasalig gihimo kaniadtong Pebrero 1, 2019. Sa panahon sa pagsulat, adunay 9000+ ka bituon sa GitHub ug mga 80 ka kontribyutor. Tan-awon nato unsay mahimo sa k9s?

Pag-instalar ug paglansad

Kini usa ka kliyente (kauban ang Kubernetes cluster) nga aplikasyon nga labing kadali nga pagdagan ingon usa ka imahe sa Docker:

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

Alang sa pipila nga mga distribusyon sa Linux ug uban pang mga operating system, adunay andam usab nga i-install mga pakete. Sa kinatibuk-an, alang sa mga sistema sa Linux, mahimo nimong i-install ang binary file:

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

Wala'y piho nga mga kinahanglanon alang sa K8s cluster mismo. Sa paghukom sa mga review, ang aplikasyon nagtrabaho usab sa mga daan nga bersyon sa Kubernetes sama sa 1.12.

Ang aplikasyon gilunsad gamit ang standard config .kube/config - parehas sa kung giunsa kini kubectl.

Pag-navigate

Sa default, ang usa ka bintana magbukas nga adunay default nga namespace nga gitakda alang sa konteksto. Kana, kung nagsulat ka kubectl config set-context --current --namespace=test, unya ang namespace moabli test. (Tan-awa sa ubos para sa pagbag-o sa konteksto/namespaces.)

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Adto sa command mode gihimo pinaagi sa pagpindot sa ":". Pagkahuman niana, mahimo nimong makontrol ang operasyon sa mga k9 gamit ang mga mando - pananglitan, aron makita ang lista sa StatefulSets (sa karon nga namespace), mahimo ka mosulod :sts.

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Alang sa ubang mga kapanguhaan sa Kubernetes:

  • :ns - mga namespaces;
  • :deploy - Mga deployment;
  • :ing - Mga pagsulod;
  • :svc - mga serbisyo.

Aron ipakita ang usa ka kompleto nga lista sa mga tipo sa kapanguhaan nga magamit alang sa pagtan-aw, adunay usa ka mando :aliases.

Kombenyente usab nga tan-awon ang lista sa mga mando nga magamit sa mga kombinasyon sa mainit nga yawe sa sulud sa karon nga bintana: aron mahimo kini, pag-klik lang sa "?".

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Naa pud sa k9s search mode, sa pag-adto diin igo na ang pagsulod sa "/". Uban niini, usa ka pagpangita ang gihimo sa mga sulud sa karon nga "window". Ingnon ta kung nakasulod ka kaniadto :ns, naa kay lista sa mga namespace nga bukas. Kung adunay daghan kaayo niini, nan aron dili mag-scroll sa taas nga panahon, igo na nga mosulod sa bintana nga adunay mga namespace. /mynamespace.

Aron makapangita pinaagi sa mga label, mahimo nimong pilion ang tanan nga mga pod sa gusto nga namespace, dayon pagsulod, pananglitan, / -l app=whoami. Makakuha kami usa ka lista sa mga pod nga adunay kini nga label:

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Ang pagpangita molihok sa tanan nga mga matang sa mga bintana, lakip ang mga troso, pagtan-aw sa YAML manifests, ug describe alang sa mga kapanguhaan - tan-awa sa ubos alang sa dugang nga mga detalye sa kini nga mga bahin.

Unsa ang hitsura sa kinatibuk-ang dagan sa nabigasyon?

Paggamit sa mando :ctx makapili ka ug konteksto:

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Para makapili ug namespace, naa nay nahisgutang command :ns, ug unya mahimo nimong gamiton ang pagpangita alang sa gusto nga luna: /test.

Kung atong pilion karon ang kapanguhaan nga interesado kita (pananglitan, parehas nga StatefulSet), ang katugbang nga kasayuran makita alang niini: pila ka pod ang nagdagan nga adunay mubu nga kasayuran bahin kanila.

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Ang mga pod lamang ang mahimong interesado - unya igo na ang pagsulod :pod. Sa kaso sa ConfigMaps (:cm - alang sa lista niini nga mga kapanguhaan), mahimo nimong pilion ang butang nga interesado ug i-klik ang "u", pagkahuman isulti kanimo ang K9s kung kinsa ang espesipikong naggamit niini (kini nga CM).

Ang laing magamit nga bahin alang sa pagtan-aw sa mga kapanguhaan mao ang ilang "x-ray" (tan-aw sa Xray). Kini nga mode gitawag sa command :xray RESOURCE ug ... mas sayon ​​ang pagpakita kon sa unsang paagi kini molihok kay sa pagpatin-aw. Ania ang usa ka ilustrasyon alang sa StatefulSets:

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes
(Ang matag usa niini nga mga kapanguhaan mahimong i-edit, usbon, mahimo describe.)

Ug ania ang Deployment sa Ingress:

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Pagtrabaho uban sa mga kapanguhaan

Makuha nimo ang impormasyon bahin sa matag kapanguhaan sa YAML o niini describe pinaagi sa pagpindot sa katugbang nga mga shortcut sa keyboard (“y” ug “d”, matag usa). Siyempre, adunay labi pa nga sukaranan nga mga operasyon: ang ilang lista ug mga shortcut sa keyboard kanunay nga makita salamat sa usa ka kombenyente nga "header" sa interface (gitago pinaagi sa pagpindot sa Ctrl + e).

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Kung nag-edit sa bisan unsang kapanguhaan ("e" pagkahuman sa pagpili niini), ang editor sa teksto nga gihubit sa mga variable sa palibot giablihan (export EDITOR=vim).

Ug ania ang hitsura sa detalyado nga paghulagway sa kapanguhaan (describe):

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Kini nga output (o ang output sa pagtan-aw sa YAML resource manifest) mahimong ma-save gamit ang pamilyar nga keyboard shortcut Ctrl + s. Kung asa kini ma-save mahibal-an gikan sa mensahe sa K9:

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

Mahimo usab nimo ibalik ang mga kapanguhaan gikan sa gihimo nga backup nga mga file, pagkahuman makuha ang mga label sa sistema ug anotasyon. Aron mahimo kini, kinahanglan nimo nga moadto sa direktoryo kauban nila (:dir /tmp), unya pilia ang gusto nga file ug i-apply apply.

Pinaagi sa dalan, sa bisan unsang oras mahimo nimong ibalik ang nauna nga ReplicaSet kung adunay mga problema sa karon. Aron mahimo kini, pilia ang gusto nga RS (:rs para sa ilang listahan):

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

... ug rollback gamit ang Ctrl + l. Kinahanglan nga makadawat kami usa ka pahibalo nga maayo ang tanan:

k9s/whoami-5cfbdbb469 successfully rolled back

Ug aron ma-scale ang mga replika, i-klik lang ang "s" (scale) ug pilia ang gusto nga gidaghanon sa mga higayon:

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Mahimo nimong isulod ang bisan unsang mga sudlanan gamit ang kabhang: aron mahimo kini, adto sa gusto nga pod, i-klik ang "s" (kabhang) ug pilia ang sudlanan.

Ubang mga bahin

Siyempre, ang pagtan-aw sa mga troso gisuportahan usab ("l" alang sa pinili nga kapanguhaan). Ug aron matan-aw ang bag-ong mga troso, dili kinahanglan nga kanunay nga ipadayon ang Enter: igo na nga markahan ang (“m”), ug dayon pagsubay lamang sa mga bag-ong mensahe.

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Usab sa parehas nga bintana, mahimo nimong pilion ang sakup sa oras alang sa output sa mga troso:

  • yawe "1" - alang sa 1 ka minuto;
  • "2" - 5 ka minuto;
  • "3" - 15 ka minuto;
  • "4" - 30 ka minuto;
  • "5" - 1 ka oras;
  • "0" - alang sa tibuok kinabuhi sa pod.

Espesyal nga operating mode Pulse (command :pulse) nagpakita sa kinatibuk-ang impormasyon mahitungod sa Kubernetes cluster:

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Diha niini imong makita ang gidaghanon sa mga kahinguhaan ug ang ilang status (berde nagpakita niadtong adunay status Running).

Laing cool nga bahin sa K9s gitawag Popeye. Gisusi niini ang tanan nga mga kahinguhaan alang sa piho nga pamatasan sa pagkahusto ug gipakita ang sangputanan nga "rating" nga adunay mga pagpasabut. Pananglitan, imong makita nga walay igo nga mga sample o mga limitasyon, ug ang pipila ka sudlanan mahimong modagan ingon nga gamut ...

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Adunay sukaranan nga suporta alang sa Helm. Pananglitan, mao kini kung giunsa nimo makita ang mga pagpagawas nga gipakatap sa cluster:

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

Benchmark

Bisan gitukod sa K9s Hey maoy usa ka yano nga HTTP server load generator, usa ka alternatibo sa mas nailhan nga ab (ApacheBench).

Aron mahimo kini, kinahanglan nimo nga i-enable ang port-forward sa pod. Aron mahimo kini, pilia ang pod ug pindota ang Shift + f, adto sa port-forward submenu gamit ang "pf" alias.

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Pagkahuman sa pagpili sa pantalan ug pagpadayon sa Ctrl + b, ang benchmark mismo magsugod. Ang mga resulta sa iyang trabaho gitipigan sa /tmp ug magamit alang sa pagtan-aw sa ulahi sa K9s.

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes
Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Aron mabag-o ang pagsumpo sa benchmark, kinahanglan nimo nga maghimo usa ka file $HOME/.k9s/bench-<my_context>.yml (determinado alang sa matag cluster).

NB: Importante nga ang extension sa tanang YAML files sa usa ka directory .k9s sakto gyud .yml (.yaml dili molihok sa husto).

Pananglitan sa pag-configure:

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

Ang dagway sa mga kolum alang sa mga lista sa mga kahinguhaan giusab pinaagi sa paghimo og file $HOME/.k9s/views.yml. Usa ka pananglitan sa sulod niini:

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

Tinuod, wala'y igo nga kolum alang sa mga label, diin adunay isyu sa proyekto.

Ang paghan-ay pinaagi sa mga kolum gihimo pinaagi sa mga shortcut sa keyboard:

  • Shift + n - pinaagi sa ngalan;
  • Pagbalhin + o - pinaagi sa mga node;
  • Shift + i - pinaagi sa IP;
  • Shift + a - sa tibuok kinabuhi sa sudlanan;
  • Shift + t - pinaagi sa gidaghanon sa mga restart;
  • Shift + r - pinaagi sa kahimtang sa pagkaandam;
  • Shift + c - pinaagi sa pagkonsumo sa CPU;
  • Pagbalhin + m - pinaagi sa pagkonsumo sa memorya.

Kung adunay dili ganahan sa default color scheme, gisuportahan pa gani sa K9s panit. Ang andam nga mga pananglitan (7 ka piraso) anaa dinhi. Ania ang usa ka pananglitan sa usa niini nga mga panit (sa navy):

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Mga plugin

Sa katapusan mga plugins nagtugot kanimo sa pagpalapad sa mga kapabilidad sa K9s. Ako sa akong kaugalingon naggamit lamang sa usa niini sa akong trabaho - kubectl get all -n $namespace.

Murag mao ni. Paghimo og file $HOME/.k9s/plugin.yml nga adunay sulod nga sama niini:

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"

Karon makaadto ka sa namespace ug pindota ang "g" aron ipatuman ang katugbang nga mando:

Overview sa k9s - usa ka advanced terminal interface para sa Kubernetes

Lakip sa mga plugins adunay, pananglitan, mga panagsama sa kubectl-jq ug usa ka gamit alang sa pagtan-aw sa mga troso ulan.

konklusyon

Alang sa akong lami, ang K9s nahimong sayon ​​​​kaayo sa pagtrabaho: dali ka nga maanad sa pagpangita sa tanan nga imong gikinahanglan nga dili kini gamiton. kubectl. Nalipay ako sa pagtan-aw sa mga troso ug sa ilang pagtipig, dali nga pag-edit sa mga kahinguhaan, ang katulin sa trabaho sa kinatibuk-an *, ang Popeye mode nahimo’g mapuslanon. Ang usa ka espesyal nga paghisgot mao ang abilidad sa paghimo og mga plugins ug pag-usab sa aplikasyon aron mohaum sa imong mga panginahanglan.

* Bisan pa, sa daghang gidaghanon sa mga troso, namatikdan usab nako ang hinay nga operasyon sa mga K9. Sa ingon nga mga gutlo, ang utility "nagkaon" sa 2 nga mga cores gikan sa Intel Xeon E312xx ug mahimo pa nga mag-freeze.

Unsa ang kulang sa pagkakaron? Dali nga pag-rollback sa miaging bersyon (wala kami maghisgot bahin sa RS) nga wala moadto sa direktoryo. Dugang pa, ang pagkaayo mahitabo lamang alang sa total kapanguhaan: kung imong tangtangon ang usa ka anotasyon o label, kinahanglan nimo nga papason ug ibalik ang tibuuk nga kapanguhaan (dinhi ang kinahanglan nimo nga moadto sa direktoryo). Laing trifle - walay igong petsa alang sa ingon nga naluwas nga "mga backup".

PS

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment