k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

K9ak Kubernetes klusterrekin elkarreragiteko terminaleko erabiltzaile-interfaze bat eskaintzen du. Kode irekiko proiektu honen helburua K8s-en aplikazioak nabigatzea, kontrolatzea eta kudeatzea erraztea da. K9sek etengabe kontrolatzen ditu Kubernetes-en aldaketak eta komando azkarrak eskaintzen ditu kontrolatutako baliabideekin lan egiteko.

Proiektua Go-n idatzita dago eta urte eta erdi baino gehiago daramatza: lehen konpromisoa 1ko otsailaren 2019ean egin zen. Idazteko unean, 9000+ izar daude piztuta GitHub eta 80 lagun inguru. Ikus dezagun zer egin dezakeen k9s-ek?

Instalazioa eta abian jartzea

Hau Docker irudi gisa exekutatzeko errazena den bezero bat da (Kubernetes klusterraren aldean):

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

Linux banaketa batzuetarako eta beste sistema eragile batzuetarako, instalatzeko prest daude ere paketeak. Oro har, Linux sistemetarako, fitxategi bitar bat instala dezakezu:

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

K8s kluster berarentzat ez dago baldintza zehatzik. Iritziak ikusita, aplikazioak Kubernetes-en bertsio zaharragoekin ere funtzionatzen du, hala nola 1.12.

Aplikazioa konfigurazio estandarra erabiliz abiarazten da .kube/config - egiten duenaren antzekoa kubectl.

nabigazioa

Lehenespenez, leiho bat irekitzen da testuingururako zehaztutako izen-espazio lehenetsiarekin. Hau da, idatzi baduzu kubectl config set-context --current --namespace=test, orduan izen-gunea irekiko da test. (Ikusi behean testuinguruak/izen-espazioak aldatzeko.)

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Joan komando modua ":" sakatuz egiten da. Horren ondoren, k9s-en funtzionamendua kontrola dezakezu komandoak erabiliz; adibidez, StatefulSets zerrenda ikusteko (uneko izen-eremuan), sar dezakezu :sts.

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Kubernetes-eko beste baliabide batzuetarako:

  • :ns β€” izen-espazioak;
  • :deploy β€” Ezarpenak;
  • :ing β€” Sarrerak;
  • :svc β€” Zerbitzuak.

Ikusteko dauden baliabide moten zerrenda osoa bistaratzeko, komando bat dago :aliases.

Era berean, komenigarria da tekla konbinazioen bidez eskuragarri dauden komandoen zerrenda uneko leihoan ikustea: horretarako, egin klik "?".

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

K9etan ere badago bilaketa modua, bertara joateko nahikoa da "/" sartzea. Horrekin, uneko "leihoaren" edukien bilaketa egiten da. Demagun aldez aurretik sartu bazara :ns, izen-eremuen zerrenda irekita duzu. Gehiegi badaude, denbora luzez behera korritzeko, nahikoa da leihoan izen-espazioekin sartzea. /mynamespace.

Etiketen arabera bilatzeko, nahi duzun izen-espazioko pod guztiak hauta ditzakezu, eta, adibidez, idatzi / -l app=whoami. Etiketa honekin leken zerrenda bat jasoko dugu:

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Bilaketak leiho mota guztietan funtzionatzen du, erregistroak barne, YAML manifestuak ikusiz eta describe baliabideetarako - ikusi behean ezaugarri hauei buruzko xehetasun gehiago lortzeko.

Nolakoa da nabigazio-fluxu orokorra?

Komandoa erabiliz :ctx testuinguru bat aukeratu dezakezu:

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Izen-espazio bat hautatzeko, lehen aipatutako komandoa dago :ns, eta gero nahi duzun espazioaren bilaketa erabil dezakezu: /test.

Orain interesatzen zaigun baliabidea hautatzen badugu (adibidez, StatefulSet bera), horri dagokion informazioa agertuko da: zenbat pod exekutatzen ari diren haiei buruzko informazio laburra.

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Lekak bakarrik izan daitezke interesgarriak; orduan nahikoa da sartzea :pod. ConfigMaps-en kasuan (:cm - Baliabide horien zerrendarako), interesgarria den objektua hauta dezakezu eta "u"-n klik egin dezakezu, eta ondoren K9s-ek esango dizu nork erabiltzen duen zehazki (CM hau).

Baliabideak ikusteko beste ezaugarri erabilgarri bat haiena da "X izpi" (X izpien ikuspegia). Modu hau komandoak deitzen du :xray RESOURCE eta... errazagoa da nola funtzionatzen duen erakustea azaltzea baino. Hona hemen StatefulSets-en ilustrazio bat:

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua
(Baliabide hauetako bakoitza editatu, aldatu, egin daiteke describe.)

Eta hona hemen Ingress-ekin inplementatzea:

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Baliabideekin lan egitea

YAML edo bere baliabide bakoitzari buruzko informazioa lor dezakezu describe dagozkion teklatuko lasterbideak sakatuz (β€œy” eta β€œd”, hurrenez hurren). Jakina, oraindik oinarrizko eragiketa gehiago daude: haien zerrenda eta teklatuko lasterbideak beti daude ikusgai interfazeko "goiburu" eroso bati esker (Ktrl + e sakatuta ezkutatuta).

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Edozein baliabide editatzerakoan ("e" hautatu ondoren), ingurune-aldagaietan definitutako testu-editorea irekitzen da (export EDITOR=vim).

Eta hona hemen baliabidearen deskribapen zehatza nolakoa den (describe):

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Irteera hau (edo YAML baliabideen manifestua ikustearen irteera) gorde daiteke teklatuko lasterbide ezaguna erabiliz Ctrl + s. Non gordeko den jakingo da K9s mezutik:

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

Sortutako babeskopia-fitxategietatik ere baliabideak berreskura ditzakezu, sistemaren etiketak eta oharrak kendu ondoren. Horretarako, direktoriora joan behar duzu haiekin (:dir /tmp), ondoren hautatu nahi duzun fitxategia eta aplikatu apply.

Bide batez, edozein unetan aurreko ReplicaSet-era itzuli dezakezu oraingoarekin arazoak izanez gero. Horretarako, hautatu nahi duzun RS (:rs haien zerrendarako):

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

... eta atzera egin Ctrl + l-rekin. Dena ondo joan dela dioen jakinarazpena jaso beharko genuke:

k9s/whoami-5cfbdbb469 successfully rolled back

Eta erreplikak eskalatzeko, egin klik "s"-an (eskala) eta hautatu nahi duzun instantzia kopurua:

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Shell erabiliz edozein edukiontzi sar dezakezu: horretarako, joan nahi duzun lekontzira, egin klik "s" (shell) gainean eta hautatu edukiontzia.

Beste ezaugarri batzuk

Jakina, erregistroak ikustea ere onartzen da ("l" hautatutako baliabiderako). Eta erregistro berriak ikusteko, ez dago Sartu etengabe sakatu beharrik: nahikoa da ("m") markatzea eta, ondoren, mezu berriak bakarrik jarraitzea.

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Era berean, leiho berean, erregistroen irteerarako denbora tartea hauta dezakezu:

  • "1" tekla - 1 minutuz;
  • "2" - 5 minutu;
  • "3" - 15 minutu;
  • "4" - 30 minutu;
  • "5" - ordu 1;
  • "0" - podaren bizitza osorako.

Eragiketa-modu berezia Pultsua (agindua :pulse) Kubernetes klusterraren inguruko informazio orokorra erakusten du:

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Bertan baliabide kopurua eta haien egoera ikus ditzakezu (berdeak egoera dutenak erakusten ditu Running).

K9s-en beste ezaugarri polit bat deitzen da Popeye. Baliabide guztiak zuzentasun-irizpide jakin batzuk egiaztatzen ditu eta ondoriozko "balorazioa" bistaratzen du azalpenekin. Adibidez, ikus dezakezu ez dagoela lagin edo muga nahikorik, eta edukiontziren bat root gisa exekutatu daitekeela...

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Helm-en oinarrizko laguntza dago. Adibidez, honela ikus ditzakezu klusterrean inplementatutako bertsioak:

:helm all # всС
:helm $namespace # Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½

Erreferentzia

K9etan ere eraikia hey HTTP zerbitzariaren karga-sorgailu sinple bat da, ezagunagoa den ab (ApacheBench) alternatiba bat da.

Gaitzeko, port-forward gaitu behar duzu pod-ean. Horretarako, hautatu poda eta sakatu Shift + f, joan portu-aurrerako azpimenura "pf" ezizena erabiliz.

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Ataka hautatu eta Ctrl + b sakatu ondoren, erreferentea bera hasiko da. Bere lanaren emaitzak bertan gordetzen dira /tmp eta gero K9s-en ikusteko daude.

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua
k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Erreferentzia-konfigurazioa aldatzeko, fitxategi bat sortu behar duzu $HOME/.k9s/bench-<my_context>.yml (kluster bakoitzeko zehazten da).

OHARRA: Garrantzitsua da direktorio batean YAML fitxategi guztien luzapena .k9s izan zen hain zuzen .yml (.yaml ez du behar bezala funtzionatzen).

Konfigurazio adibidea:

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

Baliabide-zerrenden zutabeen itxura fitxategi bat sortuz aldatzen da $HOME/.k9s/views.yml. Bere edukiaren adibide bat:

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

Egia da, ez dago zutabe nahikorik etiketak egiteko, eta horretarako dago gaia proiektuan.

Zutabeen arabera ordenatzea teklatuko lasterbideen bidez egiten da:

  • Shift + n - izenaren arabera;
  • Shift + o - nodoen arabera;
  • Shift + i - IP arabera;
  • Shift + a - edukiontziaren bizitzaren arabera;
  • Shift + t - berrabiarazi kopuruaren arabera;
  • Shift + r - prest egoeraren arabera;
  • Shift + c - CPU kontsumoaren arabera;
  • Shift + m - memoria-kontsumoaren arabera.

Norbaiti kolore eskema lehenetsia gustatzen ez bazaio, K9s-ek ere onartzen du larruak. Prestatutako adibideak (7 pieza) eskuragarri daude Hemen. Hona hemen azal horietako baten adibide bat (armadan):

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Pluginak

Azkenik, pluginak K9s-en gaitasunak zabaltzeko aukera ematen dizu. Nik neuk horietako bakarra erabili dut nire lanetan - kubectl get all -n $namespace.

Honela dirudi. Sortu fitxategi bat $HOME/.k9s/plugin.yml honelako edukiarekin:

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"

Orain izen-eremura joan zaitezke eta sakatu "g" dagokion komandoarekin exekutatzeko:

k9s-en ikuspegi orokorra - Kubernetesentzako terminal-interfaze aurreratua

Pluginen artean, adibidez, kubectl-jq-ekin integrazioak eta erregistroak ikusteko utilitate bat daude. popa.

Ondorioa

Nire gusturako, K9s oso erosoa izan da lan egiteko: azkar ohitu zaitezke erabili gabe behar duzun guztia bilatzera. kubectl. Pozik nengoen erregistroen ikuspegiarekin eta gordetzearekin, baliabideen edizio azkarrarekin, lanaren abiadura orokorrean *, Popeye modua erabilgarria izan zen. Aipamen berezia da pluginak sortzeko eta aplikazioa aldatzeko gaitasuna zure beharretara egokitzeko.

* Nahiz eta, erregistro bolumen handiarekin, K9en funtzionamendu motela ere nabaritu nuen. Momentu horietan, erabilgarritasunak Intel Xeon E2xx-ren 312 nukleo "jaten" zituen eta izoztu egin liteke.

Zer falta da momentu honetan? Itzuli azkarra aurreko bertsiora (ez gara RS-i buruz ari) direktoriora joan gabe. Horrez gain, berreskuratzea bakarrik gertatzen da bakarrik baliabidea: ohar bat edo etiketa bat ezabatzen baduzu, baliabide osoa ezabatu eta berreskuratu beharko duzu (horra joan behar duzu direktoriora). Beste gauza bat - ez dago data nahikorik gordetako "backups" egiteko.

PS

Irakurri ere gure blogean:

Iturria: www.habr.com

Gehitu iruzkin berria