PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

K9s ofron një ndërfaqe terminali për tu ndërvepruar me klasterët Kubernetes. Qëllimi i këtij projekti Open Source është të lehtësojë navigimin e rehatshëm në aplikacionet në K8s, mbikëqyrjen e tyre dhe menaxhimin e tyre. K9s vazhdimisht monitoron ndryshimet në Kubernetes dhe ofron komanda të shpejta për punuar me burimet e mbikëqyrura.

Projekti është shkruar në Go dhe ekziston prej më shumë se një vit e gjysmë: commit-i i parë është bërë më 1 shkurt 2019. Në momentin e shkrimit të këtij artikulli, numërohen më shumë se 9000 yje në GitHub dhe rreth 80 kontribuues. Le të shohim se çfarë di të bëjë k9s?

Instalimi dhe nisja

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

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

Për disa distribucione Linux dhe sisteme të tjera, gjithashtu ka versione të gatshme për instalim paketet. Në rregullin e përgjithshëm për sistemet Linux, mund të instaloni skedarin 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 klastrin K8s. Sipas komenteve, aplikacioni funksionon edhe me versione të vjetra të Kubernetes, siç është 1.12.

Aplikacioni aktivizohet duke pĂ«rdorur konfigurimin standard .kube/config — ashtu siç bĂ«n kubectl.

Navigimi

Me përjashtim, hapet një dritare me namespace standard, i cili është i specifikuar për kontekstin. Domethënë, nëse keni shkruar kubectl config set-context --current --namespace=test, atëherë do të hapet namespace test. (Për kalimin e konteksteve/njësive shih më poshtë.)

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Kalimi nĂ« modin komandĂ« tĂ« realizohet duke shtypur ":". Pas kĂ«saj mund tĂ« menaxhoni funksionimin e k9s me komanda — pĂ«r shembull, pĂ«r tĂ« parĂ« listĂ«n e StatefulSets (nĂ« njĂ«sinĂ« aktuale) mund tĂ« shkruani :sts.

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

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

  • :ns — Namespaces;
  • :deploy — Deployments;
  • :ing — Ingresses;
  • :svc — Services.

Për të shfaqur një listë të plotë të llojeve të burimeve, të disponueshme për t'u parë, ka një komandë :aliases.

ËshtĂ« e dobishme tĂ« shihni edhe listĂ«n e komandave, tĂ« disponueshme me kombinatoret e nxehtĂ« nĂ« kuadĂ«r tĂ« dritares aktuale: pĂ«r kĂ«tĂ« mjafton tĂ« shtypni "?".

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Gjithashtu, në k9s ka modin e kërkimit, për të kaluar në të cilin mjafton të shkruani «/». Me të bëhet kërkimi në përmbajtjen e «dritares» aktuale. Le të themi, nëse keni futur më parë :ns, keni hapur një listë emrash hapësinore. Nëse ka shumë prej tyre, për të mos skroluar gjatë poshtë, mjafton të shkruani në dritaren me emrat e hapësirës /mynamespace.

Për të kërkuar në etiketat, mund të zgjidhni të gjitha pod'et në hapësirën e nevojshme, pas së cilës të shkruani, për shembull, / -l app=whoami. Ne do të marrim një listë pod'esh me këtë etiketë:

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

KĂ«rkimi funksionon nĂ« tĂ« gjitha llojet e dritareve, duke pĂ«rfshirĂ« logĂ«t, shikimin e manifesteve YAML dhe describe pĂ«r burimet — mĂ« shumĂ« rreth kĂ«tyre mundĂ«sive shih mĂ« poshtĂ«.

Si duket përgjithësisht sekonda e veprimeve për navigim?

Me komandën :ctx mund të zgjidhni kontekstin:

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Për të zgjedhur hapësirën e emrave, ekziston komandë e përmendur më parë :ns, dhe më pas mund të përdorni kërkimin për hapësirën e nevojshme: /test.

Nëse tani zgjidhni burimin që na intereson (për shembull, e njëjta StatefulSet), do të shfaqet informacioni përkatës: sa pod'e janë të nisura me përmbledhje të shkurtër rreth tyre.

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Mund tĂ« jenĂ« tĂ« nevojshme vetĂ«m pod'Ă«t — atĂ«herĂ« mjafton tĂ« shkruani :pod. NĂ« rastin e ConfigMap'ave (:cm — pĂ«r listĂ«n e kĂ«tyre burimeve) mund tĂ« zgjidhni objektin qĂ« ju intereson dhe tĂ« klikoni 'u', pas sĂ« cilĂ«s K9s do tĂ« tregojĂ« se kush konkretisht e pĂ«rdor (kĂ«tĂ« CM).

NjĂ« veçori tjetĂ«r e dobishme pĂ«r tĂ« parĂ« burimet — ato «rentgen» (pamja XRay). Ky mod Ă«shta activate me komandĂ«n :xray RESOURCE dhe
 Ă«shtĂ« mĂ« e lehtĂ« tĂ« tregosh se si funksionon sesa tĂ« shpjegosh. Ja njĂ« ilustim pĂ«r StatefulSets:

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes
(Çdo nga kĂ«to burime mund tĂ« redaktohet, tĂ« ndryshohet, tĂ« bĂ«het describe.)

Ja Deployment me Ingress:

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Puna me burimet

Për çdo burim mund të merrni informacion në YAML ose në describe duke klikuar në kombinimet e duhur të tasteve ('y' dhe 'd' përkatësisht). Operacionet themelore, sigurisht, janë edhe më shumë: lista e tyre dhe kombinimet e tasteve janë gjithmonë në pamje falë 'header'-it të përshtatshëm në ndërfaqe (fshihet duke klikuar Ctrl + e).

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Në redaktimin e çdo burimi ('e' pas zgjedhjes) hapet një redaktues teksti, i caktuar në variablat e ambientit (export EDITOR=vim).

Ja si duket përshkrimi i detajuar i burimit (describe):

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Ky rezultat (ose rezultati i pamjes YAML të manifestit të burimit) mund të ruhet me kombinimin e zakonshëm të tasteve Ctrl + s. Ku do të ruhet, do të dihet nga mesazhi K9s:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml u ruajt me sukses!

Nga skedarët e krijuar për backup, mund të rikthehen burimet, duke hequr paraprakisht etiketat dhe annotimet sistematike. Për këtë, do të kërkohet të kaloni në direktorinë përkatëse (:dir /tmp), pastaj të zgjidhni skedarin e nevojshëm dhe ta aplikoni apliko.

Për më tepër, në çdo moment mund të riktheheni edhe në ReplicaSet-in e mëparshëm, nëse ka probleme me atë aktual. Për këtë, duhet të zgjidhni RS-në e nevojshme (:rs për listën e tyre):

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes


 dhe tĂ« kryeni rollback me Ctrl + l. Duhet tĂ« marrim njĂ« njoftim qĂ« gjithçka ka shkuar me sukses:

k9s/whoami-5cfbdbb469 u rikthye me sukses

Dhe për të skaluar replikat, mjafton të shtypni «s» (scale) dhe të zgjidhni numrin e duhura të instancave:

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Në çdo një nga kontejnerët mund të hyni përmes shell: për këtë kaloni te pod-i përkatës, shtypni «s» (shell) dhe zgjidhni kontejnerin.

Mundësi të tjera

Sigurisht, mbështetet gjithashtu shikimi i logeve («l» për burimin e zgjedhur). Dhe për të parë loget e reja, nuk ka nevojë të shtypni vazhdimisht Enter: mjafton të bëni një markim («m»), pas të cilit do të ndjekim vetëm mesazhet e reja.

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Gjithashtu, në këtë dritare mund të zgjidhni një interval kohor për shfaqjen e logeve:

  • Tastiera «1» — pĂ«r 1 minutĂ«;
  • «2» — 5 minuta;
  • «3» — 15 minuta;
  • «4» — 30 minuta;
  • «5» — 1 orĂ«;
  • «0» — pĂ«r tĂ«rĂ« jetĂ«n e pod’it.

Rezhimi i veçantë i punës së Pulse (komanda :pulse) tregon informacionin e përgjithshëm mbi Kubernetes-klasterin:

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Aty mund të shihni numrin e burimeve dhe gjendjen e tyre (me ngjyrë të gjelbër shfaqen ato që kanë status Running).

NjĂ« funksion tjetĂ«r interesant i K9s quhet Popeye. Ai kontrollon tĂ« gjitha burimet sipas kritereve tĂ« caktuara tĂ« saktĂ«sisĂ« dhe jep «renditjen» me shpjegime. PĂ«r shembull, mund tĂ« shihni qĂ« mungojnĂ« kufizimet ose limite tĂ« caktuara, dhe ndonjĂ« kontejner mund tĂ« exeutohet nĂ«n pĂ«rdoruesin root


PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Ka mbështetje bazë për Helm. Për shembull, kështu mund të shihni lëshimet e depozituara në klaster:

:helm all # të gjitha
:helm $namespace # në hapësirën specifike të emrave

Benchmark

NĂ« K9s Ă«shtĂ« integruar madje hey — ky Ă«shtĂ« njĂ« gjenerator i thjeshtĂ« ngarkese pĂ«r serverin HTTP, alternativĂ« ndaj ab (ApacheBench).

Për ta aktivizuar atë, kërkohet aktivizimi i port-forward në pod. Për këtë, zgjidhni pod-in dhe shtypni Shift + f, kaloni në nënmenunë port-forward me aliasin «pf».

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Pas zgjedhjes së portit dhe shtypjes së Ctrl + b, do të nisë vetë benchmarkun. Rezultatet e punës së tij ruajnë në /tmp dhe janë të disponueshme për shikim të mëvonshëm në K9s.

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes
PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Për të ndryshuar konfigurimin e benchmark-ut, duhet të krijoni një skedar $HOME/.k9s/bench-<my_context>.yml (e cila përcaktohet për çdo grumbull).

NB: ËshtĂ« e rĂ«ndĂ«sishme qĂ« pĂ«rmasat e tĂ« gjithĂ« skedarĂ«ve YAML nĂ« direktorinĂ« .k9s tĂ« jenĂ« saktĂ«sisht .yml (.yaml nuk funksionon siç duhet).

Shembulli i konfiguracionit:

benchmarks:
  defaults:
    # Numri i thjeshtësive
    concurrency: 2
    # Numri i kërkesave
    requests: 1000
  containers:
    # Cilësimet për kontejnerin e benchmark-ut
    # Kontejneri përcaktohet si 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:
    # Mund të realizohet benchmark në shërbime të tipit NodePort dhe LoadBalancer
    # Sintaksa: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

Interfaci

Pamja e koloneve për listat e burimeve modifikohet duke krijuar një skedar $HOME/.k9s/views.yml. Shembulli 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

E vërtetë, mungon një kolone për etiketat, për të cilën ka issue në projekt.

Sortimi sipas kolonave bëhet me kombinime të tastierës:

  • Shift + n — sipas emrit;
  • Shift + o — sipas nyjeve;
  • Shift + i — sipas IP;
  • Shift + a — sipas kohĂ«s sĂ« jetĂ«s sĂ« kontejnerit;
  • Shift + t — sipas numrit tĂ« rilidhjeve;
  • 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 dizajni i ngjyrave nga e para, në K9s mbështeten madje temat. Shembuj të gatshëm (7 të tillë) janë të disponueshëm këtu. Ja një shembull i një nga këtyre temave (në det):

PĂ«rmbledhje e k9s — njĂ« ndĂ«rfaqe e avancuar terminali pĂ«r Kubernetes

Plugins

MĂ« nĂ« fund, plugina lejojnĂ« zgjerimin e mundĂ«sive tĂ« K9s. UnĂ« vetĂ« nĂ« punĂ« kam pĂ«rdorur vetĂ«m njĂ« prej tyre — kubectl get all -n $namespace.

Kjo duket kështu. Krijojmë një skedar $HOME/.k9s/plugin.yml me këtë përmbajtje:

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"

T now mund të kaloni 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 terminali pĂ«r Kubernetes

Në mesin e plugins ka, për shembull, integrime me kubectl-jq dhe utilitarin për shikimin e logjeve stern.

Përfundimi

Sipas mendimit tim, K9s është treguar shumë i përshtatshëm për punë: është mësuar mjaft shpejt të kërkosh gjithçka të nevojshme pa përdorim kubectl. Më ka kënaqur shikimi i logëve dhe ruajtja e tyre, redaktimi i shpejtë i resurseve, shpejtësia e punës në tërësi*, m'u duk e dobishme mënyra Popeye. Vlen të përmendet possibilteti për të krijuar harduer dhe për të përmirësuar aplikacionin sipas nevojave tuaja.

* MegjithatĂ«, kur kishte njĂ« volum tĂ« madh logĂ«sh, vura re gjithashtu punĂ«n e ngadalĂ«suar tĂ« K9s. NĂ« kĂ«to momente, utilitarja ‘han’ 2 bĂ«rthama nga Intel Xeon E312xx dhe mund tĂ« ngrinte edhe.

ÇfarĂ« i mungon nĂ« kĂ«tĂ« moment? NjĂ« rikthim i shpejtĂ« nĂ« versionin e mĂ«parshĂ«m (nĂ« tĂ« folur pĂ«r RS) pa kaluar nĂ« dosje. PĂ«r mĂ« tepĂ«r, rikuperimi ndodh vetĂ«m pĂ«r pĂ«r resurset: nĂ«se keni fshirĂ« shĂ«nimin ose etiketĂ«n, do tĂ« duhet tĂ« fshini dhe rikuperoni tĂ« gjithĂ« burimin (kĂ«tu do tĂ« nevojitet tĂ« kaloni nĂ« dosje). NjĂ« hollĂ«si tjetĂ«r — mungon data e kĂ«tyre ‘bĂ«kape’ tĂ« ruajtura.

P.S.

Lexoni gjithashtu në blogun tonë:

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster