Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

Huomautus. käännös: Alkuperäisen materiaalin kirjoittaja on Henning Jacobs Zalandosta. Hän loi uuden verkkokäyttöliittymän Kubernetesin kanssa työskentelyä varten, joka on sijoiteltu nimellä "kubectl for the web". Miksi uusi avoimen lähdekoodin projekti ilmestyi ja mitä kriteerejä nykyiset ratkaisut eivät täyttäneet - lue hänen artikkelinsa.

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

Tässä viestissä käyn läpi erilaisia ​​avoimen lähdekoodin Kubernetes-verkkokäyttöliittymiä, esitän vaatimukset yleiselle käyttöliittymälle ja selitän, miksi kehitin Kubernetes WebView — käyttöliittymä, joka on suunniteltu helpottamaan useiden klustereiden tukea ja vianmääritystä kerralla.

Käytä koteloita

Zalandossa palvelemme suurta määrää Kubernetes-käyttäjiä (900+) ja klustereita (100+). On olemassa pari yleistä käyttötapausta, jotka hyötyisivät erillisestä verkkotyökalusta:

  1. yhteydenpito kollegoiden kanssa tukea varten;
  2. tapauksiin reagoiminen ja niiden syiden selvittäminen.

Tukea

Kokemukseni mukaan tukiviestintä näyttää usein tältä:

— Apua, palvelumme XYZ ei ole käytettävissä!
– Mitä näet esiintyessäsi kubectl describe ingress ...?

Tai jotain vastaavaa CRD:lle:

— Minulla on ongelmia tunnistuspalvelun kanssa...
– Mitä komento tuottaa? kubectl describe platformcredentialsset ...?

Tällainen viestintä päättyy yleensä komennon eri muunnelmien syöttämiseen kubectl ongelman tunnistamiseksi. Tämän seurauksena keskustelun molemmat osapuolet joutuvat jatkuvasti vaihtamaan päätelaitteen ja verkkochatin välillä, ja he havaitsevat erilaisen tilanteen.

Siksi haluaisin Kubernetes-verkkokäyttöliittymän sallivan seuraavat:

  • käyttäjät voisivat vaihtaa linkkejä ja tarkkaile samaa asiaa;
  • auttaisi välttää inhimillisiä virheitä tuessa: esimerkiksi kirjautuminen väärään klusteriin komentorivillä, kirjoitusvirheet CLI-komentoissa jne.;
  • sallisi luoda omia näkemyksiäsi lähettää kollegoille, eli lisätä tunnisteiden sarakkeita, näyttää monenlaisia ​​resursseja yhdellä sivulla;
  • Ihannetapauksessa tämän verkkotyökalun pitäisi antaa sinun määrittää "syvät" linkit YAML:n tiettyihin osiin (esimerkiksi virheellisen parametrin osoittaminen, joka aiheuttaa virheitä).

Tapahtumaan reagointi ja analyysi

Infrastruktuurihäiriöihin reagoiminen edellyttää tilannetietoisuutta, kykyä arvioida vaikutuksia ja etsiä malleja klustereista. Muutamia esimerkkejä tosielämästä:

  • Kriittisellä tuotantopalvelulla on ongelmia ja sinun täytyy löytää kaikki Kubernetes-resurssit nimen mukaan kaikista klustereistavianmääritykseen;
  • solmut alkavat pudota, kun skaalautuu ja tarvitset etsi kaikista klustereista kaikki podit, joiden tila on "Odottaa".arvioida ongelman laajuutta;
  • Yksittäiset käyttäjät ilmoittavat DaemonSet-ongelmasta, joka on otettu käyttöön kaikissa klustereissa, ja heidän on selvitettävä Onko ongelma kokonaisuus?.

Vakioratkaisuni tällaisissa tapauksissa on jotain tällaista for i in $clusters; do kubectl ...; done. On selvää, että on mahdollista kehittää työkalu, joka tarjoaa samanlaiset ominaisuudet.

