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

Pievieno komentāru