Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

K9s nodroÅ”ina termināļa lietotāja saskarni mijiedarbÄ«bai ar Kubernetes klasteriem. Å Ä« atvērtā pirmkoda projekta mērÄ·is ir atvieglot lietojumprogrammu navigāciju, pārraudzÄ«bu un pārvaldÄ«bu K8s. K9s pastāvÄ«gi uzrauga izmaiņas Kubernetes un piedāvā ātras komandas darbam ar uzraudzÄ«tajiem resursiem.

Projekts ir rakstÄ«ts Go un pastāv jau vairāk nekā pusotru gadu: pirmā apņemÅ”anās tika veikta 1. gada 2019. februārÄ«. RakstīŔanas laikā tajā ir vairāk nekā 9000 zvaigžņu GitHub un aptuveni 80 lÄ«dzstrādnieku. PaskatÄ«simies, ko k9s spēj?

UzstādīŔana un palaiŔana

Šī ir klienta lietojumprogramma (saistībā ar Kubernetes klasteru), kuru visvieglāk palaist kā Docker attēlu:

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

Dažiem Linux izplatÄ«jumiem un citām operētājsistēmām ir arÄ« gatavas instalēŔanai iepakojumi. Parasti Linux sistēmām varat instalēt bināro failu:

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

PaÅ”am K8s klasterim nav Ä«paÅ”u prasÄ«bu. Spriežot pēc atsauksmēm, lietojumprogramma darbojas arÄ« ar vecākām Kubernetes versijām, piemēram, 1.12.

Lietojumprogramma tiek palaista, izmantojot standarta konfigurāciju .kube/config - līdzīgi kā tas notiek kubectl.

Navigācija

Pēc noklusējuma tiek atvērts logs ar kontekstam norādīto noklusējuma nosaukumvietu. Tas ir, ja jūs rakstījāt kubectl config set-context --current --namespace=test, tad tiks atvērta nosaukumvieta test. (Lai mainītu kontekstu/nosaukumvietas, skatiet tālāk.)

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Iet uz komandu režīms tiek darÄ«ts, nospiežot ":". Pēc tam jÅ«s varat kontrolēt k9s darbÄ«bu, izmantojot komandas - piemēram, lai skatÄ«tu StatefulSets sarakstu (paÅ”reizējā nosaukumvietā), varat ievadÄ«t :sts.

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Dažiem citiem Kubernetes resursiem:

  • :ns — nosaukumu telpas;
  • :deploy — izvietoÅ”ana;
  • :ing — iekļūst;
  • :svc — Pakalpojumi.

Lai parādītu pilnu apskatei pieejamo resursu tipu sarakstu, ir komanda :aliases.

Ir arÄ« ērti skatÄ«t ar karsto taustiņu kombinācijām pieejamo komandu sarakstu paÅ”reizējā logā: lai to izdarÄ«tu, vienkārÅ”i noklikŔķiniet uz "?".

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

ArÄ« k9s ir meklēŔanas režīms, lai pārietu uz kuru pietiek ievadÄ«t "/". Ar to tiek veikta paÅ”reizējā "loga" satura meklēŔana. Pieņemsim, ja esat ievadÄ«jis iepriekÅ” :ns, jums ir atvērts nosaukumvietu saraksts. Ja to ir par daudz, tad, lai ilgi neritinātu uz leju, pietiek ievadÄ«t logā ar nosaukumvietām /mynamespace.

Lai meklētu pēc etiÄ·etēm, varat atlasÄ«t visus aplikumus vajadzÄ«gajā nosaukumvietā un pēc tam ievadÄ«t, piemēram, / -l app=whoami. Mēs saņemsim sarakstu ar pākstÄ«m ar Å”o etiÄ·eti:

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

MeklēŔana darbojas visu veidu logos, tostarp žurnālos, YAML manifestu skatīŔanā un describe resursiem ā€” skatiet tālāk, lai iegÅ«tu sÄ«kāku informāciju par Ŕīm funkcijām.

Kā izskatās kopējā navigācijas plūsma?

Ar komandu :ctx varat izvēlēties kontekstu:

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Lai izvēlētos nosaukumvietu, ir jau minētā komanda :ns, un pēc tam varat izmantot vajadzÄ«gās vietas meklēŔanu: /test.

Ja tagad atlasÄ«sim mÅ«s interesējoÅ”o resursu (piemēram, to paÅ”u StatefulSet), par to parādÄ«sies atbilstoŔā informācija: cik podi darbojas ar Ä«su informāciju par tiem.

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Interesēt var tikai pākstis - tad pietiek ar iebraukÅ”anu :pod. ConfigMaps gadÄ«jumā (:cm - Å”o resursu sarakstam), varat atlasÄ«t interesējoÅ”o objektu un noklikŔķināt uz "u", pēc kura K9s pateiks, kas to konkrēti izmanto (Å”o CM).

Vēl viena noderÄ«ga funkcija resursu skatīŔanai ir to "rentgens" (rentgena skats). Å o režīmu izsauc komanda :xray RESOURCE un ... ir vieglāk parādÄ«t, kā tas darbojas, nekā izskaidrot. Å eit ir StatefulSets ilustrācija:

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss
(Katru no Å”iem resursiem var rediģēt, mainÄ«t, izveidot describe.)

Un Ŕeit ir IzvietoŔana ar Ingress:

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Darbs ar resursiem

JÅ«s varat iegÅ«t informāciju par katru YAML vai tā resursu describe nospiežot atbilstoÅ”os Ä«sinājumtaustiņus (attiecÄ«gi ā€œyā€ un ā€œdā€). Protams, ir vēl vairāk pamata darbÄ«bu: to saraksts un Ä«sinājumtaustiņi vienmēr ir redzami, pateicoties ērtai ā€œgalveneiā€ saskarnē (paslēpta, nospiežot Ctrl + e).

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Rediģējot jebkuru resursu ("e" pēc tā atlases), tiek atvērts vides mainīgajos definētais teksta redaktors (export EDITOR=vim).

Un lūk, kā izskatās detalizēts resursa apraksts (describe):

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Å o izvadi (vai YAML resursu manifesta skatīŔanas izvadi) var saglabāt, izmantojot pazÄ«stamo Ä«sinājumtaustiņu Ctrl + s. Kur tas tiks saglabāts, bÅ«s zināms no K9s ziņojuma:

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

Varat arÄ« atjaunot resursus no izveidotajiem dublējuma failiem pēc sistēmas etiÄ·eÅ”u un anotāciju noņemÅ”anas. Lai to izdarÄ«tu, kopā ar viņiem jāiet uz direktoriju (:dir /tmp), pēc tam atlasiet vajadzÄ«go failu un lietojiet apply.

Starp citu, jebkurā laikā varat atgriezties pie iepriekŔējās ReplicaSet, ja rodas problēmas ar paÅ”reizējo. Lai to izdarÄ«tu, atlasiet vajadzÄ«go RS (:rs viņu sarakstam):

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

... un atcelÅ”anu ar Ctrl + l. Mums vajadzētu saņemt paziņojumu, ka viss noritēja labi:

k9s/whoami-5cfbdbb469 successfully rolled back

Un, lai mērogotu kopijas, vienkārÅ”i noklikŔķiniet uz "s" (mērogs) un atlasiet vajadzÄ«go gadÄ«jumu skaitu:

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Izmantojot apvalku, varat ievadÄ«t jebkuru no konteineriem: lai to izdarÄ«tu, dodieties uz vajadzÄ«go podiņu, noklikŔķiniet uz "s" (apvalks) un atlasiet konteineru.

Citas funkcijas

Protams, tiek atbalstÄ«ta arÄ« žurnālu apskate (ā€œlā€ atlasÄ«tajam resursam). Un, lai skatÄ«tu jaunus žurnālus, nav nepiecieÅ”ams pastāvÄ«gi nospiest Enter: pietiek atzÄ«mēt (ā€œmā€) un pēc tam tikai izsekot jaunus ziņojumus.

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Tajā paŔā logā varat izvēlēties arÄ« žurnālu izvades laika diapazonu:

  • taustiņŔ "1" - uz 1 minÅ«ti;
  • "2" - 5 minÅ«tes;
  • "3" - 15 minÅ«tes;
  • "4" - 30 minÅ«tes;
  • "5" - 1 stunda;
  • "0" - visam podiņa kalpoÅ”anas laikam.

ĪpaŔs darbības režīms Impulss (komanda :pulse) parāda vispārīgu informāciju par Kubernetes klasteru:

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Tajā var redzēt resursu skaitu un to statusu (zaļā krāsā ir tie, kuriem ir statuss Running).

Vēl viena lieliska K9s funkcija tiek saukta Popeye. Tas pārbauda visus resursus, lai noteiktu pareizības kritērijus, un parāda iegūto "vērtējumu" ar paskaidrojumiem. Piemēram, varat redzēt, ka nav pietiekami daudz paraugu vai ierobežojumu, un daži konteineri var darboties kā root ...

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Helm ir pamata atbalsts. Piemēram, Ŕādi varat skatÄ«t klasterÄ« izvietotos laidienus:

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