Nykyiset Kubernetes-verkkoliittymät

Kuberneteksen verkkorajapintojen avoimen lähdekoodin maailma ei ole kovin laaja*, joten yritin kerätä lisää tietoa käyttämällä Twitter:

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

*Selitykseni Kubernetesin verkkorajapintojen rajalliselle määrälle: pilvipalvelut ja Kubernetes-toimittajat tarjoavat yleensä omat käyttöliittymänsä, joten "hyvän" ilmaisen Kubernetes-käyttöliittymän markkinat ovat suhteellisen pienet.

Twiitin kautta, josta sain tietää K8Dash, Kubernator и Oktantti. Katsotaanpa niitä ja muita olemassa olevia avoimen lähdekoodin ratkaisuja, yritetään ymmärtää, mitä ne ovat.

K8Dash

"K8Dash on yksinkertaisin tapa hallita Kubernetes-klusteria."

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

K8Dash Näyttää hyvältä ja tuntuu nopealta, mutta sillä on useita haittoja yllä lueteltuihin käyttötapauksiin:

  • Toimii vain yhden klusterin rajojen sisällä.
  • Lajittelu ja suodatus ovat mahdollisia, mutta niissä ei ole pysyviä linkkejä.
  • Mukautetuille resurssimäärityksille (CRD) ei ole tukea.

Kubernator

"Kubernator on vaihtoehtoinen käyttöliittymä Kubernetesille. Toisin kuin korkean tason Kubernetes Dashboard, se tarjoaa matalan tason ohjauksen ja erinomaisen näkyvyyden kaikkiin klusterin objekteihin sekä mahdollisuuden luoda uusia, muokata niitä ja ratkaista ristiriitoja. Koska se on täysin asiakaspuolen sovellus (kuten kubectl), se ei vaadi muuta taustajärjestelmää kuin itse Kubernetes API -palvelinta ja noudattaa myös klusterin käyttösääntöjä."

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

Tämä on melko tarkka kuvaus Kubernator. Valitettavasti siitä puuttuu joitain ominaisuuksia:

  • Palvelee vain yhtä klusteria.
  • Luettelonäkymää ei ole (eli et voi näyttää kaikkia podeja, joiden tila on "Odottaa").

Kubernetes-kojelauta

"Kubernetes Dashboard on universaali verkkokäyttöliittymä Kubernetes-klustereille. Sen avulla käyttäjät voivat hallita ja tehdä vianetsintää klusterissa toimivia sovelluksia sekä hallita itse klusteria."

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

Valitettavasti Kubernetes-kojelauta ei todellakaan auta tuki- ja tapaustoimissani, koska se:

  • ei ole pysyviä linkkejä, esimerkiksi kun suodatan resursseja tai muutan lajittelujärjestystä;
  • ei ole helppoa tapaa suodattaa tilan mukaan - katso esimerkiksi kaikki podit, joiden tila on "Odottaa";
  • vain yhtä klusteria tuetaan;
  • CRD-tiedostoja ei tueta (tämä ominaisuus on kehitteillä);
  • ei mukautettuja sarakkeita (kuten tyypin mukaan merkittyjä sarakkeita kubectl -L).

Kubernetes Operational View (kube-ops-view)

"System Dashboard Observer for K8s Cluster Space."

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

У Kubernetesin toimintanäkymä Täysin erilainen lähestymistapa: tämä työkalu näyttää vain klusterisolmut ja podit WebGL:n avulla ilman tekstimuotoisia objektitietoja. Se sopii erinomaisesti nopeaan yleiskatsaukseen klusterin kunnosta (putoavatko podit?)*, mutta se ei sovellu yllä kuvattuihin tuki- ja häiriötilanteiden käyttötapauksiin.

* Huomautus. käännös: Tässä mielessä saatat olla kiinnostunut myös laajennuksestamme grafana-tilakartta, josta puhuimme tarkemmin tässä artikkelissa.

Kubernetes-resurssiraportti (kube-resource-report)

"Kerää pod- ja Kubernetes-klusteriresurssipyynnöt, vertaa niitä resurssien kulutukseen ja luo staattista HTML-koodia."

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

Kubernetes Resource Report luo staattisia HTML-raportteja resurssien käytöstä ja kustannusten jakautumisesta ryhmien/sovellusten kesken klustereissa. Raportti on jossain määrin hyödyllinen tuen ja tapahtumien reagoinnin kannalta, koska sen avulla voit nopeasti löytää klusterin, jossa sovellus on otettu käyttöön.

Huomautus. käännös: Palvelusta ja työkalusta voi olla hyötyä myös tarkasteltaessa tietoja resurssien allokoinnista ja niiden kustannuksista pilvipalveluntarjoajien kesken Kubecost, jonka tarkistamme äskettäin julkaistu.

Oktantti

"Laajentuva verkkoalusta kehittäjille, joka on suunniteltu ymmärtämään paremmin Kubernetes-klusterien monimutkaisuutta."

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

Oktantti, jonka on luonut VMware, on uusi tuote, josta opin suhteellisen hiljattain. Sen avulla on kätevää tutkia klusteria paikallisella koneella (sillä on jopa visualisointeja), mutta se käsittelee tuki- ja tapausvastauskysymyksiä vain rajoitetusti. Octantin haitat:

  • Ei klusterihakua.
  • Toimii vain paikallisessa koneessa (ei ota käyttöön klusteriin).
  • Objekteja ei voi lajitella/suodattaa (vain tarran valitsin on tuettu).
  • Et voi määrittää mukautettuja sarakkeita.
  • Et voi luetella objekteja nimiavaruuden mukaan.

Minulla oli myös ongelmia Octantin vakauden kanssa Zalando-klustereiden kanssa: joissakin CRD-levyissä hän oli putoamassa.

Esittelyssä Kubernetes Web View

"kubectl webille".

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)

Analysoituani Kubernetesin käytettävissä olevat käyttöliittymävaihtoehdot päätin luoda uuden: Kubernetes WebView. Loppujen lopuksi itse asiassa tarvitsen vain kaiken voiman kubectl verkossa, nimittäin:

  • kaikkien (vain luku) toimintojen saatavuus, joihin käyttäjät haluavat käyttää kubectlia;
  • kaikkien URL-osoitteiden on oltava pysyviä ja edustavat sivua sen alkuperäisessä muodossa, jotta kollegat voivat jakaa ne ja käyttää niitä muissa työkaluissa;
  • tuki kaikille Kubernetes-objekteille, jonka avulla voit ratkaista minkä tahansa tyyppiset ongelmat;
  • resurssiluetteloiden tulee olla ladattavissa jatkotyötä varten (laskentataulukoissa, CLI-työkaluissa, kuten grep) ja varastointi (esimerkiksi post mortem);
  • tuki resurssien valitsemiseen tunnisteen mukaan (samanlainen kuin kubectl get .. -l);
  • kyky luoda yhdistettyjä luetteloita erityyppisistä resursseista (samankaltaisia ​​kuin kubectl get all) yhteisen toimintakuvan saamiseksi kollegoiden kesken (esimerkiksi tapaturman aikana);
  • mahdollisuus lisätä mukautettuja älykkäitä täsmälinkkejä muihin työkaluihin, kuten kojetauluihin, lokereihin, sovellusrekistereihin jne. helpottaa vianmääritystä/virheiden ratkaisemista ja reagointia tapahtumiin;
  • Käyttöliittymän tulee olla mahdollisimman yksinkertainen (puhdas HTML), jotta vältetään satunnaiset ongelmat, kuten jäädytetty JavaScript;
  • useiden klustereiden tuki vuorovaikutuksen yksinkertaistamiseksi etäkonsultoinnin aikana (esimerkiksi vain yhden URL-osoitteen muistaminen);
  • Tilanneanalyysiä tulisi mahdollisuuksien mukaan yksinkertaistaa (esimerkiksi linkkien avulla kaikkien klustereiden/nimiavaruuksien resurssien lataus);
  • lisämahdollisuuksia joustavien linkkien luomiseen ja tekstitietojen korostamiseen esimerkiksi siten, että voit osoittaa kollegat tiettyyn osioon resurssikuvauksessa (rivi YAML:ssa);
  • kyky räätälöidä tietyn asiakkaan vaatimuksia, esimerkiksi mahdollistaen erityisten näyttömallien luomisen CRD:ille, omia taulukkonäkymiäsi ja muuttaa CSS-tyylejä;
  • työkalut komentorivin lisäselvitykseen (esimerkiksi täydellisten kometojen näyttäminen kubectl, valmis kopioitavaksi);

Kubernetes Web Viewissa ratkaistujen tehtävien lisäksi (ei-maalit) jäi:

  • Kubernetes-objektien abstraktio;
  • sovellusten hallinta (esimerkiksi käyttöönoton hallinta, ruorikaaviot jne.);
  • kirjoitustoiminnot (täytyy tehdä suojattujen CI/CD- ja/tai GitOps-työkalujen kautta);
  • kaunis käyttöliittymä (JavaScript, teemat jne.);
  • visualisointi (katso kube-ops-view);
  • kustannusanalyysi (katso kube-resurssi-raportti).

Miten Kubernetes Web View auttaa tuessa ja tapauksiin vastaamisessa?

Tukea

  • Kaikki linkit ovat pysyviä, mikä helpottaa tietojen vaihtoa kollegoiden kanssa.
  • Voit luoda ideasiNäytä esimerkiksi kaikki käyttöönotot ja podit tietyllä tunnisteella kahdessa tietyssä klusterissa (useita klusterin nimiä ja resurssityyppejä voidaan määrittää linkissä pilkuilla erotettuina).
  • Voit viitata tietyt rivit YAML-tiedostossa objekti, joka osoittaa mahdolliset ongelmat objektin määrittelyssä.

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)
Hae klustereiden mukaan Kubernetes-verkkonäkymässä

Tapahtumavastaus

  • Maailmanlaajuinen haku (maailmanlaajuinen haku) voit etsiä kohteita kaikista klustereista.
  • Luettelonäkymät voi näyttää kaikki objektit, joilla on tietty tila/sarake kaikissa klustereissa (meidän on esimerkiksi löydettävä kaikki podit, joiden tila on "Odottaa").
  • Objektien luetteloita voi ladata TSV-muodossa myöhempää analysointia varten.
  • Muokattavat ulkoiset linkit Voit siirtyä vastaaviin kojetauluihin ja muihin työkaluihin.

Ilmoitus Kubernetes-verkkonäkymästä (ja lyhyt katsaus muihin Kubernetesin verkkokäyttöliittymiin)
Kubernetes Web View: luettelo podista, joiden tila on "Odottaa" kaikissa klustereissa

Jos haluat kokeilla Kubernetes Web View'ta, suosittelen tutustumista dokumentointi tai katsoa live-demo.

Tietysti käyttöliittymä voisi olla parempi, mutta toistaiseksi Kubernetes Web View on työkalu "edenneille käyttäjille", jotka eivät karkaa tarvittaessa manipuloimasta URL-polkuja manuaalisesti. Jos sinulla on kommentteja / lisäyksiä / ehdotuksia, ota yhteyttä kanssani Twitterissä!

Tämä artikkeli on lyhyt historia taustasta, joka johti Kubernetes Web Viewin luomiseen. Lisää tulee perässä! (Huomautus. käännös: Heitä pitäisi odottaa kirjoittajan blogi.)

PS kääntäjältä

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti