Možda vam neće trebati Kubernetes

Možda vam neće trebati Kubernetes
Djevojka na skuteru. Ilustracija Freepik, Nomad logo iz Hashi Corp

Kubernetes je gorila od 300 funti kontejnerske orkestracije. Radi u nekim od najvećih kontejnerskih sistema na svijetu, ali je skup.

Posebno skupo za manje timove, koji će zahtijevati dosta vremena za podršku i strmu krivulju učenja. Ovo su preveliki troškovi za naš četvoročlani tim. Tako smo počeli da tražimo alternative - i zaljubili se u njih nomad.

Šta želiš

Naš tim podržava brojne uobičajene usluge praćenja i analize performansi: API krajnje tačke za metriku napisanu u Go, izvoz Prometheus, parsere dnevnika kao što su Logstash i Gollum, kao i baze podataka kao što su InfluxDB ili Elasticsearch. Svaki od ovih servisa radi u svom kontejneru. Potreban nam je jednostavan sistem da sve to radi.

Počeli smo s listom zahtjeva za orkestraciju kontejnera:

  • Pokretanje skupa usluga na mnogim mašinama.
  • Pregled aktivnih usluga.
  • Veze između usluga.
  • Automatsko ponovno pokretanje ako usluga nestane.
  • Održavanje infrastrukture od strane malog tima.

Osim toga, sljedeće stvari će biti lijepe, ali ne i obavezne dodatke:

  • Mašine za označavanje na osnovu njihovih mogućnosti (na primjer, mašine za označavanje brzim diskovima za teške I/O usluge).
  • Sposobnost pokretanja usluga nezavisno od orkestratora (na primjer, tokom razvoja).
  • Zajedničko mjesto za dijeljenje konfiguracija i tajni.
  • Krajnja tačka za metriku i zapise.

Zašto Kubernetes nije pravi za nas

Dok smo pravili prototip pomoću Kubernetesa, primijetili smo da dodajemo sve složenije slojeve logike na koju smo se u velikoj mjeri oslanjali.

Na primjer, Kubernetes podržava ugrađene konfiguracije usluga putem ConfigMaps. Možete se brzo zbuniti, posebno kada spajate više konfiguracijskih datoteka ili dodajete dodatne usluge u pod. Kubernetes (ili kormilo u ovom slučaju) vam omogućava da dinamički implementirate eksterne konfiguracije za odvajanje briga. Ali ovo rezultira tijesnom, skrivenom spregom između vašeg projekta i Kubernetesa. Međutim, Helm i ConfigMaps su dodatne opcije, tako da ih ne morate koristiti. Možete jednostavno kopirati konfiguraciju u Docker sliku. Međutim, primamljivo je krenuti ovim putem i izgraditi nepotrebne apstrakcije zbog kojih ćete kasnije požaliti.

Osim toga, Kubernetes ekosistem se brzo razvija. Potrebno je puno vremena i energije da budete u toku s najboljim praksama i najnovijim alatima. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - lista se nastavlja i nastavlja. Nisu svi ovi alati potrebni kada počinjete, ali ne znate šta će vam trebati, tako da morate biti svjesni svega. Zbog toga je kriva učenja prilično strma.

Kada koristiti Kubernetes

U našoj kompaniji mnogi ljudi koriste Kubernetes i prilično su zadovoljni s njim. Ovim slučajevima upravlja Google ili Amazon, koji imaju resurse da ih podrže.

Kubernetes dolazi sa neverovatne karakteristike, koji orkestraciju kontejnera u skali čine lakšom za upravljanje:

Pitanje je da li su vam zaista potrebne sve ove karakteristike. Ne možete se osloniti samo na apstrakcije; moraćete da saznate šta se dešava ispod haube.

Naš tim pruža većinu usluga na daljinu (zbog bliske veze sa glavnom infrastrukturom), tako da nismo željeli podizati vlastiti Kubernetes klaster. Samo smo željeli pružiti usluge.

Baterije nisu uključene

Nomad je 20% orkestracije koja pruža 80% onoga što je potrebno. Sve što radi je upravljanje implementacijama. Nomad brine o postavljanju, restartuje kontejnere u slučaju grešaka... i to je to.

Čitava poenta Nomada je ono što radi minimum: nema detaljnog upravljanja pravima ili proširene mrežne politike, ovo je posebno dizajnirano. Ove komponente se isporučuju izvana ili uopće ne postoje.

Mislim da je Nomad pronašao savršen kompromis između lakoće upotrebe i korisnosti. Dobar je za male, nezavisne usluge. Ako vam je potrebna veća kontrola, morat ćete ih sami podići ili koristiti drugačiji pristup. Nomad je samo orkestrator.

Najbolja stvar kod Nomada je to što je lako zamijeniti. Praktično nema veze sa dobavljačem, jer se njegove funkcije lako integrišu u bilo koji drugi sistem koji upravlja uslugama. Samo radi kao obična binarna datoteka na svakoj mašini u klasteru, to je sve!

Nomadski ekosistem labavo povezanih komponenti

Nomadova prava snaga je njegov ekosistem. Vrlo se dobro integrira s drugim - potpuno opcionim - proizvodima kao što su Konzul (skladište ključ-vrijednosti) ili svod (tajne obrade). Unutar Nomad fajla postoje sekcije za izdvajanje 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
}

Evo čitamo ključ service/geo-api/log-verbosity od Consula i tokom rada ga izlažemo varijabli okruženja LOG_LEVEL. Predstavljamo i ključ secret/geo-api-key iz Vault as API_KEY. Jednostavno, ali moćno!

Zbog svoje jednostavnosti, Nomad se lako može proširiti drugim servisima putem API-ja. Na primjer, podržane su oznake za zadatke. Sve usluge označavamo metrikom trv-metrics. Na ovaj način Prometheus može lako pronaći ove usluge preko Consula i povremeno provjeravati krajnju tačku /metrics za nove podatke. Isto se može učiniti, na primjer, za dnevnike, koristeći Loki.

Postoji mnogo drugih primjera proširivosti:

  • Pokrenite Jenkinsov posao koristeći zakačicu, a Consul prati ponovno raspoređivanje Nomad posla kada se konfiguracija usluge promijeni.
  • Ceph dodaje distribuirani sistem datoteka u Nomad.
  • fabio za balansiranje opterećenja.

Sve ovo dozvoljava organski razvijati infrastrukturu bez ikakve posebne veze sa prodavcem.

Pošteno upozorenje

Nijedan sistem nije savršen. Ne preporučujem odmah uvođenje najnovijih funkcija u produkciju. Naravno, postoje greške i nedostajuće funkcije, ali isto važi i za Kubernetes.

U poređenju sa Kubernetesom, zajednica Nomada nije toliko velika. Kubernetes već ima oko 75 urezivanja i 000 saradnika, dok Nomad ima oko 2000 urezivanja i 14 saradnika. Nomadu će biti teško da prati brzinu Kubernetesa, ali možda i ne mora! To je specijalizovaniji sistem, a manja zajednica takođe znači da je veća verovatnoća da će vaš zahtev za povlačenjem biti primećen i prihvaćen u poređenju sa Kubernetesom.

Rezime

Zaključak: Nemojte koristiti Kubernetes samo zato što to rade svi drugi. Pažljivo procijenite svoje zahtjeve i provjerite koji je alat korisniji.

Ako planirate da implementirate gomilu homogenih usluga na infrastrukturu velikih razmera, onda je Kubernetes dobra opcija. Samo budite svjesni dodatne složenosti i operativnih troškova. Neki troškovi se mogu izbjeći korištenjem upravljanog Kubernetes okruženja kao što je Google Kubernetes Engine ili Amazon EKS.

Ako samo tražite pouzdanog orkestratora kojeg je lako održavati i proširiti, zašto ne isprobati Nomad? Možda ćete se iznenaditi koliko daleko će vas ovo odvesti.

Ako se Kubernetes uporedi sa automobilom, Nomad bi bio skuter. Nekad ti treba jedno, a nekad drugo. Obojica imaju pravo na postojanje.

izvor: www.habr.com

Dodajte komentar