Možda vam Kubernetes nije potreban

Možda vam Kubernetes nije potreban
Djevojka na skuteru. Ilustracija freepik, logo Nomad od HashiCorp

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 Nomad.

Š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 Gollum, 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 ConfigMaps. Možete se brzo zbuniti, osobito prilikom spajanja više datoteka konfiguracije ili dodavanja dodatnih usluga u pod. Kubernetes (ili helm 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 zapanjujućim funkcijama, koje čine upravljanje velikim orkestriranjem kontejnera lakšim:

Pitanje je, trebaju li vam doista sve te funkcije. Ne možete se osloniti samo na apstrakcije; morat ćete saznati što se događa ispod haube.

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 proširenih mrežnih pravila, 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 Consul (skladište ključeva i vrijednosti) ili Vault (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: Loki.

Pokretanje Jenkins zadatka putem hook-a, dok Consul prati ponovni deploy zadatka Nomad-a prilikom promjena u konfiguraciji usluge.

organsko razvijanje infrastrukture bez posebne vezanosti za dobavljače. 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 Google Kubernetes Engine ili Amazon EKS.

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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster