Teil ei pruugi Kubernetest vaja minna

Teil ei pruugi Kubernetest vaja minna
Tüdruk rolleril. Illustratsioon freepik, Nomadi logo alates HashiCorp

Kubernetes on 300-naeline konteinerite orkestreerimise gorilla. See töötab mõnes maailma suurimas konteinerisüsteemis, kuid on kallis.

Eriti kulukas väiksematele meeskondadele, mis nõuavad palju tugiaega ja järsku õppimiskõverat. See on meie neljaliikmelise meeskonna jaoks liiga suur kulu. Nii hakkasime otsima alternatiive – ja armusime neisse Nomaad.

Mida sa tahad

Meie meeskond toetab mitmeid levinud jõudluse jälgimise ja analüüsi teenuseid: API lõpp-punktid Go-sse kirjutatud mõõdikute jaoks, Prometheuse eksport, logiparserid, nagu Logstash ja Gollum, aga ka andmebaasid, nagu InfluxDB või Elasticsearch. Kõik need teenused töötavad oma konteineris. Vajame lihtsat süsteemi, et see kõik toimiks.

Alustasime konteinerite orkestreerimise nõuete loendiga:

  • Teenuste komplekti käitamine paljudes masinates.
  • Ülevaade jooksvatest teenustest.
  • Teenustevahelised lingid.
  • Automaatne taaskäivitamine, kui teenus katkeb.
  • Infrastruktuuri hooldus väikese meeskonna poolt.

Lisaks on järgmised asjad toredad, kuid mitte vajalikud täiendused:

  • Masinate märgistamine nende võimekuse alusel (näiteks kiirete ketastega märgistamine raskete I/O teenuste jaoks).
  • Võimalus juhtida teenuseid orkestraatorist sõltumatult (näiteks arenduse ajal).
  • Ühine koht konfiguratsioonide ja saladuste jagamiseks.
  • Mõõdikute ja logide lõpp-punkt.

Miks Kubernetes meile ei sobi?

Kubernetesiga prototüüpide loomisel märkasime, et lisame üha keerukamaid loogikakihte, millele me suuresti tuginesime.

Näiteks toetab Kubernetes sisseehitatud teenusekonfiguratsioone kaudu ConfigMaps. Võite kiiresti segadusse sattuda, eriti kui ühendate mitu konfiguratsioonifaili või lisate kaustale lisateenuseid. Kubernetes (või tüür sel juhul) võimaldab teil dünaamiliselt rakendada väliseid konfiguratsioone probleemide eraldamiseks. Kuid selle tulemuseks on tihe ja varjatud side teie projekti ja Kubernetese vahel. Helm ja ConfigMaps on aga lisavalikud, nii et te ei pea neid kasutama. Saate lihtsalt konfiguratsiooni kopeerida Dockeri pildile. Siiski on kiusatus seda teed minna ja luua tarbetuid abstraktsioone, mida võite hiljem kahetseda.

Lisaks areneb Kubernetese ökosüsteem kiiresti. Heade tavade ja uusimate tööriistadega kursis olemiseks kulub palju aega ja energiat. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - nimekiri jätkub lõputult. Kõiki neid tööriistu pole alustamisel vaja, kuid te ei tea, mida vajate, seega peate kõigega kursis olema. Seetõttu on õppimiskõver üsna järsk.

Millal Kubernetest kasutada

Meie ettevõttes kasutavad paljud inimesed Kubernetest ja on sellega üsna rahul. Neid juhtumeid haldab Google või Amazon, kellel on nende toetamiseks ressursid.

Kubernetes tuleb kaasa hämmastavad omadused, mis muudavad mahutite orkestreerimise mastaabis paremini hallatavaks:

Küsimus on selles, kas te tõesti vajate kõiki neid funktsioone. Sa ei saa tugineda ainult abstraktsioonidele; sa pead uurima, mis kapoti all toimub.

Meie meeskond pakub enamikku teenuseid eemalt (tänu tihedale ühendusele põhitaristuga), mistõttu me ei soovinud oma Kubernetese klastrit kasvatada. Tahtsime lihtsalt teenuseid pakkuda.

Patareid ei kuulu komplekti

Nomad on 20% orkestratsioonist, mis annab 80% vajalikust. Kõik, mida see teeb, on juurutamiste haldamine. Nomad hoolitseb juurutamise eest, vigade korral taaskäivitab konteinerid... ja kõik.

Nomadi mõte on selles, mida ta teeb minimaalselt: puudub üksikasjalik õiguste haldamine või laiendatud võrgupoliitikad, see on spetsiaalselt loodud. Neid komponente pakutakse väljastpoolt või üldse mitte.

Arvan, et Nomad on leidnud ideaalse kompromissi kasutuslihtsuse ja kasulikkuse vahel. See on hea väikeste sõltumatute teenuste jaoks. Kui vajate suuremat kontrolli, peate need ise kasvatama või kasutama teistsugust lähenemist. Nomaad on lihtsalt orkestrant.

Parim asi Nomadi juures on see, et see on lihtne asendada. Ühendus müüjaga praktiliselt puudub, kuna selle funktsioonid on hõlpsasti integreeritavad mis tahes muusse teenuseid haldavasse süsteemi. See lihtsalt töötab nagu tavaline kahendfail igas klastri masinas, see on kõik!

Nõrgalt seotud komponentide nomaadi ökosüsteem

Nomadi tõeline tugevus on tema ökosüsteem. See integreerub väga hästi teiste – täiesti valikuliste – toodetega nagu Konsulaat (võtmeväärtuste pood) või võlvkelder (töötlemise saladused). Failis Nomad on jaotised nendest teenustest andmete ekstraheerimiseks:

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
}

Siin loeme võtit service/geo-api/log-verbosity Consulilt ja töötamise ajal eksponeerime seda keskkonnamuutujale LOG_LEVEL. Esitame ka võtme secret/geo-api-key alates Vault as API_KEY. Lihtne, kuid võimas!

Tänu oma lihtsusele on Nomad hõlpsasti laiendatav teiste teenustega API kaudu. Näiteks toetatakse ülesannete silte. Märgistame kõik teenused mõõdikutega trv-metrics. Nii saab Prometheus need teenused Consuli kaudu hõlpsasti üles leida ja perioodiliselt lõpp-punkti kontrollida /metrics uute andmete jaoks. Sama saab teha näiteks palkide puhul, kasutades Loki.

Laiendatavuse kohta on palju muid näiteid:

  • Käivitage Jenkinsi töö konksu abil ja Consul jälgib Nomadi töö ümberpaigutamist, kui teenuse konfiguratsioon muutub.
  • Ceph lisab Nomadile hajutatud failisüsteemi.
  • fabio koormuse tasakaalustamiseks.

Kõik see võimaldab orgaaniliselt arendada infrastruktuuri ilma erilise ühenduseta müüjaga.

Õiglane hoiatus

Ükski süsteem pole täiuslik. Ma ei soovita uusimaid funktsioone kohe tootmisse juurutada. Muidugi on vigu ja puuduvaid funktsioone, kuid sama kehtib ka Kubernetese kohta.

Võrreldes Kubernetesega pole nomaatide kogukond nii suur. Kubernetesel on juba umbes 75 000 kohustust ja 2000 panustajat, samas kui Nomadil on umbes 14 000 kohustust ja 300 panustajat. Nomadil on raske Kubernetese kiirusega sammu pidada, aga võib-olla ei peagi! See on rohkem spetsialiseerunud süsteem ja väiksem kogukond tähendab ka seda, et teie tõmbamistaotlust märgatakse ja aktsepteeritakse tõenäolisemalt kui Kubernetes.

Kokkuvõte

Alumine rida: ärge kasutage Kubernetest ainult sellepärast, et kõik teised seda teevad. Hinnake oma nõudeid hoolikalt ja kontrollige, milline tööriist on kasulikum.

Kui kavatsete suuremahulises infrastruktuuris juurutada tonni homogeenseid teenuseid, on Kubernetes hea valik. Lihtsalt olge teadlik lisandunud keerukusest ja tegevuskuludest. Mõningaid kulusid saab vältida, kui kasutada hallatud Kubernetese keskkonda, näiteks Google Kubernetes Engine või Amazon EKS.

Kui otsite lihtsalt usaldusväärset orkestraatorit, mida on lihtne hooldada ja mida on võimalik laiendada, siis miks mitte proovida Nomadi? Võite olla üllatunud, kui kaugele see teid viib.

Kui Kubernetest võrrelda autoga, oleks Nomad roller. Mõnikord on vaja üht ja mõnikord teist. Mõlemal on õigus eksisteerida.

Allikas: www.habr.com

Lisa kommentaar