Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

K9s ofron një ndërfaqe përdoruesi terminal për ndërveprim me grupimet Kubernetes. Qëllimi i këtij projekti me burim të hapur është ta bëjë të lehtë navigimin, monitorimin dhe menaxhimin e aplikacioneve në K8. K9s monitoron vazhdimisht ndryshimet në Kubernetes dhe ofron komanda të shpejta për të punuar me burimet e monitoruara.

Projekti është shkruar në Go dhe ka ekzistuar për më shumë se një vit e gjysmë: angazhimi i parë u bë më 1 shkurt 2019. Në kohën e shkrimit, ka mbi 9000 yje GitHub dhe rreth 80 kontribues. Le të shohim se çfarë mund të bëjnë k9s?

Instalimi dhe nisja

Ky është një aplikacion klienti (në lidhje me grupin Kubernetes) që është më i lehtë për t'u ekzekutuar si një imazh Docker:

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

Për disa shpërndarje Linux dhe sisteme të tjera operative, ka gjithashtu të gatshme për instalim paketa. Në përgjithësi, për sistemet Linux, mund të instaloni një skedar binar:

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

Nuk ka kërkesa specifike për vetë grupin K8s. Duke gjykuar nga rishikimet, aplikacioni funksionon edhe me versione më të vjetra të Kubernetes si 1.12.

Aplikacioni niset duke përdorur konfigurimin standard .kube/config - e ngjashme me atë se si vepron kubectl.

lundrim

Si parazgjedhje, hapet një dritare me hapësirën e emrave të paracaktuar të specifikuar për kontekstin. Kjo është, nëse keni shkruar kubectl config set-context --current --namespace=test, atëherë do të hapet hapësira e emrave test. (Shih më poshtë për ndryshimin e konteksteve/hapësirave të emrave.)

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Shko tek modaliteti i komandës bëhet duke shtypur ":". Pas kësaj, ju mund të kontrolloni funksionimin e k9s duke përdorur komanda - për shembull, për të parë listën e StatefulSets (në hapësirën aktuale të emrave), mund të futni :sts.

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Për disa burime të tjera të Kubernetes:

  • :ns - hapësirat e emrave;
  • :deploy - Vendosjet;
  • :ing - Hyrja;
  • :svc — Shërbimet.

Për të shfaqur një listë të plotë të llojeve të burimeve të disponueshme për shikim, ekziston një komandë :aliases.

Është gjithashtu i përshtatshëm për të parë listën e komandave të disponueshme nga kombinimet e tasteve të nxehtë brenda dritares aktuale: për ta bërë këtë, thjesht klikoni në "?".

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Gjithashtu në k9s ka mënyra e kërkimit, për të shkuar në të cilën mjafton të futni "/". Me të, kryhet një kërkim në përmbajtjen e "dritares" aktuale. Le të themi nëse keni hyrë më parë :ns, ju keni një listë të hapësirave të emrave të hapur. Nëse ka shumë prej tyre, atëherë për të mos lëvizur poshtë për një kohë të gjatë, mjafton të futni në dritare me hapësira emrash /mynamespace.

Për të kërkuar sipas etiketave, mund të zgjidhni të gjitha grupet në hapësirën e dëshiruar të emrave dhe më pas futni, për shembull, / -l app=whoami. Ne do të marrim një listë të bishtajave me këtë etiketë:

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Kërkimi funksionon në të gjitha llojet e dritareve, duke përfshirë regjistrat, shikimin e manifesteve YAML dhe describe për burimet - shihni më poshtë për më shumë detaje mbi këto veçori.

Si duket rrjedha e përgjithshme e navigimit?

Me komandën :ctx ju mund të zgjidhni një kontekst:

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Për të zgjedhur një hapësirë ​​emri, ekziston komanda e përmendur tashmë :ns, dhe më pas mund të përdorni kërkimin për hapësirën e dëshiruar: /test.

Nëse tani zgjedhim burimin që na intereson (për shembull, i njëjti StatefulSet), informacioni përkatës do të shfaqet për të: sa pods po funksionojnë me informacion të shkurtër rreth tyre.

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Vetëm bishtajat mund të jenë me interes - atëherë mjafton të futeni :pod. Në rastin e ConfigMaps (:cm - për listën e këtyre burimeve), mund të zgjidhni objektin e interesit dhe të klikoni në "u", pas së cilës K9s do t'ju tregojë se kush e përdor në mënyrë specifike (këtë CM).

Një veçori tjetër e dobishme për shikimin e burimeve është e tyre "X-ray" (pamje me rreze X). Kjo mënyrë thirret nga komanda :xray RESOURCE dhe ... është më e lehtë të tregosh se si funksionon sesa të shpjegosh. Këtu është një ilustrim për StatefulSets:

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes
(Secili prej këtyre burimeve mund të modifikohet, ndryshohet, bëhet describe.)

Dhe këtu është vendosja me Ingress:

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Puna me burimet

Ju mund të merrni informacion për çdo burim në YAML ose të tij describe duke shtypur shkurtoret përkatëse të tastierës (përkatësisht "y" dhe "d". Sigurisht, ka edhe më shumë operacione themelore: lista e tyre dhe shkurtesat e tastierës janë gjithmonë të dukshme falë një "header" të përshtatshëm në ndërfaqe (të fshehura duke shtypur Ctrl + e).

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Kur redaktoni ndonjë burim ("e" pas përzgjedhjes së tij), hapet redaktori i tekstit i përcaktuar në variablat e mjedisit (export EDITOR=vim).

Dhe ja se si duket përshkrimi i detajuar i burimit (describe):

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Ky dalje (ose rezultati i shikimit të manifestit YAML të burimit) mund të ruhet duke përdorur shkurtoren e njohur të tastierës Ctrl + s. Ku do të ruhet do të dihet nga mesazhi i K9s:

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

Ju gjithashtu mund të rivendosni burimet nga skedarët rezervë të krijuar, pasi të keni hequr etiketat dhe shënimet e sistemit. Për ta bërë këtë, duhet të shkoni në drejtori me ta (:dir /tmp), më pas zgjidhni skedarin e dëshiruar dhe aplikoni apply.

Nga rruga, në çdo kohë mund të ktheheni te ReplicaSet i mëparshëm nëse ka probleme me atë aktual. Për ta bërë këtë, zgjidhni RS-në e dëshiruar (:rs për listën e tyre):

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

... dhe rikthim me Ctrl + l. Duhet të marrim një njoftim se gjithçka shkoi mirë:

k9s/whoami-5cfbdbb469 successfully rolled back

Dhe për të shkallëzuar kopjet, thjesht klikoni në "s" (shkallë) dhe zgjidhni numrin e dëshiruar të rasteve:

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Mund të futni cilindo nga kontejnerët duke përdorur guaskën: për ta bërë këtë, shkoni në podin e dëshiruar, klikoni në "s" (guaska) dhe zgjidhni enën.

Karakteristika te tjera

Sigurisht, mbështetet edhe shikimi i regjistrave ("l" për burimin e zgjedhur). Dhe për të parë regjistrat e rinj, nuk ka nevojë të shtypni vazhdimisht Enter: mjafton të shënoni ("m"), dhe më pas të gjurmoni vetëm mesazhet e reja.

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Gjithashtu në të njëjtën dritare, mund të zgjidhni intervalin kohor për prodhimin e regjistrave:

  • çelësi "1" - për 1 minutë;
  • "2" - 5 minuta;
  • "3" - 15 minuta;
  • "4" - 30 minuta;
  • "5" - 1 orë;
  • "0" - për të gjithë jetën e pod.

Modaliteti special i funksionimit Pulse (komandë :pulse) tregon informacione të përgjithshme rreth grupit Kubernetes:

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Në të mund të shihni numrin e burimeve dhe statusin e tyre (e gjelbër tregon ato që kanë statusin Running).

Një tjetër veçori e lezetshme e K9 quhet Popeye. Ai kontrollon të gjitha burimet për disa kritere korrektësie dhe shfaq "vlerësimin" që rezulton me shpjegime. Për shembull, mund të shihni se nuk ka mostra ose kufij të mjaftueshëm, dhe disa enë mund të funksionojnë si rrënjë ...

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Ekziston mbështetje themelore e Helm-it. Për shembull, kjo është mënyra se si mund t'i shihni lëshimet e vendosura në grup:

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

Etapë

Madje i integruar në K9 hej është një gjenerator i thjeshtë i ngarkesës së serverit HTTP, një alternativë ndaj ab më të njohurit (ApacheBench).

Për ta aktivizuar atë, duhet të aktivizoni port-forward në pod. Për ta bërë këtë, zgjidhni podin dhe shtypni Shift + f, shkoni te nënmenyja port-forward duke përdorur pseudonimin "pf".

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Pasi të zgjidhni portin dhe të shtypni Ctrl + b, do të fillojë vetë standardi. Rezultatet e punës së tij ruhen në /tmp dhe janë të disponueshme për shikim të mëvonshëm në K9.

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes
Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Për të ndryshuar konfigurimin e standardit, duhet të krijoni një skedar $HOME/.k9s/bench-<my_context>.yml (përcaktuar për çdo grup).

NB: Është e rëndësishme që shtrirja e të gjithë skedarëve YAML në një direktori .k9s ishte pikërisht .yml (.yaml nuk funksionon si duhet).

Shembull i konfigurimit:

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

ndërfaqe

Pamja e kolonave për listat e burimeve modifikohet duke krijuar një skedar $HOME/.k9s/views.yml. Një shembull i përmbajtjes së tij:

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

Vërtetë, nuk ka kolonë të mjaftueshme për etiketat, për të cilat ka çështje në projekt.

Renditja sipas kolonave kryhet nga shkurtoret e tastierës:

  • Shift + n - me emër;
  • Shift + o - sipas nyjeve;
  • Shift + i - nga IP;
  • Shift + a - sipas jetëgjatësisë së kontejnerit;
  • Shift + t - nga numri i rinisjeve;
  • Shift + r - sipas statusit të gatishmërisë;
  • Shift + c - sipas konsumit të CPU;
  • Shift + m - sipas konsumit të memories.

Nëse dikujt nuk i pëlqen skema e parazgjedhur e ngjyrave, K9s madje e mbështet lëkurat. Ka shembuj të gatshëm (7 copë). këtu. Këtu është një shembull i një prej këtyre lëkurave (në marinë):

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

plugins

Së fundi, shtojcat ju lejon të zgjeroni aftësitë e K9. Unë vetë kam përdorur vetëm një prej tyre në punën time - kubectl get all -n $namespace.

Duket kështu. Krijo një skedar $HOME/.k9s/plugin.yml me përmbajtje si kjo:

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"

Tani mund të shkoni në hapësirën e emrave dhe të shtypni "g" për të ekzekutuar me komandën përkatëse:

Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes

Midis shtojcave ka, për shembull, integrime me kubectl-jq dhe një mjet për shikimin e regjistrave i ashpër.

Përfundim

Për shijen time, K9 doli të ishte shumë i përshtatshëm për të punuar: mund të mësoheni shpejt të kërkoni gjithçka që ju nevojitet pa e përdorur atë. kubectl. Isha i kënaqur me pamjen e regjistrave dhe kursimin e tyre, redaktimin e shpejtë të burimeve, shpejtësinë e punës në përgjithësi *, modaliteti Popeye doli të ishte i dobishëm. Një përmendje e veçantë është aftësia për të krijuar shtojca dhe modifikuar aplikacionin për t'iu përshtatur nevojave tuaja.

* Edhe pse, me një vëllim të madh shkrimesh, vura re edhe funksionimin e ngadaltë të K9. Në momente të tilla, mjeti "hëngri" 2 bërthama nga Intel Xeon E312xx dhe madje mund të ngrinte.

Çfarë mungon për momentin? Rikthim i shpejtë në versionin e mëparshëm (nuk po flasim për RS) pa shkuar në drejtori. Përveç kësaj, shërimi ndodh vetëm për vetëm burimi: nëse fshini një shënim ose etiketë, do t'ju duhet të fshini dhe rivendosni të gjithë burimin (këtu duhet të shkoni te drejtoria). Një tjetër gjë e vogël - nuk ka një datë të mjaftueshme për "kopje rezervë" të tilla të ruajtura.

PS

Lexoni edhe në blogun tonë:

Burimi: www.habr.com

Shto një koment