
Tüdruk mootorrattal. Illustreerimine , Nomadi logo
Kubernetes on 300-kilogrammine gorilla konteinerite orkestreerimiseks. See toimib mõnedes maailma suurimates konteinerite süsteemides, kuid on kallis.
Eriti kulukas väikestele meeskondadele, kellel kulub palju aega toele ja järsule õppimiskõverale. Meie neljaliikmelise meeskonna jaoks on see liiga suur lisakulud. Seetõttu hakkasime otsima alternatiive ja armusime .
Mida soovime
Meie meeskond toetab mitmeid tüüpilisi teenuseid jälgimise ja tootlikkuse analüüsi jaoks: API lõpp-punktid Go keeles kirjutatud metrikate jaoks, Prometheuse eksport, logide parsijad nagu Logstash ja , samuti andmebaasid nagu InfluxDB või Elasticsearch. Igaüks neist teenustest töötab oma konteineris. Me vajame lihtsat süsteemi, et kõik see tööle saada.
Hakkasime konteinerite orkestreerimise nõuete loendist:
- Teenuste komplekti käivitamine mitmes masinas.
- Käivitatud teenuste ülevaade.
- Teenuste vaheline ühendus.
- Automaatne taaskäivitamine, kui teenus kukub.
- Infrastruktuuri hooldamine väikese meeskonnaga.
Lisaks sellele on järgmised asjad meeldivad, kuid mitte kohustuslikud täiendused:
- Masinate märgistamine nende võimetega (näiteks masinate märgistamine kiirete ketastega, et toetada intensiivset sisend-väljund teenuseid).
- Võime teenuseid käitada sõltumatult orkestratoorist (näiteks arendamise ajal).
- Ühine koht konfiguratsioonide ja saladuste jagamiseks.
- Lõpp-punkt meetrikate ja logide jaoks.
Miks Kubernetes ei sobi meile
Kubernetesega prototüübi loomisel märkasime, et hakkasime lisama üha keerulisemaid loogikakihte, millele me kindlalt toetuma hakkasime.
Näiteks toetab Kubernetes sisseehitatud teenuse konfiguratsioone läbi . Võite kiiresti segadusse minna, eriti kui liidate mitu konfiguratsioonifaili või lisate podi täiendavaid teenuseid. Kubernetes (või käesoleval juhul) võimaldab rakendada dünaamiliselt välist konfiguratsiooni huvide lahutamiseks. Kuid see toob kaasa tugeva varjatud seose teie projekti ja Kubernetes'e vahel. Siiski on Helm ja ConfigMaps täiendavad valikud, nii et te ei pea neid kasutama. Võite lihtsalt kopeerida konfiguratsiooni Docker'i pildile. Siiski on ahvatlev minna selle teed ja luua tarbetuid abstraktsioone, millest võite hiljem kahetseda.
Lisaks areneb Kubernetes'e ökosüsteem kiiresti. Parimate praktikate ja uusimate tööriistadega kursis olemiseks kulub palju aega ja energiat. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - nimekiri jätkub ja jätkub. Alguses ei ole kõik need tööriistad vajalikud, kuid te ei tea, mis tulevikus vajalikuks osutub, nii et peate olema kõigest teadlik. Selle tõttu on õppimiskäyr üsna järsk.
Millal kasutada Kubernetes'e
Meie ettevõttes kasutab palju inimesi Kubernetes'e ja on sellega väga rahul. Need instantsid on Google'i või Amazon'i hallatavad, kellel on piisavalt ressursse toetamiseks.
Kubernetes tuleb , mis muudavad konteinerite mahuka orkestreerimise paremini hallatavaks:
- Üksikasjalik .
- lisavad loogikat klastrisse. Need on lihtsalt programmid, mis suhtlevad Kubernetes API-ga.
- ! Kubernetes suudab teenuseid nõudmisel skaleerida, kasutades teenuse mõõdikuid ja ilma käsitsi sekkumiseta.
Küsimus on selles, kas tõepoolest vajate kõiki neid funktsioone. Ei saa ainult toetuda abstraktsioonidele; .
Meie meeskond pakub enamikku teenustest kaugühenduse kaudu (tiheda seose tõttu peamise infrastruktuuriga), seega ei olnud meil soovi oma Kubernetes klastrit tõsta. Tahtsime lihtsalt teenuseid pakkuda.
Patareid ei ole kaasas
Nomad on 20% orkestreerimist, mis annab 80% vajalikust. Kõik, mida see teeb, on deploide haldamine. Nomad hoolitseb deploide eest, käivitab konteinerid uuesti vigade korral... ja see on kõik.
Nomadi kogu mõte on selles, mida ta teeb vähemalt: ei mingit üksikasjalikku õiguste haldamist ega , nii nagu on spetsiaalselt kavandatud. Need komponendid pakutakse väljastpoolt või ei pakutagi üldse.
Arvan, et Nomad on leidnud ideaalse tasakaalu kasutusmugavuse ja tõhususe vahel. See sobib hästi väikestele, sõltumatutele teenustele. Kui on vaja rohkem kontrolli, tuleb need ise üles seada või kasutada mõnda muud lähenemist. Nomad on lihtne orkestrator.
Nomadi parim omadus on, et see on kergesti asendada. Sidumine pakkujaga on praktiliselt olematu, kuna selle funktsioonid saate hõlpsasti integreerida kõigisse teistesse teenuste haldamise süsteemidesse. See töötab lihtsalt nagu tavaline binaar igas klastris asuvas masinas, ja kõik!
Nomadi ökosüsteem koosneb nõrgalt seotud komponentidest
Nomadi tõeline jõud peitub tema ökosüsteemis. See integreerub väga hästi teiste — täiesti valikuliste — toodetega, nagu (võtme-väärtuse hoidla) või (salajaste andmete töötlemine). Nomadi failis on sektsioonid, et andmeid nende teenuste kaudu hankida:
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õtme service/geo-api/log-verbosity Consul'ist ja töötamise ajal esindame seda keskkonnamuutujana LOG_LEVEL. Esindame ka võtme secret/geo-api-key Vault'ist kui API_KEY. Lihtne, kuid võimas!
Oma lihtsuse tõttu saab Nomadi kergesti laiendada teiste teenustega API kaudu. Näiteks toetatakse tööülesannete silte. Märgime kõik teenused, millel on mõõdikud, sildiga trv-metrics. Nii leiab Prometheus need teenused lihtsalt Consul'i kaudu ja kontrollib regulaarselt lõpp-punkti /metrics uute andmete osas. Sama saab teha näiteks logide jaoks, kasutades .
Palju teisi laiendatavuse näiteid:
- Jenkins'i ülesande käivitamine küünekse kaudu, samas kui Consul jälgib Nomad'i ülesande kordusdeploeerimist teenuse konfigureerimise muutuste korral.
- Ceph lisab Nomadi jaotatud failisüsteemi.
- koormuse tasakaalustamiseks.
Kõik see võimaldab ilma eriliste sidemeteta tarnijaga.
Aus hoiatus
Ükski süsteem ei ole täiuslik. Ei soovita kohe rakendada kõige uuemaid funktsioone produktsioonis. Loomulikult on seal vigu ja puuduvaid funktsioone, kuid sama kehtib ka Kubernetes'e kohta.
Kubernetesiga võrreldes ei ole Nomadi kogukond nii suur. Kubernetesel on juba umbes 75 000 commit'i ja 2000 panustajat, kui Nomadil on ligikaudu 14 000 commit'i ja 300 panustajat. Nomadil on raske soovitud kiirusest maha jääda, kuid võib-olla pole see vajalik! See on rohkem spetsialiseeritud süsteem ja väiksem kogukond tähendab, et teie pull-request'i märgatakse ja aktsepteeritakse tõenäolisemalt võrreldes Kubernetesega.
Kokkuvõte
Järeldus: ärge kasutage Kuberneteset ainult seetõttu, et kõik teised seda teevad. Hinnake hoolikalt oma nõudeid ja uurige, milline tööriist on teile kasulikum.
Kui plaanite juurutada suurt hulka ühtseid teenuseid laias mastaabis infrastruktuuris, siis Kubernetes on hea valik. Lihtsalt pidage meeles, et sellega kaasneb lisakompleksus ja käituskulud. Mõningaid kulusid on võimalik vältida, kasutades hallatud Kubernetes keskkonda, nagu või .
Kui otsite lihtsalt usaldusväärset orkestreerijat, mis on lihtne hallata ja skaleeritav, siis miks mitte proovida Nomadi? Võib-olla üllatate end, kui kaugele see teid viib.
Kui Kubernetesit võrrelda autoga, siis Nomad on mootorratas. Mõnikord vajate ühte, mõnikord teist. Mõlemal on õigus eksisteerida.
Allikas: habr.com
