Morda ne potrebujete Kubernetesa

Morda ne potrebujete Kubernetesa
Dekle na skuterju. Ilustracija Freepik, logotip Nomad iz Hashi Corp

Kubernetes je 300-kilogramska gorila orkestracije zabojnikov. Deluje v nekaterih največjih kontejnerskih sistemih na svetu, vendar je drago.

Še posebej drago za manjše ekipe, ki bodo zahtevale veliko časa za podporo in strmo krivuljo učenja. To je preveč za našo štiričlansko ekipo. Tako sva začela iskati alternative – in se zaljubila vanje Nomad.

Kaj hočeš

Naša ekipa podpira številne pogoste storitve spremljanja in analize delovanja: končne točke API-ja za meritve, napisane v Go, izvoze Prometheus, razčlenjevalnike dnevnikov, kot sta Logstash in Gollum, kot tudi baze podatkov, kot sta InfluxDB ali Elasticsearch. Vsaka od teh storitev deluje v svojem vsebniku. Potrebujemo preprost sistem, da bo vse delovalo.

Začeli smo s seznamom zahtev za orkestracijo vsebnika:

  • Izvajanje niza storitev na številnih strojih.
  • Pregled delujočih storitev.
  • Povezave med storitvami.
  • Samodejni ponovni zagon, če storitev preneha delovati.
  • Vzdrževanje infrastrukture z majhno ekipo.

Poleg tega bodo naslednje stvari lepe, vendar niso obvezni dodatki:

  • Označevanje strojev na podlagi njihovih zmogljivosti (na primer označevanje strojev s hitrimi diski za težke V/I storitve).
  • Sposobnost izvajanja storitev neodvisno od orkestratorja (na primer med razvojem).
  • Skupno mesto za skupno rabo konfiguracij in skrivnosti.
  • Končna točka za meritve in dnevnike.

Zakaj Kubernetes ni pravi za nas

Ko smo izdelovali prototip s Kubernetesom, smo opazili, da dodajamo vedno bolj zapletene plasti logike, na katere smo se močno zanašali.

Na primer, Kubernetes podpira vgrajene konfiguracije storitev prek ConfigMaps. Hitro se lahko zmedete, zlasti pri združevanju več konfiguracijskih datotek ali dodajanju dodatnih storitev v pod. Kubernetes (oz helm v tem primeru) vam omogoča dinamično implementacijo zunanjih konfiguracij za ločevanje zadev. Toda rezultat tega je tesna, skrita povezava med vašim projektom in Kubernetesom. Vendar sta Helm in ConfigMaps dodatni možnosti, zato vam ju ni treba uporabljati. Konfiguracijo lahko preprosto kopirate v sliko Docker. Vendar pa je skušnjava iti po tej poti in graditi nepotrebne abstrakcije, ki jih lahko kasneje obžalujete.

Poleg tega se ekosistem Kubernetes hitro razvija. Da ostanemo na tekočem z najboljšimi praksami in najnovejšimi orodji, potrebujemo veliko časa in energije. Kubectl, minikube, kubeadm, krmilo, krmilo, kops, oc - seznam se lahko nadaljuje. Ko začnete, niso potrebna vsa ta orodja, vendar ne veste, kaj boste potrebovali, zato se morate zavedati vsega. Zaradi tega je krivulja učenja precej strma.

Kdaj uporabiti Kubernetes

V našem podjetju veliko ljudi uporablja Kubernetes in so z njim zelo zadovoljni. Te primere upravljata Google ali Amazon, ki imata vire za njihovo podporo.

Kubernetes prihaja z neverjetne lastnosti, zaradi česar je orkestracija vsebnika v obsegu bolj obvladljiva:

Vprašanje je, ali res potrebujete vse te funkcije. Ne morete se zanašati le na abstrakcije; boste morali ugotoviti, kaj se dogaja pod pokrovom.

Naša ekipa večino storitev zagotavlja na daljavo (zaradi tesne povezave z glavno infrastrukturo), zato nismo želeli dvigniti lastnega grozda Kubernetes. Želeli smo samo zagotavljati storitve.

Baterije niso vključene

Nomad je 20 % orkestracije, ki zagotavlja 80 % potrebnega. Vse, kar počne, je upravljanje uvajanj. Nomad poskrbi za uvedbe, ponovno zažene kontejnerje v primeru napak ... in to je to.

Bistvo Nomada je v tem, kaj počne najnižja: brez granularnega upravljanja pravic oz razširjene omrežne politike, to je posebej zasnovano. Te komponente so na voljo zunaj ali pa sploh niso.

Mislim, da je Nomad našel popoln kompromis med enostavnostjo uporabe in uporabnostjo. Dobro je za majhne, ​​neodvisne storitve. Če potrebujete več nadzora, jih boste morali vzgojiti sami ali uporabiti drugačen pristop. Nomad je samo orkestrator.

Najboljša stvar pri Nomadu je, da je enostaven zamenjati. Povezave s prodajalcem praktično ni, saj se njegove funkcije zlahka integrirajo v kateri koli drug sistem, ki upravlja storitve. Preprosto teče kot običajna dvojiška datoteka na vsakem računalniku v gruči, to je vse!

Nomadski ekosistem ohlapno povezanih komponent

Resnična moč Nomada je njegov ekosistem. Zelo dobro se integrira z drugimi - popolnoma neobveznimi - izdelki, kot je npr Konzul (key-value store) oz Vault (skrivnosti obdelave). Znotraj datoteke Nomad so razdelki za pridobivanje podatkov iz teh storitev:

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
}

Tukaj beremo ključ service/geo-api/log-verbosity od Consul in med delom ga izpostavimo spremenljivki okolja LOG_LEVEL. Predstavljamo tudi ključ secret/geo-api-key iz trezorja kot API_KEY. Enostavno, a močno!

Zaradi svoje preprostosti je Nomad enostavno razširljiv z drugimi storitvami prek API-ja. Podprte so na primer oznake za opravila. Vse storitve označimo z metrikami trv-metrics. Na ta način lahko Prometheus enostavno najde te storitve prek Consula in občasno preveri končno točko /metrics za nove podatke. Enako lahko storite na primer za hlode z uporabo Loki.

Obstaja veliko drugih primerov razširljivosti:

  • Zaženite opravilo Jenkins s pomočjo kaveljca in Consul spremlja ponovno razporeditev opravila Nomad, ko se spremeni konfiguracija storitve.
  • Ceph Nomadu doda porazdeljen datotečni sistem.
  • Fabio za uravnoteženje obremenitve.

Vse to omogoča organsko razvijati infrastrukturo brez posebne povezave s prodajalcem.

Pošteno opozorilo

Noben sistem ni popoln. Ne priporočam takojšnje uvedbe najnovejših funkcij v proizvodnjo. Seveda obstajajo napake in manjkajoče funkcije, vendar enako velja za Kubernetes.

V primerjavi s Kubernetesom skupnost Nomad ni tako velika. Kubernetes ima že približno 75 objav in 000 sodelavcev, medtem ko ima Nomad približno 2000 objav in 14 sodelavcev. Nomad bo težko sledil hitrosti Kubernetesa, a morda ni treba! Gre za bolj specializiran sistem in manjša skupnost pomeni tudi, da je bolj verjetno, da bo vaša zahteva za vlečenje opažena in sprejeta v primerjavi s Kubernetesom.

Povzetek

Bistvo: ne uporabljajte Kubernetesa samo zato, ker to počnejo vsi drugi. Natančno ocenite svoje zahteve in preverite, katero orodje je bolj koristno.

Če nameravate razmestiti tono homogenih storitev na obsežni infrastrukturi, potem je Kubernetes dobra možnost. Zavedajte se le dodatne zapletenosti in operativnih stroškov. Nekaterim stroškom se je mogoče izogniti z uporabo upravljanega okolja Kubernetes, kot je npr Google Kubernetes Engine ali Amazon EKS.

Če samo iščete zanesljiv orkestrator, ki ga je enostavno vzdrževati in ga je mogoče razširiti, zakaj ne bi preizkusili Nomada? Morda boste presenečeni, kako daleč vas bo to pripeljalo.

Če Kubernetes primerjamo z avtomobilom, bi bil Nomad skuter. Včasih potrebujete eno, včasih pa drugo. Oba imata pravico do obstoja.

Vir: www.habr.com

Dodaj komentar