
Dievča na skútri. Ilustrácia , logo Nomad od
Kubernetes je 300-kilogramová gorila na orchesterovanie kontajnerov. Funguje v niektorých najväčších kontajnerových systémoch na svete, ale je nákladný.
Obzvlášť nákladný pre malé tímy, ktoré budú musieť stráviť veľa času na jeho údržbu a zložitú krivku učenia. Pre náš tím štyroch ľudí sú to príliš vysoké náklady. Preto sme začali hľadať alternatívy a zamilovali sme sa do .
Čo chceme
Náš tím podporuje množstvo typických služieb na monitorovanie a analýzu výkonu: API koncové body pre metriky napísané v Go, exporty Prometheus, analyzátory logov ako Logstash a , ako aj databázy ako InfluxDB alebo Elasticsearch. Každá z týchto služieb funguje v vlastnom kontajneri. Potrebujeme jednoduchý systém na udržanie všetkých týchto v prevádzke.
Začali sme zoznamom požiadaviek na orchesterovanie kontajnerov:
- Spustenie súboru služieb na viacerých strojoch.
- Prehľad spustených služieb.
- Väzby medzi službami.
- Automatické reštartovanie, ak služba zlyhá.
- Údržba infraštruktúry malým tímom.
Okrem toho budú nasledujúce veci príjemné, ale nie povinné doplnky:
- Označovanie strojov podľa ich schopností (napríklad označovanie strojov s rýchlymi diskami pre náročné služby I/O).
- Možnosť spúšťania služieb 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 logy.
Prečo nám Kubernetes nevyhovuje
Pri vytváraní prototypu s Kubernetes sme si všimli, že sme začali pridávať stále zložitejšie vrstvy logiky, na ktoré sme bezpodmienečne spoliehali.
Napríklad, Kubernetes podporuje vstavané konfigurácie služieb prostredníctvom . Môžete sa rýchlo zamotať, najmä pri zlúčení viacerých konfiguračných súborov alebo pri pridávaní ďalších služieb do podu. Kubernetes (alebo v tomto prípade) umožňuje implementovať dynamické externé konfigurácie pre rozdelenie záujmov. No to vedie k pevnej skrytej väzbe medzi vaším projektom a Kubernetes. Napriek tomu sú Helm a ConfigMaps len doplnkové možnosti, takže ich používanie nie je povinné. Môžete priamo skopírovať konfiguráciu do obrazu Docker. Napriek tomu je lákavé zvoliť túto cestu a vytvoriť zbytočné abstrakcie, ktorých budete neskôr ľutovať.
Okrem toho sa ekosystém Kubernetes rýchlo vyvíja. Vyžaduje si veľa času a energie, aby ste boli informovaní o osvedčených praktikách a najnovších nástrojoch. Kubectl, minikube, kubeadm, helm, tiller, kops, oc – zoznam pokračuje a pokračuje. Na začiatku práce nie sú potrebné všetky tieto nástroje, ale neviete, čo budete potrebovať, preto musíte byť oboznámení so všetkým. Z tohto dôvodu je krivka učenia dosť strmá.
Kedy používať Kubernetes
V našej spoločnosti veľa ľudí používa Kubernetes a sú s tým úplne spokojní. Tieto inštancie spravujú Google alebo Amazon, ktorí majú dostatočné zdroje na podporu.
Kubernetes prichádza s , ktoré robia rozsiahlu orchestráciu kontajnerov lepšie riaditeľnou:
- Detailné .
- pridávajú logiku do klastru. Tieto sú len programy, ktoré komunikujú s Kubernetes API.
- ! Kubernetes dokáže škálovať služby na požiadanie, využívajúc služobné metriky a bez potreby manuálneho zásahu.
Otázkou je, či naozaj potrebujete všetky tieto funkcie. Nemôžete sa len spoliehať na abstrakcie; .
Naša tím poskytuje väčšinu služieb na diaľku (kvôli tesnej väzbe na hlavnú infraštruktúru), takže sme nechceli zakladať vlastný klaster Kubernetes. Chceli sme iba poskytovať služby.
Batérie nie sú súčasťou balenia
Nomad je 20% orchestrácie, ktoré dajú 80% potrebného. Všetko, čo robí, je správa nasadení. Nomad sa stará o nasadenia, reštartuje kontajnery v prípade chýb… a to je všetko.
Celý zmysel Nomadu spočíva v tom, čo robí minimum: žiadne detailné riadenie práv ani , presne takto bolo zamýšľané. Tieto komponenty sa poskytujú zvonku alebo sa vôbec neposkytujú.
Myslím, že Nomad našiel dokonalý kompromis medzi jednoduchosťou použitia a užitočnosťou. Je skvelý pre malé, nezávislé služby. Ak potrebujete viac kontroly, budete si ich musieť nasadiť samostatne alebo použiť iný prístup. Nomad je jednoduchý orkestátor.
To najlepšie na Nomade je, že je ľahko nahraditeľný. Takmer neexistuje viazanosť na dodávateľa, pretože jeho funkcie sa dajú ľahko integrovať do akéhokoľvek iného systému správy služieb. Funguje jednoducho ako bežný binárny súbor na každom stroji v klastru, a to je všetko!
Ekosystém Nomadu pozostáva z voľne prepojených komponentov.
Skutočná sila Nomadu spočíva v jeho ekosystéme. Veľmi dobre sa integruje s inými — úplne voliteľnými — produktmi, ako sú (úložisko kľúč-hodnota) alebo (správa tajomstiev). Vnútri súboru Nomad sú sekcie na získavanie ú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 z Consulu a za behu ho predstavujeme ako premennú prostredia LOG_LEVEL. Taktiež predstavujeme kľúč secret/geo-api-key z Vault ako API_KEY. Jednoduché, ale mocné!
Vďaka svojej jednoduchosti je Nomad ľahko rozšíriteľný pomocou iných služieb cez API. Napríklad podporuje značky pre úlohy. Označujeme všetky služby s metrikami značkou trv-metrics. Takto ich Prometheus ľahko nájde cez Consul a pravidelne kontroluje koncovú adresu /metrics na nové údaje. Rovnako sa to dá urobiť napríklad pre logy pomocou .
Existuje mnoho ďalších príkladov rozšíriteľnosti:
- Spustenie úlohy Jenkins cez webhook, zatiaľ čo Consul sleduje opätovné nasadenie úlohy Nomad pri zmenách konfigurácie služby.
- Ceph pridáva do Nomadu distribuovaný súborový systém.
- pre zaťažovanie.
To všetko umožňuje bez významnej viazanosti na dodávateľa.
Úprimné varovanie
Žiadny systém nie je dokonalý. Neodporúčam okamžite zavádzať najnovšie funkcie do produkcie. Samozrejme, že sú prítomné chyby a chýbajúce funkcie, ale to isté platí aj pre Kubernetes.
V porovnaní s Kubernetes nie je komunita Nomad taká veľká. Kubernetes má už okolo 75 000 commitov a 2000 prispievateľov, zatiaľ čo Nomad má približne 14 000 commitov a 300 prispievateľov. Nomad bude ťažké udržať krok a nestíhať s Kubernetes, ale možno to ani nie je potrebné! Je to viac špecializovaný systém a menšia komunita tiež znamená, že váš pull request si pravdepodobne rýchlejšie všimnú a prijmú v porovnaní s Kubernetes.
Zhrnutie
Záver: nepoužívajte Kubernetes len preto, že to robia všetci ostatní. Dôkladne vyhodnoťte svoje požiadavky a zistite, ktorý nástroj je výhodnejší.
Ak plánujete nasadiť masy homogénnych služieb na rozsiahlej infraštruktúre, Kubernetes je dobrá voľba. Len nezabúdajte na dodatočnú zložitost a náklady na prevádzku. Niektorým nákladom sa môžete vyhnúť, ak použijete spravované prostredie Kubernetes, ako je alebo .
Ak hľadáte len spoľahlivého orchestrátora, ktorý je jednoduchý na údržbu a rozšíriteľný, prečo neskúsiť Nomad? Možno budete prekvapení, ako ďaleko vás to zavedie.
Ak porovnáte Kubernetes s autom, Nomad bude skúter. Niekedy potrebujete jedno, inokedy to druhé. Obe majú právo na existenciu.
Zdroj: habr.com
