Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

Nota. transl.: L'autor del material original és Henning Jacobs de Zalando. Va crear una nova interfície web per treballar amb Kubernetes, que es posiciona com a "kubectl per a la web". Per què va aparèixer un nou projecte de codi obert i quins criteris no es complien amb les solucions existents: llegiu el seu article.

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

En aquesta publicació, reviso les diferents interfícies web de codi obert de Kubernetes, exposo els meus requisits per a una interfície d'usuari universal i explico per què vaig desenvolupar Kubernetes WebView — una interfície dissenyada per facilitar el suport i la resolució de problemes de diversos clústers alhora.

Casos d'ús

A Zalando donem servei a un gran nombre d'usuaris de Kubernetes (900+) i clústers (100+). Hi ha un parell de casos d'ús habituals que es beneficiaran d'una eina web dedicada:

  1. comunicació amb els companys de suport;
  2. donar resposta als incidents i investigar-ne les causes.

suport

Segons la meva experiència, les comunicacions d'assistència solen ser així:

— Ajuda, el nostre servei XYZ no està disponible!
—Què veus quan actues kubectl describe ingress ...?

O alguna cosa semblant per a CRD:

— Tinc algun problema amb el servei d'identificació...
—Què produeix l'ordre? kubectl describe platformcredentialsset ...?

Aquesta comunicació normalment es redueix a introduir diverses variacions de l'ordre kubectl per tal d'identificar el problema. Com a resultat, ambdues parts de la conversa es veuen obligades a canviar constantment entre el terminal i el xat web, a més d'observar una situació diferent.

Per tant, m'agradaria que la interfície web de Kubernetes permetés el següent:

  • els usuaris podrien intercanviar enllaços i observeu el mateix;
  • ajudaria evitar els errors humans en suport: per exemple, iniciar sessió al clúster incorrecte a la línia d'ordres, errors ortogràfics a les ordres de la CLI, etc.;
  • permetria genera les teves pròpies opinions enviar als companys, és a dir, afegir columnes d'etiquetes, mostrar molts tipus de recursos en una pàgina;
  • L'ideal és que aquesta eina web us permeti configurar enllaços "profunds" a seccions específiques de YAML (per exemple, assenyalant un paràmetre incorrecte que està causant errors).

Anàlisi i resposta a incidents

Respondre als incidents d'infraestructura requereix consciència de la situació, la capacitat d'avaluar l'impacte i buscar patrons en clústers. Alguns exemples de la vida real:

  • Un servei de producció crític té problemes i cal Trobeu tots els recursos de Kubernetes per nom a tots els clústersresoldre problemes;
  • els nodes comencen a caure en escalar i ho necessiteu trobar tots els pods amb l'estat "Pendent" a tots els clústersper avaluar l'abast del problema;
  • usuaris individuals informen d'un problema amb DaemonSet desplegat a tots els clústers i han d'esbrinar-ho El problema és total?.

La meva solució estàndard en aquests casos és una cosa així for i in $clusters; do kubectl ...; done. Òbviament, és possible desenvolupar una eina que ofereixi capacitats similars.

Interfícies web de Kubernetes existents

El món de codi obert de les interfícies web de Kubernetes no és molt gran*, així que vaig intentar recollir més informació utilitzant Twitter:

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

*La meva explicació sobre el nombre limitat d'interfícies web per a Kubernetes: els serveis al núvol i els proveïdors de Kubernetes solen oferir les seves pròpies interfícies, de manera que el mercat de la "bona" ​​interfície d'usuari gratuïta de Kubernetes és relativament petit.

A través d'un tuit que vaig conèixer K8 Dash, Kubernator и Octant. Mirem-les i altres solucions de codi obert existents, intentem entendre quines són.

K8 Dash

"K8Dash és la manera més senzilla de gestionar un clúster de Kubernetes".

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

K8 Dash Es veu bé i se sent ràpid, però té una sèrie d'inconvenients per als casos d'ús enumerats anteriorment:

  • Funciona només dins dels límits d'un clúster.
  • Es poden ordenar i filtrar, però no tenen enllaços permanents.
  • No hi ha suport per a les definicions de recursos personalitzades (CRD).

Kubernator

"Kubernator és una interfície d'usuari alternativa per a Kubernetes. A diferència del tauler de control de Kubernetes d'alt nivell, proporciona un control de baix nivell i una visibilitat excel·lent de tots els objectes del clúster amb la possibilitat de crear-ne de nous, editar-los i resoldre conflictes. En ser una aplicació totalment del costat del client (com kubectl), no requereix cap backend que no sigui el propi servidor de l'API de Kubernetes, i també respecta les regles d'accés al clúster".

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

Aquesta és una descripció bastant precisa Kubernator. Malauradament, no té algunes característiques:

  • Serveix només un clúster.
  • No hi ha cap mode de visualització de llista (és a dir, no podeu mostrar tots els pods amb l'estat "Pendent").

Tauler de control de Kubernetes

"Kubernetes Dashboard és una interfície web universal per a clústers de Kubernetes. Permet als usuaris gestionar i resoldre problemes d'aplicacions que s'executen en un clúster, així com gestionar el propi clúster".

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

Desafortunadament, Tauler de control de Kubernetes Realment no ajuda amb les meves activitats de suport i resposta a incidents perquè:

  • no hi ha enllaços permanents, per exemple quan filtre recursos o canvio l'ordre d'ordenació;
  • no hi ha una manera fàcil de filtrar per estat; per exemple, veure tots els pods amb l'estat "Pendent";
  • només s'admet un clúster;
  • Els CRD no són compatibles (aquesta característica està en desenvolupament);
  • no hi ha columnes personalitzades (com ara columnes etiquetades per tipus kubectl -L).

Vista operativa de Kubernetes (kube-ops-view)

"Observador del tauler de control del sistema per a l'espai del clúster K8s".

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

У Vista operativa de Kubernetes Un enfocament completament diferent: aquesta eina només mostra nodes i pods de clúster mitjançant WebGL, sense cap detall de l'objecte textual. És ideal per obtenir una visió general ràpida de l'estat del clúster (s'estan caient les beines?)*, però no és adequat per als casos d'ús de suport i resposta a incidents descrits anteriorment.

* Nota. transl.: En aquest sentit, també us pot interessar el nostre complement grafana-estatusmap, del qual hem parlat amb més detall a aquest article.

Informe de recursos de Kubernetes (informe-recurs-kube)

"Recolliu les sol·licituds de recursos del pod i del clúster de Kubernetes, compareu-les amb el consum de recursos i genereu HTML estàtic".

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

Informe de recursos de Kubernetes genera informes HTML estàtics sobre l'ús de recursos i la distribució de costos entre equips/aplicacions en clústers. L'informe és una mica útil per al suport i la resposta a incidents perquè us permet trobar ràpidament el clúster on s'ha desplegat l'aplicació.

Nota. transl.: un servei i una eina també poden ser útils per visualitzar informació sobre l'assignació de recursos i els seus costos entre els proveïdors de núvol. Kubecost, que repassem publicat recentment.

Octant

"Una plataforma web extensible per a desenvolupadors dissenyada per proporcionar una major comprensió de la complexitat dels clústers de Kubernetes".

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

Octant, creat per VMware, és un producte nou que vaig conèixer fa relativament poc. Amb la seva ajuda, és convenient explorar el clúster en una màquina local (fins i tot hi ha visualitzacions), però només aborda els problemes de suport i resposta a incidents de manera limitada. Desavantatges d'Octant:

  • No hi ha cerca de clúster.
  • Funciona només a la màquina local (no es desplega en un clúster).
  • No es poden ordenar/filtrar objectes (només s'admet el selector d'etiquetes).
  • No podeu especificar columnes personalitzades.
  • No podeu llistar objectes per espai de noms.

També vaig tenir problemes amb l'estabilitat d'Octant amb clústers Zalando: en alguns CRD estava caient.

Presentació de Kubernetes Web View

"kubectl per a la web".

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)

Després d'analitzar les opcions d'interfície disponibles per a Kubernetes, vaig decidir crear-ne una de nova: Kubernetes WebView. Després de tot, de fet, només necessito tot el poder kubectl al web, a saber:

  • disponibilitat de totes les operacions (només de lectura) per a les quals els usuaris prefereixen utilitzar kubectl;
  • tots els URL han de ser permanents i representar la pàgina en la seva forma original perquè els companys els puguin compartir i utilitzar-los en altres eines;
  • suport per a tots els objectes de Kubernetes, que us permetrà resoldre qualsevol tipus de problema;
  • Les llistes de recursos s'han de descarregar per a més treballs (en fulls de càlcul, eines CLI com grep) i emmagatzematge (per exemple, per a autopsies);
  • suport per seleccionar recursos per etiqueta (similar a kubectl get .. -l);
  • la capacitat de crear llistes combinades de diversos tipus de recursos (similars a kubectl get all) per obtenir una imatge operativa comuna entre els companys (per exemple, durant una resposta a un incident);
  • la possibilitat d'afegir enllaços profunds intel·ligents personalitzats a altres eines com ara taulers de control, registres, registres d'aplicacions, etc. per facilitar la resolució de problemes/resolució d'errors i la resposta a incidències;
  • La interfície ha de ser el més senzilla possible (HTML pur) per evitar problemes aleatoris, com ara JavaScript congelat;
  • suport per a múltiples clústers per simplificar la interacció durant la consulta remota (per exemple, per recordar només un URL);
  • Si és possible, s'hauria de simplificar l'anàlisi de la situació (per exemple, amb enllaços per descarregar recursos per a tots els clústers/espais de noms);
  • oportunitats addicionals per crear enllaços flexibles i ressaltar informació de text, per exemple, perquè pugueu indicar als companys una secció específica de la descripció del recurs (una línia a YAML);
  • la capacitat de personalitzar els requisits d'un client específic, per exemple, que us permet crear plantilles de visualització especials per a CRD, les vostres pròpies vistes de taula i canviar els estils CSS;
  • eines per a una exploració addicional a la línia d'ordres (per exemple, mostrant ordres completes kubectl, llest per copiar);

Més enllà de les tasques resoltes a Kubernetes Web View (no gols) va quedar:

  • abstracció d'objectes Kubernetes;
  • gestió d'aplicacions (per exemple, gestió de desplegament, gràfics Helm, etc.);
  • operacions d'escriptura (s'han de fer mitjançant eines CI/CD i/o GitOps segures);
  • bella interfície (JavaScript, temes, etc.);
  • visualització (vegeu Kube-ops-view);
  • anàlisi de costos (vegeu informe-recurs-kube).

Com ajuda Kubernetes Web View amb el suport i la resposta a incidents?

suport

  • Tots els enllaços són permanents, que facilita l'intercanvi d'informació amb els companys.
  • Podeu crear les teves idees, per exemple, mostra tots els desplegaments i pods amb una etiqueta específica en dos clústers específics (a l'enllaç es poden especificar diversos noms de clúster i tipus de recursos, separats per comes).
  • Podeu consultar línies específiques en un fitxer YAML objecte, indicant problemes potencials en l'especificació de l'objecte.

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)
Cerca per clústers a Kubernetes Web View

Resposta a incidents

  • Cerca global (cerca global) permet cercar objectes a tots els clústers.
  • Visualitzacions de llista pot mostrar tots els objectes amb un estat/columna determinat a tots els clústers (per exemple, hem de trobar tots els pods amb l'estat "Pendent").
  • Es poden descarregar llistes d'objectes en format de valors separats per tabulacions (TSV) per a una anàlisi posterior.
  • Enllaços externs personalitzables Us permet canviar a taulers de control i altres eines relacionades.

Anunci de la visualització web de Kubernetes (i una breu visió general d'altres interfícies d'usuari web per a Kubernetes)
Kubernetes Web View: llista de pods amb l'estat "Pendent" a tots els clústers

Si voleu provar Kubernetes Web View, us recomano que feu una ullada documentació o mira demostració en directe.

Per descomptat, la interfície podria ser millor, però ara com ara Kubernetes Web View és una eina per a "usuaris avançats" que no defugen manipular els camins d'URL manualment si cal. Si teniu comentaris/addicions/suggeriments, poseu-vos en contacte amb mi a Twitter!

Aquest article és una breu història dels antecedents que van portar a la creació de Kubernetes Web View. En seguiran més! (Nota. transl.: S'han d'esperar a blog de l'autor.)

PS del traductor

Llegeix també al nostre blog:

Font: www.habr.com

Afegeix comentari