Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

Pastaba. vert.: Originalios medžiagos autorius Henningas Jacobsas iš Zalando. Jis sukūrė naują žiniatinklio sąsają darbui su „Kubernetes“, kuri yra „kubectl“ žiniatinkliui. Kodėl atsirado naujas Open Source projektas ir kokių kriterijų neatitiko esami sprendimai – skaitykite jo straipsnyje.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

Šiame įraše apžvelgiu įvairias atvirojo kodo „Kubernetes“ žiniatinklio sąsajas, išdėstau savo reikalavimus universaliai vartotojo sąsajai ir paaiškinu, kodėl sukūriau Kubernetes WebView — sąsaja, skirta palengvinti kelių grupių palaikymą ir trikčių šalinimą vienu metu.

Naudojimo atvejai

„Zalando“ aptarnauja daugybę „Kubernetes“ vartotojų (900+) ir grupių (100+). Yra keletas bendrų naudojimo atvejų, kuriems būtų naudinga naudoti specialų žiniatinklio įrankį:

  1. bendravimas su kolegomis dėl paramos;
  2. reaguoti į incidentus ir tirti jų priežastis.

Remti

Mano patirtis rodo, kad palaikymo komunikacija dažnai atrodo taip:

— Pagalba, mūsų paslauga XYZ neprieinama!
– Ką matai koncertuodamas kubectl describe ingress ...?

Arba kažkas panašaus CRD:

— Turiu problemų su identifikavimo paslauga...
– Ką duoda komanda? kubectl describe platformcredentialsset ...?

Toks bendravimas paprastai baigiasi įvairių komandos variantų įvedimu kubectl siekiant nustatyti problemą. Dėl to abi pokalbio šalys yra priverstos nuolat persijungti tarp terminalo ir interneto pokalbio, be to, jos stebi skirtingą situaciją.

Todėl norėčiau, kad „Kubernetes“ žiniatinklio sąsaja leistų:

  • vartotojai galėtų keistis nuorodomis ir stebėti tą patį;
  • padeciau vengti žmogiškų klaidų palaikyme: pavyzdžiui, prisijungimas prie netinkamo klasterio komandinėje eilutėje, rašybos klaidos CLI komandose ir pan.;
  • leistų sukurti savo nuomonę siųsti kolegoms, tai yra pridėti žymų stulpelius, viename puslapyje rodyti daugelio tipų išteklius;
  • Idealiu atveju šis žiniatinklio įrankis turėtų leisti jums nustatyti „giliosios“ nuorodos į konkrečias YAML dalis (pavyzdžiui, nurodomas neteisingas parametras, dėl kurio atsiranda gedimų).

Reagavimas į incidentą ir analizė

Norint reaguoti į infrastruktūros incidentus, reikalingas situacijos suvokimas, gebėjimas įvertinti poveikį ir ieškoti modelių grupėse. Kai kurie realaus gyvenimo pavyzdžiai:

  • Kritinė gamybos tarnyba turi problemų ir jums reikia rasti visus Kubernetes išteklius pagal pavadinimą visose grupėsetrikčių šalinimui;
  • mazgai pradeda kristi kai pleiskanoja ir jums reikia rasti visas ankštis, kurių būsena yra „Laukiama“, visose grupėseįvertinti problemos apimtį;
  • atskiri vartotojai praneša apie problemą, susijusią su „DaemonSet“, įdiegtu visose grupėse, ir turi išsiaiškinti Ar problema totali?.

Mano standartinis sprendimas tokiais atvejais yra kažkas panašaus for i in $clusters; do kubectl ...; done. Akivaizdu, kad būtų galima sukurti įrankį, kuris suteiktų panašias galimybes.

Esamos Kubernetes žiniatinklio sąsajos

„Kubernetes“ interneto sąsajų atvirojo kodo pasaulis nėra labai didelis*, todėl pabandžiau surinkti daugiau informacijos naudodamas Twitter:

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

*Mano paaiškinimas dėl riboto Kubernetes žiniatinklio sąsajų skaičiaus: debesies paslaugos ir Kubernetes pardavėjai paprastai siūlo savo sąsajas, todėl „geros“ nemokamos Kubernetes vartotojo sąsajos rinka yra palyginti maža.

Per tviterį, apie kurį sužinojau K8Dash, Kubernatorius и Oktantas. Pažvelkime į juos ir kitus esamus atvirojo kodo sprendimus, pabandykime suprasti, kas tai yra.

K8Dash

„K8Dash yra paprasčiausias būdas valdyti Kubernetes klasterį.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

K8Dash Atrodo gerai ir jaučiasi greitai, tačiau turi keletą trūkumų aukščiau išvardytiems naudojimo atvejams:

  • Veikia tik vienos grupės ribose.
  • Galima rūšiuoti ir filtruoti, tačiau neturi nuolatinių nuorodų.
  • Tinkintų išteklių apibrėžimai (CRD) nepalaikomi.

Kubernatorius

„Kubernator yra alternatyvi Kubernetes vartotojo sąsaja. Skirtingai nuo aukšto lygio „Kubernetes“ prietaisų skydelio, ji suteikia žemo lygio valdymą ir puikų visų klasterio objektų matomumą bei galimybę kurti naujus, juos redaguoti ir išspręsti konfliktus. Kadangi tai yra visiškai kliento programa (kaip kubectl), jai nereikia jokios kitos užpakalinės programos, išskyrus patį Kubernetes API serverį, ir taip pat laikomasi klasterio prieigos taisyklių.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

Tai gana tikslus aprašymas Kubernatorius. Deja, jai trūksta kai kurių funkcijų:

  • Aptarnauja tik vieną grupę.
  • Sąrašo peržiūros režimo nėra (t. y. negalite rodyti visų grupių, kurių būsena yra „Laukiama“).

„Kubernetes“ prietaisų skydelis

„Kubernetes Dashboard yra universali žiniatinklio sąsaja, skirta Kubernetes klasteriams. Tai leidžia vartotojams valdyti ir šalinti klasteryje veikiančias programas, taip pat valdyti patį klasterį.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

Deja, „Kubernetes“ prietaisų skydelis tikrai nepadeda mano palaikymo ir reagavimo į incidentus veiklos, nes tai:

  • nėra nuolatinių nuorodų, pavyzdžiui, kai filtruoju išteklius arba pakeičiau rūšiavimo tvarką;
  • nėra lengvo būdo filtruoti pagal būseną – pavyzdžiui, žiūrėkite visas ankšties, kurių būsena yra „Laukiama“;
  • palaikoma tik viena klasteris;
  • CRD nepalaikomi (ši funkcija kuriama);
  • nėra tinkintų stulpelių (pvz., stulpelių, pažymėtų pagal tipą kubectl -L).

„Kubernetes“ operatyvinis vaizdas („kube-ops-view“)

„System Dashboard Observer for K8s Cluster Space“.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

У „Kubernetes“ operatyvinis vaizdas Visiškai kitoks požiūris: šis įrankis rodo tik klasterio mazgus ir blokus naudojant WebGL, be jokios tekstinės objekto informacijos. Tai puikiai tinka norint greitai apžvelgti klasterio būklę (ar krinta ankštys?)*, tačiau ji netinka pirmiau aprašytiems palaikymo ir reagavimo į incidentus naudojimo atvejais.

* Pastaba. vert.: Šia prasme jus taip pat gali sudominti mūsų papildinys grafana-būsenos žemėlapis, apie kurį išsamiau kalbėjome Šis straipsnis.

„Kubernetes“ išteklių ataskaita (kube-resource-report)

Surinkite pod ir Kubernetes klasterio išteklių užklausas, palyginkite jas su išteklių suvartojimu ir generuokite statinį HTML.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

Kubernetes išteklių ataskaita generuoja statines HTML ataskaitas apie išteklių naudojimą ir išlaidų paskirstymą komandoms/programoms grupėse. Ataskaita yra šiek tiek naudinga teikiant pagalbą ir reaguojant į incidentus, nes ji leidžia greitai rasti grupę, kurioje įdiegta programa.

Pastaba. vert.: paslauga ir įrankis taip pat gali būti naudingi peržiūrint informaciją apie išteklių paskirstymą ir jų išlaidas tarp debesijos paslaugų teikėjų Kubecost, kurį peržiūrime neseniai paskelbtas.

Oktantas

„Išplečiama žiniatinklio platforma kūrėjams, skirta geriau suprasti Kubernetes klasterių sudėtingumą.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

Oktantas, sukurta VMware, yra naujas produktas, apie kurį sužinojau palyginti neseniai. Su jo pagalba patogu tyrinėti klasterį vietiniame kompiuteryje (yra net vizualizacijos), tačiau palaikymo ir reagavimo į incidentus klausimus jis sprendžia tik ribotai. Octantės trūkumai:

  • Nėra klasterio paieškos.
  • Veikia tik vietiniame kompiuteryje (neįdiegta į klasterį).
  • Negalima rūšiuoti / filtruoti objektų (palaikomas tik etikečių parinkiklis).
  • Negalite nurodyti tinkintų stulpelių.
  • Negalite išvardyti objektų pagal vardų erdvę.

Taip pat turėjau problemų dėl Octant stabilumo su Zalando klasteriais: kai kuriuose CRD jis krisdavo.

Pristatome „Kubernetes Web View“.

„kubectl žiniatinkliui“.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)

Išanalizavęs galimas „Kubernetes“ sąsajos parinktis, nusprendžiau sukurti naują: Kubernetes WebView. Juk iš tikrųjų man tiesiog reikia visos galios kubectl žiniatinklyje, būtent:

  • visų (tik skaitymo) operacijų, kurioms vartotojai nori naudoti kubectl, prieinamumas;
  • visi URL turi būti nuolatiniai ir reprezentuoti puslapį originalia forma, kad kolegos galėtų jais dalytis ir naudoti kituose įrankiuose;
  • visų Kubernetes objektų palaikymas, kuris leis išspręsti bet kokio tipo problemas;
  • išteklių sąrašus turėtų būti galima atsisiųsti tolesniam darbui (skaičiuoklėse, CLI įrankiuose, pvz., grep) ir saugojimą (pavyzdžiui, pomirtiniams);
  • išteklių atrankos pagal etiketę palaikymas (panašus į kubectl get .. -l);
  • galimybė kurti kombinuotus įvairių tipų išteklių sąrašus (panašius į kubectl get all) susidaryti bendrą operatyvinį vaizdą tarp kolegų (pavyzdžiui, reaguojant į incidentą);
  • galimybė pridėti pasirinktines išmaniąsias giliąsias nuorodas į kitus įrankius, pvz., prietaisų skydelius, registratorius, programų registrus ir kt. palengvinti gedimų šalinimą/šalinimą ir reagavimą į incidentus;
  • Prietaisas turi būti kuo paprastesnis (grynas HTML), kad būtų išvengta atsitiktinių problemų, tokių kaip užšaldytas JavaScript;
  • kelių grupių palaikymas, siekiant supaprastinti sąveiką nuotolinio konsultavimo metu (pavyzdžiui, norint atsiminti tik vieną URL);
  • Jei įmanoma, situacijos analizė turėtų būti supaprastinta (pavyzdžiui, su nuorodomis į visų grupių / vardų erdvių išteklių atsisiuntimą);
  • papildomos galimybės kurti lanksčias nuorodas ir paryškinti tekstinę informaciją, pavyzdžiui, kad galėtumėte nukreipti kolegas į konkrečią resurso aprašymo skiltį (YAML eilutė);
  • galimybė tinkinti pagal konkretaus kliento reikalavimus, pavyzdžiui, leidžiant sukurti specialius CRD rodymo šablonus, savo lentelių rodinius ir keisti CSS stilius;
  • įrankiai, skirti tolesniam tyrinėjimui komandinėje eilutėje (pavyzdžiui, rodyti visas komandas kubectl, paruoštas kopijavimui);

Be Kubernetes Web View išspręstų užduočių (ne įvarčiai) liko:

  • Kubernetes objektų abstrakcija;
  • programų valdymas (pavyzdžiui, diegimo valdymas, vairo diagramos ir kt.);
  • rašymo operacijos (turi būti atliekamos naudojant saugius CI/CD ir/arba GitOps įrankius);
  • graži sąsaja (JavaScript, temos ir kt.);
  • vizualizacija (žr kube-ops-view);
  • išlaidų analizė (žr kube-resource-report).

Kaip „Kubernetes Web View“ padeda palaikyti ir reaguoti į incidentus?

Remti

  • Visos nuorodos yra nuolatinės, todėl lengviau keistis informacija su kolegomis.
  • Galite kurti savo idėjas, pavyzdžiui, rodyti visus diegimus ir rinkinius su tam tikra etikete dviejose konkrečiose grupėse (nuorodoje gali būti nurodyti keli grupių pavadinimai ir išteklių tipai, atskirti kableliais).
  • Galite remtis konkrečios eilutės YAML faile objektą, nurodant galimas problemas objekto specifikacijoje.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)
Ieškoti pagal grupes „Kubernetes Web View“.

Reagavimas į incidentą

  • Pasaulinė paieška (pasaulinė paieška) leidžia ieškoti objektų visose grupėse.
  • Sąrašo rodiniai gali rodyti visus objektus su tam tikra būsena / stulpeliu visuose klasteriuose (pavyzdžiui, turime rasti visas ankštis, kurių būsena yra „Laukiama“).
  • Objektų sąrašus galima atsisiųsti skirtukais atskirtų reikšmių (TSV) formatu vėlesnei analizei.
  • Pritaikomos išorinės nuorodos Leidžia pereiti prie susijusių prietaisų skydelių ir kitų įrankių.

Pranešimas apie „Kubernetes“ žiniatinklio rodinį (ir trumpa kitų „Kubernetes“ žiniatinklio vartotojo sąsajų apžvalga)
„Kubernetes Web View“: visų grupių, kurių būsena „Laukiama“, sąrašas

Jei norite išbandyti „Kubernetes Web View“, rekomenduoju patikrinti dokumentacija arba pažiūrėk gyva demonstracija.

Žinoma, sąsaja galėtų būti geresnė, tačiau kol kas „Kubernetes Web View“ yra įrankis „pažengusiems vartotojams“, kurie, jei reikia, nevengia rankiniu būdu manipuliuoti URL keliais. Jei turite pastabų/papildymų/pasiūlymų, kreipkitės su manimi Twitter!

Šis straipsnis yra trumpa istorija, kuri paskatino sukurti Kubernetes Web View. Bus daugiau! (Pastaba. vert.: Jų reikėtų tikėtis autoriaus dienoraštis.)

PS iš vertėjo

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий