Jums gali neprireikti Kubernetes

Jums gali neprireikti Kubernetes
Mergina ant motorolerio. Iliustracija Freepik, Nomad logotipas iš HashiCorp

Kubernetes yra 300 svarų konteinerių orkestravimo gorila. Jis veikia kai kuriose didžiausių konteinerių sistemose pasaulyje, tačiau yra brangus.

Ypač brangu mažesnėms komandoms, kurioms prireiks daug palaikymo laiko ir staigios mokymosi kreivės. Mūsų keturių asmenų komandai tai per daug pridėtinės vertės. Taigi pradėjome ieškoti alternatyvų – ir įsimylėjome klajoklių.

Ko jūs norite

Mūsų komanda palaiko daugybę įprastų našumo stebėjimo ir analizės paslaugų: API galinius taškus, skirtus metrikai, įrašytai programoje „Go“, „Prometheus“ eksportus, žurnalų analizatorius, pvz., „Logstash“ ir Gollum, taip pat tokiose duomenų bazėse kaip InfluxDB arba Elasticsearch. Kiekviena iš šių paslaugų veikia savo konteineryje. Mums reikia paprastos sistemos, kad viskas veiktų.

Pradėjome nuo konteinerių orkestravimo reikalavimų sąrašo:

  • Paslaugų rinkinio vykdymas daugelyje mašinų.
  • Veikiančių paslaugų apžvalga.
  • Nuorodos tarp paslaugų.
  • Automatinis paleidimas iš naujo, jei paslauga neveikia.
  • Infrastruktūros priežiūrą atlieka nedidelė komanda.

Be to, šie dalykai bus puikūs, bet neprivalomi papildymai:

  • Žymėjimo mašinos pagal jų galimybes (pavyzdžiui, žymėjimo mašinos su greitais diskais sunkioms I/O paslaugoms).
  • Galimybė teikti paslaugas nepriklausomai nuo orkestruotojo (pavyzdžiui, kūrimo metu).
  • Įprasta vieta dalytis konfigūracijomis ir paslaptimis.
  • Metrikos ir žurnalų galutinis taškas.

Kodėl Kubernetes mums netinka

Kurdami prototipą su Kubernetes pastebėjome, kad pridedame vis sudėtingesnius logikos sluoksnius, kuriais labai pasitikėjome.

Pavyzdžiui, „Kubernetes“ palaiko integruotas paslaugų konfigūracijas per ConfigMaps. Galite greitai susipainioti, ypač kai sujungiate kelis konfigūracijos failus arba įtraukiate papildomų paslaugų. Kubernetes (arba šturvalas šiuo atveju) leidžia dinamiškai įdiegti išorines konfigūracijas, kad būtų atskirtos problemos. Tačiau tai lemia glaudų, paslėptą ryšį tarp jūsų projekto ir „Kubernetes“. Tačiau „Helm“ ir „ConfigMaps“ yra papildomos parinktys, todėl jų naudoti nereikia. Galite tiesiog nukopijuoti konfigūraciją į „Docker“ vaizdą. Tačiau kyla pagunda eiti šiuo keliu ir kurti nereikalingas abstrakcijas, dėl kurių vėliau galite gailėtis.

Be to, Kubernetes ekosistema sparčiai vystosi. Reikia daug laiko ir energijos, kad gautumėte naujausią informaciją apie geriausią praktiką ir naujausius įrankius. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - sąrašas tęsiasi ir tęsiasi. Ne visi šie įrankiai reikalingi pradedant veiklą, tačiau nežinote, ko jums prireiks, todėl turite viską žinoti. Dėl šios priežasties mokymosi kreivė yra gana staigi.

Kada naudoti Kubernetes

Mūsų įmonėje daug žmonių naudojasi Kubernetes ir yra juo patenkinti. Šiuos atvejus tvarko „Google“ arba „Amazon“, kurie turi išteklių jiems palaikyti.

Kubernetes ateina su nuostabios savybės, dėl kurių konteinerių orkestravimas tampa lengviau valdomas:

Kyla klausimas, ar jums tikrai reikia visų šių funkcijų. Negalite pasikliauti tik abstrakcijomis; turėsite išsiaiškinti, kas vyksta po gaubtu.

Mūsų komanda daugumą paslaugų teikia nuotoliniu būdu (dėl glaudaus ryšio su pagrindine infrastruktūra), todėl nenorėjome kelti savo Kubernetes klasterio. Mes tiesiog norėjome suteikti paslaugas.

Baterijos neįtrauktos

Nomad yra 20% orkestruotės, kuri suteikia 80% to, ko reikia. Viskas, ką ji daro, yra dislokavimo valdymas. Nomadas pasirūpina diegimais, iš naujo paleidžia konteinerius, jei pasitaiko klaidų... ir viskas.

Visa Nomad esmė yra tai, ką jis daro minimalus: nėra detalaus teisių valdymo arba išplėstinė tinklo politika, tai yra specialiai sukurta. Šie komponentai tiekiami išoriškai arba visai neteikiami.

Manau, kad Nomad rado puikų kompromisą tarp lengvo naudojimo ir naudingumo. Tai tinka mažoms nepriklausomoms paslaugoms. Jei jums reikia daugiau kontrolės, turėsite juos pakelti patys arba naudoti kitą metodą. Nomadas yra tiesiog orkestrantas.

Geriausias dalykas „Nomad“ yra tai, kad tai lengva pakeisti. Ryšio su pardavėju praktiškai nėra, nes jo funkcijos lengvai integruojamos į bet kurią kitą paslaugas tvarkančią sistemą. Jis tiesiog veikia kaip įprastas dvejetainis failas kiekviename klasterio kompiuteryje, tai viskas!

Klajoklių ekosistema iš laisvai sujungtų komponentų

Tikroji Nomad stiprybė yra jo ekosistema. Jis labai gerai integruojasi su kitais – visiškai neprivalomais – produktais, tokiais kaip konsulas (raktų vertės parduotuvė) arba Vault (apdorojimo paslaptys). „Nomad“ faile yra skyriai, skirti duomenų ištraukimui iš šių paslaugų:

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
}

Čia mes perskaitome raktą service/geo-api/log-verbosity iš Consul ir dirbdami mes jį veikiame aplinkos kintamuoju LOG_LEVEL. Taip pat pristatome raktą secret/geo-api-key iš Vault as API_KEY. Paprasta, bet galinga!

Dėl savo paprastumo Nomad yra lengvai išplečiamas su kitomis paslaugomis per API. Pavyzdžiui, palaikomos užduočių žymos. Visas paslaugas pažymime metrika trv-metrics. Tokiu būdu „Prometheus“ gali lengvai rasti šias paslaugas per „Consul“ ir periodiškai tikrinti galutinį tašką /metrics naujiems duomenims. Tą patį galima padaryti, pavyzdžiui, su rąstais, naudojant Loki.

Yra daug kitų išplėtimo pavyzdžių:

  • Vykdykite Jenkins užduotį naudodami kabliuką, o konsulas stebi Nomad darbo perskirstymą, kai pasikeičia paslaugos konfigūracija.
  • Ceph prideda paskirstytą failų sistemą prie Nomad.
  • Fabio apkrovos balansavimui.

Visa tai leidžia organiškai plėtoti infrastruktūrą be jokio specialaus ryšio su pardavėju.

Teisingas įspėjimas

Jokia sistema nėra tobula. Nerekomenduoju iš karto įdiegti naujausių funkcijų į gamybą. Žinoma, yra klaidų ir trūkstamų funkcijų, tačiau tas pats pasakytina ir apie „Kubernetes“.

Palyginti su Kubernetes, Nomad bendruomenė nėra tokia didelė. „Kubernetes“ jau turi apie 75 000 įsipareigojimų ir 2000 14 bendraautorių, o „Nomad“ turi apie 000 300 įsipareigojimų ir XNUMX bendraautorių. Nomadui bus sunku išlaikyti Kubernetes greitį, bet gal ir nereikia! Tai labiau specializuota sistema, o mažesnė bendruomenė taip pat reiškia, kad jūsų prašymas bus labiau pastebėtas ir priimtas, palyginti su „Kubernetes“.

Santrauka

Apatinė eilutė: nenaudokite Kubernetes tik todėl, kad visi kiti tai daro. Atidžiai įvertinkite savo poreikius ir patikrinkite, kuris įrankis yra naudingesnis.

Jei planuojate diegti daugybę vienarūšių paslaugų didelio masto infrastruktūroje, Kubernetes yra geras pasirinkimas. Tiesiog atkreipkite dėmesį į papildomą sudėtingumą ir veiklos sąnaudas. Kai kurių išlaidų galima išvengti naudojant valdomą Kubernetes aplinką, pvz „Google Kubernetes Engine“ arba Amazon EX.

Jei tiesiog ieškote patikimo orkestro, kurį būtų lengva prižiūrėti ir kurį būtų galima išplėsti, kodėl gi neišbandžius Nomad? Galbūt nustebsite, kaip toli tai jus nuves.

Jei Kubernetes būtų lyginamas su automobiliu, Nomad būtų motoroleris. Kartais reikia vieno, o kartais kito. Abu turi teisę egzistuoti.

Šaltinis: www.habr.com

Добавить комментарий