
Djevojka na skuteru. Ilustracija , logo Nomad od
Kubernetes je 300-kilogramska gorila za orkestraciju kontejnera. Radi u nekim od najvećih kontejnerskih sustava na svijetu, ali je skupa.
Osobito je skupa za male timove koji će morati uložiti puno vremena u podršku i strmu krivulju učenja. Za naš tim od četiri osobe, to su preveliki troškovi. Stoga smo počeli tražiti alternative – i zaljubili smo se u .
Što želimo
Naš tim podržava niz tipičnih usluga za praćenje i analizu performansi: API krajnje točke za metrike napisane u Go-u, Prometheus izvoz, parsere logova, kao što su Logstash i , kao i baze podataka poput InfluxDB ili Elasticsearch. Svaka od ovih usluga radi unutar svog kontejnera. Trebamo jednostavan sustav za održavanje svega ovoga u funkciji.
Počeli smo s popisom zahtjeva za orkestraciju kontejnera:
- Pokretanje seta usluga na više mašina.
- Pregled pokrenutih usluga.
- Veze između usluga.
- Automatsko ponovno pokretanje ako usluga padne.
- Održavanje infrastrukture malim timom.
Osim toga, sljedeće stvari će biti lijepi, ali neobavezni dodaci:
- Označavanje mašina prema njihovim mogućnostima (na primjer, označavanje mašina s brzim diskovima za teške I/O usluge).
- Mogućnost pokretanja usluga neovisno o orkestratoru (na primjer, tijekom razvoja).
- Zajedničko mjesto za dijeljenje konfiguracija i tajni.
- Krajnja točka za metrike i logove.
Zašto nam Kubernetes ne odgovara
Tokom izrade prototipa s Kubernetesom primijetili smo da smo počeli dodavati sve složenije slojeve logike na koje smo se bezrezervno oslanjali.
Na primjer, Kubernetes podržava ugrađene konfiguracije usluga putem . Možete se brzo zbuniti, osobito prilikom spajanja više datoteka konfiguracije ili dodavanja dodatnih usluga u pod. Kubernetes (ili U ovom slučaju, omogućuje dinamičko uvođenje vanjskih konfiguracija za odvajanje interesa. No, to dovodi do čvrste skrivenosti između vašeg projekta i Kubernetesa. Ipak, Helm i ConfigMaps su dodatne opcije, pa ih ne morate koristiti. Možete jednostavno kopirati konfiguraciju u Docker sliku. Ipak, mamljivo je krenuti tim putem i izgraditi nepotrebne apstrakcije, za što ćete možda kasnije zažaliti.
Uz to, ekosustav Kubernetesa se brzo razvija. Potrebno je puno vremena i truda da ostanete u toku s najboljim praksama i najnovijim alatima. Kubectl, minikube, kubeadm, helm, tiller, kops, oc — popis se nastavlja. U početku nisu potrebni svi ovi alati, ali ne znate što će vam trebati, pa morate biti u tijeku s svime. Zbog toga je krivulja učenja prilično strma.
Kada koristiti Kubernetes
U našoj tvrtki mnogi koriste Kubernetes i potpuno su zadovoljni. Ove instance upravlja Google ili Amazon, koji imaju dovoljno resursa za podršku.
Kubernetes dolazi s , koje čine upravljanje velikim orkestriranjem kontejnera lakšim:
- Detaljno .
- dodaju logiku u klaster. To su samo programi koji komuniciraju s Kubernetes API-jem.
- ! Kubernetes može skalirati usluge na zahtjev, koristeći metrike usluga i ne zahtijevajući ručnu intervenciju.
Pitanje je, trebaju li vam doista sve te funkcije. Ne možete se osloniti samo na apstrakcije; .
Naš tim pruža većinu usluga daljinski (zbog bliske povezanosti s osnovnom infrastrukturom), pa nismo željeli podizati vlastiti Kubernetes klaster. Htjeli smo jednostavno pružati usluge.
Baterije nisu uključene
Nomad je 20% orkestracije koja daje 80% onoga što je potrebno. Sve što radi je upravlja deploy-ima. Nomad se brine o deploy-ima, ponovno pokreće kontejnere u slučaju grešaka… i to je to.
Cjelokupna svrha Nomada je da radi minimumom: nema detaljnog upravljanja pravima ili , tako je posebno osmišljeno. Ove komponente pružaju se izvana ili se uopće ne pružaju.
Mislim da je Nomad pronašao savršenu ravnotežu između jednostavnosti korištenja i korisnosti. Dobar je za manje, neovisne servise. Ako trebate više kontrole, morat ćete ih pokrenuti sami ili koristiti drugi pristup. Nomad je samo orkestrator.
Najbolja stvar u Nomadu je to što je lako zamijeniti. Veza s dobavljačem je gotovo nepostojeća, jer se njegove funkcije lako integriraju u bilo koji drugi sustav koji upravlja uslugama. Radi jednostavno kao običan binarni program na svakom stroju u klasteru, to je to!
Ekosustav Nomada sastoji se od slabo povezanih komponenti.
Prava snaga Nomada leži u njegovom ekosustavu. Veoma dobro se integrira s drugim — potpuno opcionim — proizvodima, poput (skladište ključeva i vrijednosti) ili (obrada tajni). Unutar Nomad datoteke postoje odjeljci za vađenje podataka iz ovih servisa:
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
} Ovdje čitamo ključ service/geo-api/log-verbosity iz Consula i tijekom rada predstavljamo ga varijablom okruženja LOG_LEVEL. Također predstavljamo ključ secret/geo-api-key iz Vault-a kao API_KEY. Jednostavno, ali moćno!
Zbog svoje jednostavnosti Nomad se lako proširuje s drugim servisima putem API-ja. Na primjer, podržani su oznake za zadatke. Oznaku "trv-metrics" dodajemo svim uslugama koja imaju metriku. Na taj način, Prometheus lako pronalazi te usluge putem Consula i povremeno provjerava točku krajana nove podatke. Ista stvar se može učiniti, na primjer, za logove, koristeći /metrics Postoji mnogo drugih primjera proširivosti: .
Pokretanje Jenkins zadatka putem hook-a, dok Consul prati ponovni deploy zadatka Nomad-a prilikom promjena u konfiguraciji usluge.
- Ceph dodaje distribuirani datotečni sustav u Nomad.
- fabio
- Sve to omogućava
organsko razvijanje infrastrukture Pošteno upozorenje
Nijedan sustav nije savršen. Ne preporučujem odmah implementirati najnovije funkcije u produkciju. Naravno, postoje greške i nedostajuće funkcije, ali isto se odnosi i na Kubernetes.
Nijedna sustav nije savršen. Ne preporučujem odmah uvođenje najnovijih funkcija u produkciju. Naravno, postoje greške i nedostajući funkcije, ali isto vrijedi i za Kubernetes.
U usporedbi s Kubernetesom, zajednica Nomada nije tako velika. Kubernetes već ima oko 75 000 commitova i 2000 suradnika, dok Nomad ima oko 14 000 commitova i 300 suradnika. Bit će teško zadržati korak s Kubernetesom, no možda to i nije potrebno! To je specijaliziraniji sustav, a manja zajednica također znači da će vaš pull request vjerojatno biti primijećen i prihvaćen u usporedbi s Kubernetesom.
Sažetak
Zaključak: ne koristite Kubernetes samo zato što ga koristi svatko drugi. Pažljivo procijenite svoje zahtjeve i provjerite koji je alat isplativiji.
Ako planirate implementirati veliki broj homogeni usluga na velikoj infrastrukturi, Kubernetes je dobra opcija. Samo imajte na umu dodatnu složenost i operativne troškove. Neki troškovi se mogu izbjeći korištenjem upravljanog Kubernetes okruženja, poput ili .
Ako samo tražite pouzdani orkestrator koji je jednostavan za održavanje i proširiv, zašto ne probati Nomad? Možda ćete biti iznenađeni koliko daleko vas to može odvesti.
Ako usporedite Kubernetes s autom, Nomad bi bio skuter. Ponekad vam je potrebno jedno, a ponekad drugo. Obojica imaju pravo na postojanje.
Izvor: habr.com
