Ùn pudete micca bisognu di Kubernetes

Ùn pudete micca bisognu di Kubernetes
Ragazza in scooter. Illustrazione freepik, Logo Nomad da HashiCorp

Kubernetes hè u gorilla di 300 libbra di l'orchestrazione di container. Funziona in certi di i più grandi sistemi di cuntainer in u mondu, ma hè caru.

Particularmente caru per e squadre più chjuche, chì necessitaranu assai tempu di supportu è una curva di apprendimentu ripida. Questu hè troppu sopratuttu per a nostra squadra di quattru. Allora avemu cuminciatu à circà alternative - è ci hè innamuratu Nomad.

Chi voli

A nostra squadra supporta una quantità di servizii di monitoraghju è analisi di rendiment cumuni: punti finali API per metriche scritte in Go, esportazioni Prometheus, parsers di log cum'è Logstash è Gollum, è ancu basa di dati cum'è InfluxDB o Elasticsearch. Ognunu di sti servizii funziona in u so propiu containeru. Avemu bisognu di un sistema simplice per mantene tuttu in funzione.

Avemu cuminciatu cù una lista di esigenze per l'orchestrazione di u containeru:

  • Eseguisce un settore di servizii nantu à parechje macchine.
  • Panoramica di i servizii in esecuzione.
  • Ligami trà servizii.
  • Riavvia automaticamente se u serviziu scende.
  • Mantenimentu di l'infrastruttura da una piccula squadra.

Inoltre, i seguenti cose seranu belli, ma ùn sò micca necessarii aghjuntu:

  • Tagging machines basatu annantu à e so capacità (per esempiu, tagging machines cù dischi veloci per servizii I/O pesanti).
  • Capacità di eseguisce servizii indipindentamente di l'orchestratore (per esempiu, durante u sviluppu).
  • Un locu cumunu per sparte cunfigurazioni è sicreti.
  • Endpoint per metriche è logs.

Perchè Kubernetes ùn hè micca ghjustu per noi

Cume avemu prototipatu cù Kubernetes, avemu nutatu chì avemu aghjustatu strati sempre più cumplessi di logica chì avemu basatu assai.

Per esempiu, Kubernetes supporta cunfigurazioni di serviziu integrate via ConfigMaps. Pudete rapidamente cunfundite, soprattuttu quandu unisce parechji schedarii di cunfigurazione o aghjunghje servizii supplementari à un pod. Kubernetes (o aiutu in questu casu) permette di implementà dinamicamente cunfigurazioni esterne per separà e preoccupazioni. Ma questu risultatu in un accoppiamentu strettu è oculatu trà u vostru prughjettu è Kubernetes. Tuttavia, Helm è ConfigMaps sò opzioni supplementari, perchè ùn avete micca aduprà. Pudete simpricimenti cupià a cunfigurazione in l'imagine Docker. In ogni casu, hè tentatore di andà in questa strada è di custruisce astrazioni innecessarii chì pudete dispiace più tardi.

Inoltre, l'ecosistema Kubernetes hè in evoluzione rapida. Ci vole assai tempu è energia per stà infurmatu cù e migliori pratiche è l'ultimi strumenti. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - a lista cuntinueghja. Ùn sò micca tutti questi arnesi sò necessarii quandu avete principiatu, ma ùn sapete micca ciò chì avete bisognu, perchè avete bisognu di tuttu. Per quessa, a curva di apprendimentu hè abbastanza ripida.

Quandu aduprà Kubernetes

In a nostra cumpagnia, assai persone utilizanu Kubernetes è sò abbastanza cuntenti. Questi casi sò gestiti da Google o Amazon, chì anu e risorse per sustene.

Kubernetes vene cun caratteristiche maravigghiusu, chì rende l'orchestrazione di cuntainer à scala più gestibile:

  • Detailed gestione di diritti.
  • Controllers persunalizati aghjunghje logica à u cluster. Quessi sò solu prugrammi chì parlanu à l'API Kubernetes.
  • Autoscaling! Kubernetes pò scala i servizii nantu à a dumanda utilizendu metriche di serviziu è senza avè bisognu di intervenzione manuale.

A quistione hè s'ellu avete veramente bisognu di tutte queste caratteristiche. Ùn pudete micca solu cunfidendu l'astrazioni; vi tuccherà à sapè ciò chì passa sottu à u cappucciu.

U nostru squadra furnisce a maiò parte di i servizii remotamente (per via di a stretta cunnessione à l'infrastruttura principale), per quessa, ùn vulemu suscitarà u nostru propiu cluster Kubernetes. Vulemu solu furnisce servizii.

Batterie micca incluse

Nomad hè 20% di l'orchestrazione chì furnisce 80% di ciò chì hè necessariu. Tuttu ciò chì face hè di gestisce e implementazioni. Nomad si occupa di implementazioni, riavvia i cuntenituri in casu d'errori... è basta.

U puntu tutale di Nomad hè ciò chì faci minimu: senza gestione di diritti granulari o pulitiche di rete estese, questu hè apposta cuncepitu. Questi cumpunenti sò furniti esternamente o micca in tuttu.

Pensu chì Nomad hà truvatu u cumprumissu perfettu trà facilità d'usu è utilità. Hè bonu per i servizii chjuchi è indipendenti. Sè avete bisognu di più cuntrollu, vi tuccherà à elevà elli stessi o aduprà un approcciu differente. Nomad hè solu orchestratore.

U megliu di Nomad hè chì hè faciule a sustituiri. Ùn ci hè praticamenti micca cunnessione cù u venditore, postu chì e so funzioni sò facilmente integrate in qualsiasi altru sistema chì gestisce i servizii. Funziona solu cum'è un binariu regulare in ogni macchina in u cluster, hè tuttu!

Ecosistema nomadi di cumpunenti pocu accoppiati

A vera forza di Nomad hè u so ecosistema. Si integra assai bè cù altri prudutti - cumplettamente opzionali - cum'è Cònzulu (magazzinu chjave-valore) o Vault (secreti di trasfurmazioni). Dentru u schedariu Nomad ci sò sezzioni per estrazione di dati da sti servizii:

template {
  data = <<EOH
LOG_LEVEL="{{key "service/geo-api/log-verbosity"}}"
API_KEY="{{with secret "secret/geo-api-key"}}{{.Data.value}}{{end}}"
EOH

  destination = "secrets/file.env"
  env         = true
}

Quì avemu leghje a chjave service/geo-api/log-verbosity da u Cunsul è mentre travagliendu l'espunemu à una variabile di l'ambiente LOG_LEVEL. Avemu prisentatu ancu a chjave secret/geo-api-key da Vault cum'è API_KEY. Semplice ma putente!

Per via di a so simplicità, Nomad hè facilmente extensibile cù altri servizii via API. Per esempiu, i tags per i travaglii sò supportati. Etichemu tutti i servizii cù metriche trv-metrics. Questu modu Prometheus pò facilmente truvà questi servizii via Consul è verificate periodicamente l'endpoint /metrics per novi dati. U listessu pò esse fattu, per esempiu, per logs, usendu Loki.

Ci sò parechji altri esempi di extensibilità:

  • Eseguite un travagliu Jenkins utilizendu un ganciu, è u Cunsul monitoreghja a redistribuzione di u travagliu Nomad quandu a cunfigurazione di u serviziu cambia.
  • Ceph aghjusta un sistema di fugliale distribuitu à Nomad.
  • Fabio per l'equilibriu di carica.

Tuttu chistu permette sviluppà organicamente l'infrastruttura senza alcuna cunnessione speciale cù u venditore.

Avvertimentu ghjustu

Nisun sistema hè perfettu. Ùn vi cunsigliu micca di introduci immediatamente e funzioni più recenti in a produzzione. Di sicuru, ci sò bugs è funzioni mancanti, ma u listessu vale per Kubernetes.

Comparatu à Kubernetes, a cumunità Nomad ùn hè micca cusì grande. Kubernetes hà digià circa 75 000 commits è 2000 14 contributori, mentri Nomad hà circa 000 300 commits è XNUMX contributors. Nomad avarà difficultà à mantene a velocità di Kubernetes, ma forse ùn hà micca bisognu! Hè un sistema più specializatu, è a cumunità più chjuca significa ancu chì a vostra dumanda di pull hè più prubabile di esse nutata è accettata, cumparatu à Kubernetes.

Resumen

Bottom line: Ùn aduprate micca Kubernetes solu perchè tutti l'altri facenu. Evaluate i vostri bisogni cù cura è verificate quale strumentu hè più benefiziu.

Se pensa à implementà una tonna di servizii omogenei in una infrastruttura di grande scala, allora Kubernetes hè una bona opzione. Basta à esse cuscenti di a cumplessità aghjuntu è i costi operativi. Certi costi ponu esse evitati usendu un ambiente Kubernetes amministratu cum'è Google Kubernetes Engine o Amazon EKS.

Sè vo circate solu un orchestratore affidabile chì hè faciule da mantene è estensibile, perchè ùn pruvà Nomad ? Puderete esse sorpresu di quantu vi purterà questu.

Se Kubernetes hè paragunatu à una vittura, Nomad seria un scooter. Certe volte avete bisognu di una cosa è qualchì volta avete bisognu di un altru. Tutti dui anu u dirittu di esiste.

Source: www.habr.com

Add a comment