etalons

Pat iebÅ«vēts K9s hey ir vienkārÅ”s HTTP servera slodzes Ä£enerators, alternatÄ«va labāk zināmajam ab (ApacheBench).

Lai to iespējotu, podā ir jāiespējo portu pārsÅ«tīŔana. Lai to izdarÄ«tu, atlasiet podziņu un nospiediet taustiņu kombināciju Shift + f, dodieties uz porta pārsÅ«tīŔanas apakÅ”izvēlni, izmantojot aizstājvārdu "pf".

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Pēc porta atlasīŔanas un Ctrl + b nospieÅ”anas sāksies pats etalons. Viņa darba rezultāti tiek glabāti /tmp un ir pieejami vēlākai apskatei K9s.

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss
Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Lai mainītu etalona konfigurāciju, ir jāizveido fails $HOME/.k9s/bench-<my_context>.yml (noteikts katram klasterim).

NB: Ir svarīgi, lai paplaŔinājums visiem YAML failiem direktorijā .k9s tas bija tieŔi .yml (.yaml nedarbojas pareizi).

Konfigurācijas piemērs:

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

interfeiss

Resursu sarakstu kolonnu izskats tiek mainīts, izveidojot failu $HOME/.k9s/views.yml. Tās satura piemērs:

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

Tiesa, etiķetēm nepietiek kolonnas, kurām ir jautājums projektā.

KārtoÅ”ana pēc kolonnām tiek veikta, izmantojot Ä«sinājumtaustiņus:

  • Shift + n - pēc nosaukuma;
  • Shift + o - pa mezgliem;
  • Shift + i - pēc IP;
  • Shift + a - pēc konteinera kalpoÅ”anas laika;
  • Shift + t - pēc restartēŔanas reižu skaita;
  • Shift + r - pēc gatavÄ«bas statusa;
  • Shift + c - pēc CPU patēriņa;
  • Shift + m - pēc atmiņas patēriņa.

Ja kādam nepatÄ«k noklusējuma krāsu shēma, K9s pat atbalsta ādas. Ir pieejami gatavi piemēri (7 gab.). Å”eit. Å eit ir vienas no Ŕīm ādām piemērs (jÅ«ras flotē):

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Spraudņi

Visbeidzot, spraudņi ļauj paplaÅ”ināt K9 iespējas. Es pats savā darbā esmu izmantojis tikai vienu no tiem - kubectl get all -n $namespace.

Tas izskatās Ŕādi. Izveidojiet failu $HOME/.k9s/plugin.yml ar Ŕādu saturu:

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"

Tagad varat doties uz nosaukumvietu un nospiest "g", lai izpildītu ar atbilstoŔo komandu:

Pārskats par k9s ā€” uzlabots Kubernetes termināļa interfeiss

Starp spraudņiem ir, piemēram, integrācijas ar kubectl-jq un utilīta žurnālu apskatei pakaļgals.

Secinājums

Manai gaumei K9s izrādÄ«jās ļoti ērts darbam: var ātri pierast meklēt visu nepiecieÅ”amo, neizmantojot. kubectl. Mani iepriecināja žurnālu skats un to saglabāŔana, ātra resursu rediģēŔana, darba ātrums kopumā *, Popeye režīms izrādÄ«jās noderÄ«gs. ÄŖpaÅ”a pieminēŔana ir iespēja izveidot spraudņus un modificēt lietojumprogrammu atbilstoÅ”i jÅ«su vajadzÄ«bām.

* Lai gan ar lielu baļķu apjomu pamanīju arī K9s lēno darbību. Šādos brīžos utilīta "apēda" 2 kodolus no Intel Xeon E312xx un varēja pat sasalt.

Kas Å”obrÄ«d trÅ«kst? Ātra atgrieÅ”ana uz iepriekŔējo versiju (mēs nerunājam par RS), nepārejot uz direktoriju. Turklāt atveseļoÅ”anās notiek tikai tikai resurss: ja izdzēŔat anotāciju vai etiÄ·eti, jums bÅ«s jāizdzēŔ un jāatjauno viss resurss (Å”eit jums jāiet uz direktoriju). Vēl viens sÄ«kums - nepietiek datuma Ŕādiem saglabātiem "dublējumiem".

PS

Lasi arī mūsu emuārā:

Avots: www.habr.com