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

Võib-olla ei vaja sa Kubernetes't.
Tüdruk skuutriga. Illustratsioon freepik, brändi Nomad logo HashiCorp

Kubernetes on 300-kilone gorilla konteinerite orkestreerimiseks. See töötab mõnedes maailma suurimates konteinerisüsteemides, kuid see on kulukas.

Eriti kallis väikestele meeskondadele, kellel tuleb kulutada palju aega hooldusele ja järsule õppekõverale. Meie neljaliikmelise meeskonna jaoks on see liiga suur kulu. Seetõttu hakkasime otsima alternatiive ja armusime Nomad.

Mida soovime

Meie meeskond toetab mitmeid tüüpilisi teenuseid jälgimiseks ja jõudluse analüüsiks: API lõpp-punktid mõõtmete jaoks, kirjutatud Go-s, Prometheuse eksport, logifailide parsijad nagu Logstash ja Gollum, samuti andmebaasid, nagu InfluxDB või Elasticsearch. Igaüks neist teenustest töötab oma konteineris. Meile on vajalik lihtne süsteem, et kõik see töökorras hoida.

Alustasime konteinerite orkestreerimise nõuete loendiga:

  • Teenuste komplekti käivitamine paljude masinate peal.
  • Käivitatud teenuste ülevaade.
  • Teenuste omavahelised suhted.
  • Automaatne taaskäivitamine, kui teenus kukkub.
  • Infrastruktuuri haldamine väikese meeskonna poolt.

Lisaks oleks järgmised asjad meeldivad, kuid mitte kohustuslikud täiendused:

  • Masinate märgistamine nende võimaluste järgi (näiteks kiirete ketastega masinate märgistamine intensiivseks I/O teenuseks).
  • Teenuste käivitamise võimalus sõltumatult orkestreerijast (näiteks arendamise ajal).
  • Ühine koht konfiguratsioonide ja saladuste jagamiseks.
  • Mõõtmete ja logide lõpp-punkt.

Miks Kubernetes meile ei sobi

Kubernetesega prototüüpi luues märkisime, et hakkasime lisama üha keerukamaid loogika-kihti, millele põhimõtteliselt toetuma hakkasime.

Näiteks toetab Kubernetes teenuste sisseehitatud konfiguratsioone läbi ConfigMaps. Sa võid kiiresti segadusse sattuda, eriti mitmete konfiguratsioonifailide ühendamisel või lisateenuste lisamisel podi. Kubernetes (või helm antud juhul) võimaldab see dünaamiliselt rakendada väliseid konfiguratsioone huvide lahutamiseks. Kuid see toob kaasa tugeva varjatud sõltuvuse teie projekti ja Kubernetes'i vahel. Siiski on Helm ja ConfigMaps lisavõimalused, seega ei ole nende kasutamine kohustuslik. Võite lihtsalt kopeerida konfiguratsiooni Docker'i pildile. Siiski tundub ahvatlev minna seda teed ja luua tarbetuid abstraktsioone, millest pärast võite kahetseda.

Lisaks areneb Kubernetes'i ökosüsteem kiiresti. Parimate praktikate ja uusimate tööriistadega kursis püsimiseks kulub palju aega ja energiat. Kubectl, minikube, kubeadm, helm, tiller, kops, oc – nimekiri jätkub ja jätkub. Alustamiseks ei ole kõiki neid tööriistu kindlasti vaja, kuid te ei tea, mis võib vajalikuks osutuda, seega tuleb kõigega kursis olla. Selle tõttu on õppimiskõver üsna järsk.

Millal kasutada Kubernetes'i

Meie ettevõttes kasutavad paljud Kubernetes'i ja on sellega täiesti rahul. Need instantsid on Google'i või Amazon'i halduses, kellel on piisavalt ressursse toetamiseks.

Kubernetes tuleb koos imelike funktsioonidega, mis muudavad konteinerite ulatusliku orkestreerimise paremini hallatavaks:

Küsimus on, kas kõik need funktsioonid on teile tõeliselt vajalikud. Ei saa lihtsalt tugineda abstraktsioonidele; te peate õppima, mis toimub masina all.

Meie meeskond pakub enamikku teenustest kaugelt (tänu tihedale seondumisele põhisisese infrastruktuuriga), seega ei soovinud me tõsta oma Kubernetes'i klastrit. Soovisime lihtsalt teenuseid pakkuda.

Patareid ei kuulu komplekti

Nomad on 20% orkestreerimist, mis annab 80% vajalikust. Kõik, mida ta teeb, on rakenduste haldamine. Nomad hoolitseb rakenduste eest, käivitab konteinerid tõrgete korral uuesti… ja see on kõik.

