Võib-olla ei vaja te Kubernetes't.

Võib-olla ei vaja te Kubernetes't.
Tüdruk mootorrattal. Illustreerimine freepik, Nomadi logo HashiCorp

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

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 Gollum, 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 ConfigMaps. Võite kiiresti segadusse minna, eriti kui liidate mitu konfiguratsioonifaili või lisate podi täiendavaid teenuseid. Kubernetes (või helm 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 ülihämmastavate funktsioonidega, mis muudavad konteinerite mahuka orkestreerimise paremini hallatavaks:

Küsimus on selles, kas tõepoolest vajate kõiki neid funktsioone. Ei saa ainult toetuda abstraktsioonidele; te peate teadma, mis toimub masina sees..

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 täiendavaid võrgupoliitikaid, 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 Consul (võtme-väärtuse hoidla) või Vault (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 Loki.

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.
  • fabio koormuse tasakaalustamiseks.

Kõik see võimaldab looduslikult arendada infrastruktuuri 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 Google Kubernetes Engine või Amazon EKS.

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

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster