Možno nebudete potrebovať Kubernetes

Možno nebudete potrebovať Kubernetes
Dievča na kolobežke. Ilustračné Freepik, logo Nomad od Spoločnosť Hashi Corp

Kubernetes je 300-librová gorila kontajnerovej orchestrácie. Funguje v niektorých z najväčších kontajnerových systémov na svete, ale je drahý.

Zvlášť drahé pre menšie tímy, ktoré si budú vyžadovať veľa času podpory a strmú krivku učenia. Pre náš štvorčlenný tím je to príliš veľa. Tak sme začali hľadať alternatívy – a zamilovali sme sa nomád.

Čo chceš

Náš tím podporuje množstvo bežných služieb na monitorovanie a analýzu výkonu: koncové body API pre metriky napísané v Go, exporty Prometheus, analyzátory protokolov, ako sú Logstash a Glum, ako aj databázy ako InfluxDB alebo Elasticsearch. Každá z týchto služieb beží vo svojom vlastnom kontajneri. Potrebujeme jednoduchý systém, aby to všetko fungovalo.

Začali sme so zoznamom požiadaviek na orchestráciu kontajnerov:

  • Spustenie súboru služieb na mnohých počítačoch.
  • Prehľad bežiacich služieb.
  • Prepojenia medzi službami.
  • Automatický reštart v prípade výpadku služby.
  • Údržba infraštruktúry malým tímom.

Okrem toho budú pekné, ale nevyžadované doplnky:

  • Označovanie strojov na základe ich schopností (napríklad označovanie strojov rýchlymi diskami pre ťažké I/O služby).
  • Schopnosť spúšťať služby nezávisle od orchestrátora (napríklad počas vývoja).
  • Spoločné miesto na zdieľanie konfigurácií a tajomstiev.
  • Koncový bod pre metriky a denníky.

Prečo Kubernetes nie je pre nás to pravé

Pri prototypovaní s Kubernetes sme si všimli, že pridávame čoraz zložitejšie vrstvy logiky, na ktoré sme sa veľmi spoliehali.

Napríklad Kubernetes podporuje konfigurácie vstavaných služieb cez ConfigMaps. Môžete sa rýchlo zmiasť, najmä pri spájaní viacerých konfiguračných súborov alebo pridávaní ďalších služieb do modulu. Kubernetes (alebo kormidlo v tomto prípade) vám umožňuje dynamicky implementovať externé konfigurácie na oddelenie záujmov. Výsledkom je však tesné a skryté prepojenie medzi vaším projektom a Kubernetes. Helm a ConfigMaps sú však doplnkové možnosti, takže ich nemusíte používať. Konfiguráciu môžete jednoducho skopírovať do obrazu Docker. Je však lákavé ísť touto cestou a budovať zbytočné abstrakcie, ktoré môžete neskôr ľutovať.

Okrem toho sa ekosystém Kubernetes rýchlo vyvíja. Zostať v obraze s osvedčenými postupmi a najnovšími nástrojmi si vyžaduje veľa času a energie. Kubectl, minikube, kubeadm, kormidlo, kultivátor, kops, oc - zoznam by mohol pokračovať ďalej a ďalej. Nie všetky tieto nástroje sú potrebné, keď začínate, ale neviete, čo budete potrebovať, takže si musíte byť vedomí všetkého. Z tohto dôvodu je krivka učenia pomerne strmá.

Kedy použiť Kubernetes

V našej spoločnosti veľa ľudí používa Kubernetes a sú s ním celkom spokojní. Tieto inštancie spravuje Google alebo Amazon, ktorí majú zdroje na ich podporu.

Kubernetes prichádza s úžasné vlastnosti, vďaka ktorým je orchestrácia kontajnerov vo veľkom rozsahu spravovateľnejšia:

Otázkou je, či všetky tieto funkcie naozaj potrebujete. Nemôžete sa spoliehať len na abstrakcie; budete musieť zistiť, čo sa deje pod kapotou.

Náš tím poskytuje väčšinu služieb na diaľku (kvôli úzkemu napojeniu na hlavnú infraštruktúru), preto sme nechceli budovať vlastný klaster Kubernetes. Chceli sme len poskytovať služby.

Batérie nie sú súčasťou dodávky

Nomad je 20% orchestrácie, ktorá poskytuje 80% toho, čo je potrebné. Všetko, čo robí, je správa nasadení. Nomad sa postará o nasadenie, reštartuje kontajnery v prípade chýb... a je to.

Celý zmysel Nomad je v tom, čo robí minimum: žiadna podrobná správa práv resp rozšírené sieťové politiky, toto je špeciálne navrhnuté. Tieto komponenty sú poskytované externe alebo nie sú poskytované vôbec.

Myslím si, že Nomad našiel dokonalý kompromis medzi jednoduchosťou použitia a užitočnosťou. Je to dobré pre malé, nezávislé služby. Ak potrebujete väčšiu kontrolu, budete ich musieť zvýšiť sami alebo použiť iný prístup. Nomád je proste orchestrátor.

Najlepšie na Nomade je, že je to jednoduché nahradiť. Neexistuje prakticky žiadne spojenie s predajcom, pretože jeho funkcie sú ľahko integrované do akéhokoľvek iného systému, ktorý riadi služby. Na každom počítači v klastri beží ako bežný binárny súbor, to je všetko!

Nomádsky ekosystém voľne prepojených komponentov

Skutočnou silou Nomada je jeho ekosystém. Veľmi dobre sa integruje s inými - úplne voliteľnými - produktmi ako napr konzul (obchod párov kľúč-hodnota) príp Klenba (spracovanie tajomstiev). Vo vnútri súboru Nomad sú sekcie na extrahovanie údajov z týchto služieb:

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
}

Tu čítame kľúč service/geo-api/log-verbosity od konzula a pri práci ho vystavujeme premennej prostredia LOG_LEVEL. Uvádzame aj kľúč secret/geo-api-key z Vault as API_KEY. Jednoduché, ale silné!

Nomad je vďaka svojej jednoduchosti ľahko rozšíriteľný o ďalšie služby cez API. Podporované sú napríklad značky pre úlohy. Všetky služby označujeme metrikami trv-metrics. Týmto spôsobom môže Prometheus ľahko nájsť tieto služby cez Consul a pravidelne kontrolovať koncový bod /metrics pre nové údaje. To isté sa dá urobiť napríklad pre guľatinu pomocou Loki.

Existuje mnoho ďalších príkladov rozšíriteľnosti:

  • Spustite úlohu Jenkins pomocou háku a Consul monitoruje opätovné nasadenie úlohy Nomad, keď sa zmení konfigurácia služby.
  • Ceph pridáva do Nomad distribuovaný súborový systém.
  • fabio pre vyrovnávanie záťaže.

Toto všetko umožňuje organicky rozvíjať infraštruktúru bez špeciálneho spojenia s predajcom.

Spravodlivé varovanie

Žiadny systém nie je dokonalý. Neodporúčam okamžite zavádzať najnovšie funkcie do výroby. Samozrejme existujú chyby a chýbajúce funkcie, ale to isté platí pre Kubernetes.

V porovnaní s Kubernetes komunita Nomad nie je taká veľká. Kubernetes má už asi 75 000 commitov a 2000 14 prispievateľov, zatiaľ čo Nomad má asi 000 300 commitov a XNUMX prispievateľov. Nomad bude mať problém držať krok s rýchlosťou Kubernetes, ale možno ani nemusí! Je to špecializovanejší systém a menšia komunita tiež znamená, že vaša žiadosť o stiahnutie si v porovnaní s Kubernetes s väčšou pravdepodobnosťou všimne a prijme.

Zhrnutie

Zrátané a podčiarknuté: Nepoužívajte Kubernetes len preto, že to robia všetci ostatní. Dôkladne zhodnoťte svoje požiadavky a skontrolujte, ktorý nástroj je výhodnejší.

Ak plánujete nasadiť množstvo homogénnych služieb na rozsiahlej infraštruktúre, potom je Kubernetes dobrou voľbou. Stačí si uvedomiť pridanú zložitosť a prevádzkové náklady. Niektorým nákladom sa dá vyhnúť používaním spravovaného prostredia Kubernetes ako napr Google Kubernetes Engine alebo Amazon EKS.

Ak len hľadáte spoľahlivý orchestrátor, ktorý sa ľahko udržiava a je rozšíriteľný, prečo neskúsiť Nomad? Možno budete prekvapení, ako ďaleko vás to zavedie.

Ak sa Kubernetes porovná s autom, Nomad by bol skúter. Niekedy potrebujete jednu vec a niekedy potrebujete inú. Obaja majú právo na existenciu.

Zdroj: hab.com

Pridať komentár