Nomadi kogu mõte on see, mida ta teeb minimaalselt: mitte mingit detailset õiguste haldust või laiendatud võrgu poliitikaid, nii on see spetsiaalselt kavandatud. Need komponendid on saadaval väljastpoolt või ei ole üldse saadaval.

Arvan, et Nomad on leidnud ideaalse kompromissi kasutusmugavuse ja kasulikkuse vahel. See sobib hästi väikestele, iseseisvatele teenustele. Kui on vajalik rohkem kontrolli, tuleb need ise üles seada või kasutada teistsugust lähenemist. Nomad on lihtsalt orkestrator.

Parim asi Nomadi juures on see, et see on lihtne asendada. Tarnija seotust praktiliselt ei ole, kuna selle funktsioone on lihtne integreerida kõikidesse teistesse teenuste haldamiseks mõeldud süsteemidesse. See töötab lihtsalt nagu iga teine binaar iga masinas klastris, ja sellega ongi kõik!

Nomadi ökosüsteem koosneb nõrgalt seotud komponentidest

Nomadi tõeline jõud peitub selle ökosüsteemis. See integreerub väga hästi teiste — täiesti valikuliste — toodetega, nagu näiteks Consul (võtmete-väärtuste salvestamine) või Vault (salajaste andmete töötlemine). Nomadi failis on andmete väljavõtmiseks nende teenuste jaoks sektsioonid:

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 Consulist ja töötamise ajal esindame seda keskkonnamuutujana LOG_LEVEL. Samuti esitame võtme secret/geo-api-key Vaultist kui API_KEY. Lihtne, aga võimas!

Oma lihtsuse tõttu on Nomad kergesti laiendatav teiste teenuste kaudu API. Näiteks toetatakse ülesannete jaoks silte. Me märkime kõik teenused, millel on mõõdikud, siltidega trv-metrics. Nii leiab Prometheus need teenused hõlpsasti üles Consuli kaudu ja kontrollib aeg-ajalt lõpp-punkti /metrics uusima teabe olemasolu osas. Sama saab teha ka logide jaoks, kasutades Loki.

On palju teisi laiendatavuse näiteid:

  • Jenkins'i ülesande käivitamine hook'i abil, ja Consul jälgib Nomadi ülesande uuesti käivitamist teenuse konfiguratsiooni muutmisel.
  • Ceph lisab Nomadi jaotatud failisüsteemi.
  • fabio koormuse tasakaalustamiseks.

Kõik see võimaldab loodud infrastruktuuri sujuvalt arendada ilma erilist seotust omamata.

Aus hoiatus

Ükski süsteem ei ole täiuslik. Ei soovita kohe kasutada kõige uuemaid funktsioone tootmises. Muidugi, seal on vigu ja puuduvad funktsioonid, kuid sama kehtib ka Kubernetes'i kohta.

Kubernetesiga võrreldes ei ole Nomadi kogukond nii suur. Kubernetesel on juba umbes 75 000 commit'i ja 2000 kaastöötajat, samas kui Nomadil on umbes 14 000 commit'i ja 300 kaastöötajat. Nomadil on raske püsida ja mitte jääda Kubernetesest maha, kuid võib-olla ei olegi see vajalik! See on spetsialiseeritud süsteem ja väiksem kogukond tähendab ka seda, et teie pull-request'i märgatakse ja aktsepteeritakse tõenäolisemalt, võrreldes Kubernetesega.

Elulookirjeldus

Kokkuvõte: ärge kasutage Kubernetes'e ainult sellepärast, et kõik teised seda teevad. Hinnake hoolikalt oma nõudeid ja vaadake, milline tööriist on soodsam.

Kui plaanite suurtes infrastruktuurides massiliselt homogeenseid teenuseid juurutada, siis Kubernetes on hea valik. Lihtsalt pidage meeles täiendavat keerukust ja tegevuskulusid. Mõningaid kulusid saab vältida, kasutades hallatud Kubernetes keskkonda, nagu Google Kubernetes Engine või Amazon EKS.

Kui otsite lihtsalt usaldusväärset orkestratiivit, mis oleks lihtne hooldada ja skaleeritav, miks mitte proovida Nomadi? Te võite üllatuda, kui kaugele see teid viib.

Kui võrrelda Kubernetes't autoga, siis Nomad on mootorratas. Mõnikord vajate ühte, mõnikord teist. Mõlemad on õigustatud.

Allikas: habr.com

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster