Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Opomba. prevod: Avtor izvirnega materiala je Henning Jacobs iz Zalanda. Ustvaril je nov spletni vmesnik za delo s Kubernetesom, ki je postavljen kot »kubectl za splet«. Zakaj se je pojavil nov odprtokodni projekt in katerim kriterijem niso izpolnjevale obstoječe rešitve - preberite njegov članek.

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

V tej objavi pregledam različne odprtokodne spletne vmesnike Kubernetes, predstavim svoje zahteve za univerzalni uporabniški vmesnik in razložim, zakaj sem razvil Kubernetes WebView — vmesnik, zasnovan za lažjo podporo in odpravljanje težav za več gruč hkrati.

Primeri uporabe

Pri Zalandu služimo velikemu številu uporabnikov Kubernetes (900+) in grozdov (100+). Obstaja nekaj običajnih primerov uporabe, ki bi jim koristilo namensko spletno orodje:

  1. komunikacija s sodelavci za podporo;
  2. odzivanje na incidente in raziskovanje njihovih vzrokov.

Podpora

Po mojih izkušnjah komunikacija podpore pogosto izgleda takole:

— Na pomoč, naša storitev XYZ ni na voljo!
— Kaj vidite, ko nastopate kubectl describe ingress ...?

Ali kaj podobnega za CRD:

— Imam nekaj težav z identifikacijsko službo ...
— Kaj ustvari ukaz? kubectl describe platformcredentialsset ...?

Takšna komunikacija se navadno zmanjša na vnos različnih različic ukaza kubectl da bi prepoznali težavo. Posledično sta obe strani v pogovoru prisiljeni nenehno preklapljati med terminalom in spletnim klepetom, poleg tega pa opazujeta drugačno situacijo.

Zato bi rad, da spletno vmesnik Kubernetes omogoča naslednje:

  • uporabniki lahko izmenjava povezav in opazujte isto stvar;
  • bi pomagalo izogibajte se človeškim napakam v podporo: na primer prijava v napačno gručo v ukazni vrstici, tipkarske napake v ukazih CLI itd.;
  • bi dovolil ustvarite lastne poglede poslati sodelavcem, to je dodati stolpce z oznakami, prikazati veliko vrst virov na eni strani;
  • V idealnem primeru bi vam moralo to spletno orodje omogočati nastavitev "globoke" povezave do določenih razdelkov YAML (na primer opozarjanje na nepravilen parameter, ki povzroča napake).

Odziv in analiza incidentov

Odzivanje na infrastrukturne incidente zahteva zavedanje o razmerah, sposobnost ocenjevanja vpliva in iskanje vzorcev v grozdih. Nekaj ​​primerov iz resničnega življenja:

  • Kritična produkcijska storitev ima težave in vi jih morate poiščite vse vire Kubernetes po imenu v vseh gručahodpraviti težave;
  • vozlišča začnejo padati pri skaliranju in potrebujete poiščite vse sklope s statusom »V teku« v vseh skupinahoceniti obseg problema;
  • posamezni uporabniki poročajo o težavi z DaemonSet, ki je nameščen v vseh gručih, in morajo ugotoviti Je problem popoln?.

Moja standardna rešitev v takih primerih je nekaj podobnega for i in $clusters; do kubectl ...; done. Očitno bi bilo mogoče razviti orodje, ki bi nudilo podobne zmogljivosti.

Obstoječi spletni vmesniki Kubernetes

Odprtokodni svet spletnih vmesnikov za Kubernetes ni zelo velik*, zato sem poskušal zbrati več informacij z Twitter:

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

*Moja razlaga za omejeno število spletnih vmesnikov za Kubernetes: storitve v oblaku in prodajalci Kubernetes običajno ponujajo lastne vmesnike, zato je trg za "dobre" brezplačne uporabniške vmesnike Kubernetes relativno majhen.

Skozi tvit, za katerega sem izvedel K8Dash, Kubernator и oktant. Poglejmo jih in druge obstoječe odprtokodne rešitve, poskusimo razumeti, kaj so.

K8Dash

"K8Dash je najpreprostejši način za upravljanje gruče Kubernetes."

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

K8Dash Videti je dobro in deluje hitro, vendar ima številne pomanjkljivosti za zgoraj navedene primere uporabe:

  • Deluje samo znotraj meja ene gruče.
  • Razvrščanje in filtriranje sta možna, vendar nimata stalnih povezav.
  • Ni podpore za definicije virov po meri (CRD).

Kubernator

»Kubernator je alternativni uporabniški vmesnik za Kubernetes. Za razliko od visokonivojske nadzorne plošče Kubernetes zagotavlja nizkonivojski nadzor in odlično vidljivost v vse objekte v gruči z možnostjo ustvarjanja novih, njihovega urejanja in razreševanja konfliktov. Ker je v celoti aplikacija na strani odjemalca (kot je kubectl), ne potrebuje nobenega drugega zaledja razen samega strežnika Kubernetes API in prav tako spoštuje pravila dostopa do gruče.«

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

To je precej natančen opis Kubernator. Na žalost nima nekaterih funkcij:

  • Služi samo enemu grozdu.
  • Ni načina pogleda seznama (tj. ne morete prikazati vseh podov s statusom »V teku«).

Nadzorna plošča Kubernetes

»Nadzorna plošča Kubernetes je univerzalni spletni vmesnik za gruče Kubernetes. Uporabnikom omogoča upravljanje in odpravljanje težav z aplikacijami, ki se izvajajo v gruči, kot tudi upravljanje same gruče.”

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

žal Nadzorna plošča Kubernetes v resnici ne pomaga pri moji dejavnosti podpore in odzivanja na incidente, ker:

  • ni trajnih povezav, na primer, ko filtriram vire ali spremenim vrstni red;
  • ni preprostega načina za filtriranje po statusu - na primer, oglejte si vse sklope s statusom »V teku«;
  • podprta je samo ena gruča;
  • CRD niso podprti (ta funkcija je v razvoju);
  • brez stolpcev po meri (kot so stolpci, označeni po vrsti kubectl -L).

Operativni pogled Kubernetes (kube-ops-view)

"Opazovalec nadzorne plošče sistema za prostor gruče K8s."

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

У Operativni pogled Kubernetes Povsem drugačen pristop: to orodje prikazuje samo vozlišča gruče in pode z uporabo WebGL, brez kakršnih koli besedilnih podrobnosti o predmetu. Odličen je za hiter pregled zdravja gruče (ali podi padajo?)*, ni pa primeren za zgoraj opisane primere uporabe podpore in odziva na incidente.

* Opomba. prevod: V tem smislu vas bo morda zanimal tudi naš vtičnik grafana-statusmap, o katerem smo podrobneje govorili v ta članek.

Poročilo o virih Kubernetes (kube-resource-report)

»Zberite zahteve za vire pod in gruče Kubernetes, jih primerjajte s porabo virov in ustvarite statični HTML.«

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Poročilo o virih Kubernetes ustvarja statična poročila HTML o uporabi virov in porazdelitvi stroškov med ekipami/aplikacijami v grozdih. Poročilo je nekoliko uporabno za podporo in odzivanje na incidente, saj vam omogoča hitro iskanje gruče, v kateri je nameščena aplikacija.

Opomba. prevod: Storitev in orodje sta lahko uporabna tudi pri pregledovanju informacij o dodeljevanju virov in njihovih stroških med ponudniki oblaka Kubecost, ki ga pregledamo nedavno objavljeno.

oktant

"Razširljiva spletna platforma za razvijalce, zasnovana za boljše razumevanje kompleksnosti gruč Kubernetes."

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

oktant, ki ga je ustvaril VMware, je nov izdelek, za katerega sem izvedel relativno nedavno. Z njegovo pomočjo je priročno raziskovati gručo na lokalnem računalniku (obstajajo celo vizualizacije), vendar obravnava vprašanja podpore in odzivanja na incidente le v omejenem obsegu. Slabosti Octanta:

  • Brez iskanja po gruči.
  • Deluje samo na lokalnem računalniku (ne razmesti v gručo).
  • Predmetov ni mogoče razvrstiti/filtrirati (podprt je samo izbirnik oznak).
  • Ne morete določiti stolpcev po meri.
  • Predmetov ne morete navesti po imenskem prostoru.

Težave s stabilnostjo Octanta sem imel tudi pri Zalando grozdih: na nekaterih CRD-jih padal je.

Predstavljamo spletni pogled Kubernetes

"kubectl za splet".

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)

Po analizi razpoložljivih možnosti vmesnika za Kubernetes sem se odločil ustvariti novega: Kubernetes WebView. Konec koncev, pravzaprav potrebujem samo vso moč kubectl na spletu, in sicer:

  • razpoložljivost vseh operacij (samo za branje), za katere uporabniki raje uporabljajo kubectl;
  • vsi URL-ji morajo biti trajni in predstavljati stran v izvirni obliki, tako da jih lahko sodelavci delijo in uporabljajo v drugih orodjih;
  • podpora za vse objekte Kubernetes, kar vam bo omogočilo reševanje kakršne koli težave;
  • sezname virov je treba prenesti za nadaljnje delo (v preglednicah, orodjih CLI, kot je grep) in shranjevanje (na primer za posmrtne ostanke);
  • podpora za izbiro virov po oznaki (podobno kot kubectl get .. -l);
  • možnost ustvarjanja kombiniranih seznamov različnih vrst virov (podobno kot kubectl get all) pridobiti skupno operativno sliko med sodelavci (na primer med odzivom na incident);
  • zmožnost dodajanja pametnih globokih povezav po meri v druga orodja, kot so nadzorne plošče, zapisovalniki, registri aplikacij itd. olajšati odpravljanje težav/razreševanje napak in odzivanje na incidente;
  • Sprednji del mora biti čim preprostejši (čisti HTML), da se izognete naključnim težavam, kot je zamrznjen JavaScript;
  • podpora za več gruč za poenostavitev interakcije med svetovanjem na daljavo (na primer, da si zapomnite samo en URL);
  • Če je mogoče, je treba situacijsko analizo poenostaviti (na primer s povezavami za prenos virov za vse gruče/imenske prostore);
  • dodatne priložnosti za ustvarjanje prilagodljivih povezav in označevanje besedilnih informacij, na primer tako, da lahko kolege usmerite na določen razdelek v opisu vira (vrstica v YAML);
  • zmožnost prilagajanja zahtevam določenega odjemalca, na primer omogoča ustvarjanje posebnih prikaznih predlog za CRD, lastne poglede tabel in spreminjanje slogov CSS;
  • orodja za nadaljnje raziskovanje v ukazni vrstici (na primer prikaz celotnih ukazov kubectl, pripravljen za kopiranje);

Poleg nalog, ki jih rešuje Kubernetes Web View (necilji) ostal:

  • abstrakcija predmetov Kubernetes;
  • upravljanje aplikacij (na primer upravljanje uvajanja, grafikoni Helm itd.);
  • operacije pisanja (izvajati jih je treba prek varnih orodij CI/CD in/ali GitOps);
  • lep vmesnik (JavaScript, teme itd.);
  • vizualizacija (glej kube-ops-view);
  • analiza stroškov (glej kube-resource-report).

Kako Kubernetes Web View pomaga pri podpori in odzivu na incidente?

Podpora

  • Vse povezave so trajne, ki omogoča lažjo izmenjavo informacij s sodelavci.
  • Lahko ustvarjate vaše ideje, na primer prikaže vse razmestitve in pode z določeno oznako v dveh določenih gručah (v povezavi je mogoče določiti več imen gruč in vrst virov, ločenih z vejicami).
  • Lahko se sklicujete na določene vrstice v datoteki YAML objekt, kar kaže na morebitne težave v specifikaciji objekta.

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)
Iskanje po gručah v Kubernetes Web View

Odziv na incident

  • Globalno iskanje (globalno iskanje) vam omogoča iskanje predmetov v vseh grozdih.
  • Pogledi seznama lahko prikaže vse objekte z določenim stanjem/stolpcem v vseh gručah (na primer, najti moramo vse pode s statusom »V teku«).
  • Sezname objektov lahko prenesete v formatu vrednosti, ločenih s tabulatorji (TSV) za poznejšo analizo.
  • Prilagodljive zunanje povezave Omogoča preklop na povezane nadzorne plošče in druga orodja.

Najava spletnega pogleda Kubernetes (in kratek pregled drugih spletnih uporabniških vmesnikov za Kubernetes)
Spletni pogled Kubernetes: seznam sklopov s statusom »V teku« v vseh gručah

Če želite preizkusiti Kubernetes Web View, priporočam, da preverite dokumentacijo ali poglej demo v živo.

Seveda bi lahko bil vmesnik boljši, a zaenkrat je Kubernetes Web View orodje za »napredne uporabnike«, ki se po potrebi ne izogibajo ročnemu spreminjanju URL poti. Če imate kakršne koli pripombe/dodatke/predloge, se obrnite z menoj na Twitterju!

Ta članek je kratka zgodovina ozadja, ki je vodilo do ustvarjanja Kubernetes Web View. Več bo sledilo! (Opomba. prevod: Pričakovati jih je treba v avtorski blog.)

PS od prevajalca

Preberite tudi na našem blogu:

Vir: www.habr.com

Dodaj komentar