Možná nebudete potřebovat Kubernetes

Možná nebudete potřebovat Kubernetes
Dívka na skútru. Ilustrace Freepik, logo Nomad od Společnost Hashi Corp

Kubernetes je 300librová gorila orchestrace kontejnerů. Funguje v některých z největších kontejnerových systémů na světě, ale je drahý.

Obzvláště drahé pro menší týmy, které budou vyžadovat hodně času na podporu a strmou křivku učení. To je pro náš čtyřčlenný tým příliš mnoho. Začali jsme tedy hledat alternativy – a zamilovali jsme se Nomád.

Co chceš

Náš tým podporuje řadu běžných služeb monitorování a analýzy výkonu: koncové body API pro metriky napsané v Go, exporty Prometheus, analyzátory protokolů, jako je Logstash a Gollum, stejně jako databáze jako InfluxDB nebo Elasticsearch. Každá z těchto služeb běží ve svém vlastním kontejneru. Aby vše fungovalo, potřebujeme jednoduchý systém.

Začali jsme se seznamem požadavků na orchestraci kontejnerů:

  • Spuštění sady služeb na mnoha strojích.
  • Přehled běžících služeb.
  • Vazby mezi službami.
  • Automatický restart v případě výpadku služby.
  • Údržba infrastruktury malým týmem.

Kromě toho budou následující věci pěkné, ale nevyžadované doplňky:

  • Označování strojů na základě jejich schopností (například označování strojů rychlými disky pro těžké I/O služby).
  • Schopnost spouštět služby nezávisle na orchestrátoru (například během vývoje).
  • Společné místo pro sdílení konfigurací a tajemství.
  • Koncový bod pro metriky a protokoly.

Proč pro nás Kubernetes není to pravé

Když jsme prototypovali s Kubernetes, všimli jsme si, že přidáváme stále složitější vrstvy logiky, na které jsme hodně spoléhali.

Například Kubernetes podporuje vestavěné konfigurace služeb prostřednictvím ConfigMaps. Můžete se rychle zmást, zejména při slučování více konfiguračních souborů nebo přidávání dalších služeb do modulu. Kubernetes (příp kormidlo v tomto případě) umožňuje dynamicky implementovat externí konfigurace k oddělení zájmů. To však vede k těsnému, skrytému propojení mezi vaším projektem a Kubernetes. Helm a ConfigMaps jsou však další možnosti, takže je nemusíte používat. Konfiguraci můžete jednoduše zkopírovat do obrazu Dockeru. Je však lákavé jít touto cestou a budovat zbytečné abstrakce, kterých budete později litovat.

Ekosystém Kubernetes se navíc rychle vyvíjí. Zůstat aktuální s osvědčenými postupy a nejnovějšími nástroji vyžaduje spoustu času a energie. Kubectl, minikube, kubeadm, kormidlo, kultivátor, kops, oc - seznam by mohl pokračovat dál a dál. Ne všechny tyto nástroje jsou potřeba, když začínáte, ale nevíte, co budete potřebovat, takže si musíte být vědomi všeho. Z tohoto důvodu je křivka učení poměrně strmá.

Kdy použít Kubernetes

V naší společnosti používá Kubernetes mnoho lidí a jsou s ním docela spokojeni. Tyto instance jsou spravovány společností Google nebo Amazon, které mají prostředky na jejich podporu.

Kubernetes přichází s úžasné vlastnosti, díky nimž je orchestrace kontejnerů v měřítku lépe spravovatelná:

Otázkou je, zda všechny tyto funkce skutečně potřebujete. Nelze spoléhat jen na abstrakce; budete muset zjistit, co se děje pod kapotou.

Náš tým poskytuje většinu služeb vzdáleně (kvůli úzkému napojení na hlavní infrastrukturu), takže jsme nechtěli budovat vlastní cluster Kubernetes. Chtěli jsme jen poskytovat služby.

Baterie nejsou součástí dodávky

Nomad je 20 % orchestrace, která poskytuje 80 % toho, co je potřeba. Jediné, co dělá, je správa nasazení. Nomad se postará o nasazení, v případě chyb restartuje kontejnery... a je to.

Celý smysl Nomad je v tom, co dělá minimum: žádná podrobná správa práv popř rozšířené síťové zásady, toto je speciálně navrženo. Tyto komponenty jsou poskytovány externě nebo nejsou poskytovány vůbec.

Myslím, že Nomad našel dokonalý kompromis mezi snadností použití a užitečností. Je to dobré pro malé, nezávislé služby. Pokud potřebujete větší kontrolu, budete je muset zvýšit sami nebo použít jiný přístup. Nomád je jenom orchestrátor.

Nejlepší na Nomad je, že je to snadné vyměnit. Neexistuje prakticky žádné spojení s dodavatelem, protože jeho funkce jsou snadno integrovatelné do jakéhokoli jiného systému, který spravuje služby. Prostě běží jako běžný binární soubor na každém počítači v clusteru, to je vše!

Nomádský ekosystém volně spojených složek

Skutečnou silou Nomada je jeho ekosystém. Velmi dobře se integruje s jinými - zcela volitelnými - produkty jako např Konzul (úložiště párů klíč-hodnota) popř Klenba (zpracování tajemství). Uvnitř souboru Nomad jsou sekce pro extrahování dat z těchto služeb:

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
}

Zde čteme klíč service/geo-api/log-verbosity od Consul a při práci jej vystavujeme proměnné prostředí LOG_LEVEL. Uvádíme také klíč secret/geo-api-key z Vault as API_KEY. Jednoduché, ale výkonné!

Nomad je díky své jednoduchosti snadno rozšiřitelný o další služby prostřednictvím API. Podporovány jsou například značky pro úkoly. Všechny služby označujeme metrikami trv-metrics. Tímto způsobem může Prometheus snadno najít tyto služby prostřednictvím Consul a pravidelně kontrolovat koncový bod /metrics pro nová data. Totéž lze provést např. u log, pomocí Loki.

Existuje mnoho dalších příkladů rozšiřitelnosti:

  • Spusťte úlohu Jenkins pomocí háku a Consul monitoruje opětovné nasazení úlohy Nomad, když se změní konfigurace služby.
  • Ceph přidává do Nomad distribuovaný souborový systém.
  • fabio pro vyvažování zátěže.

To vše umožňuje organicky rozvíjet infrastrukturu bez zvláštního spojení s dodavatelem.

Spravedlivé varování

Žádný systém není dokonalý. Nedoporučuji okamžitě zavádět nejnovější funkce do výroby. Samozřejmě existují chyby a chybějící funkce, ale totéž platí pro Kubernetes.

Ve srovnání s Kubernetes není komunita Nomad tak velká. Kubernetes má již asi 75 000 commitů a 2000 14 přispěvatelů, zatímco Nomad má asi 000 300 commitů a XNUMX přispěvatelů. Nomad bude mít problém držet krok s rychlostí Kubernetes, ale možná ani nemusí! Jedná se o specializovanější systém a menší komunita také znamená, že vaše žádost o stažení bude pravděpodobněji zaznamenána a přijata ve srovnání s Kubernetes.

Shrnutí

Sečteno a podtrženo: Nepoužívejte Kubernetes jen proto, že to dělají všichni ostatní. Pečlivě vyhodnoťte své požadavky a ověřte si, který nástroj je výhodnější.

Pokud plánujete nasadit spoustu homogenních služeb na rozsáhlé infrastruktuře, pak je Kubernetes dobrou volbou. Jen si uvědomte přidanou složitost a provozní náklady. Některým nákladům se lze vyhnout použitím spravovaného prostředí Kubernetes, jako je např Google Kubernetes Engine nebo Amazon EX.

Pokud jen hledáte spolehlivý orchestrátor, který se snadno udržuje a je rozšiřitelný, proč nezkusit Nomad? Možná budete překvapeni, jak daleko vás to zavede.

Pokud je Kubernetes přirovnán k autu, Nomad by byl skútr. Někdy potřebujete jednu věc a někdy potřebujete jinou. Oba mají právo na existenci.

Zdroj: www.habr.com

Přidat komentář