Jo meie net nedich Kubernetes

Jo meie net nedich Kubernetes
Meisje op in scooter. Yllustraasje freepik, Nomad logo fan HashiCorp

Kubernetes is de 300-pûn gorilla fan kontenerorkestraasje. It wurket yn guon fan 'e grutste container systemen yn' e wrâld, mar is djoer.

Benammen djoer foar lytsere teams, dy't in protte stipetiid en in steile learkurve sille fereaskje. Dit is tefolle overhead foar ús team fan fjouwer. Dat wy begûnen te sykjen nei alternativen - en waarden fereale op Nomade.

Wat wolle jo

Us team stipet in oantal mienskiplike tsjinsten foar tafersjoch en analyse fan prestaasjes: API-einpunten foar metriken skreaun yn Go, Prometheus-eksport, log-parsers lykas Logstash en Gollum, lykas databases lykas InfluxDB of Elasticsearch. Elk fan dizze tsjinsten rint yn in eigen kontener. Wy hawwe in ienfâldich systeem nedich om it allegear rinnend te hâlden.

Wy begûnen mei in list mei easken foar kontenerorkestraasje:

  • It útfieren fan in set fan tsjinsten op in protte masines.
  • Oersjoch fan rinnende tsjinsten.
  • Links tusken tsjinsten.
  • Automatysk opnij starte as de tsjinst delkomt.
  • Ynfrastruktuer ûnderhâld troch in lyts team.

Derneist sille de folgjende dingen moai wêze, mar net fereaske tafoegings:

  • Tagging masines basearre op harren mooglikheden (Bygelyks, tagging masines mei flugge skiven foar swiere I / O tsjinsten).
  • Mooglikheid om tsjinsten ûnôfhinklik fan 'e orkestrator út te fieren (bygelyks tidens ûntwikkeling).
  • In mienskiplik plak om konfiguraasjes en geheimen te dielen.
  • Einpunt foar metriken en logs.

Wêrom Kubernetes is net rjocht foar ús

Doe't wy prototype makken mei Kubernetes, merkten wy op dat wy hieltyd kompleksere lagen fan logika tafoegje wêr't wy sterk op fertrouden.

As foarbyld stipet Kubernetes ynboude tsjinstkonfiguraasjes fia ConfigMaps. Jo kinne fluch yn 'e war wurde, foaral as jo meardere konfiguraasjebestannen fusearje of ekstra tsjinsten tafoegje oan in pod. Kubernetes (of roer yn dit gefal) kinne jo eksterne konfiguraasjes dynamysk ymplementearje om soargen te skieden. Mar dit resultearret yn in strakke, ferburgen koppeling tusken jo projekt en Kubernetes. Helm en ConfigMaps binne lykwols ekstra opsjes, dus jo hoege se net te brûken. Jo kinne de konfiguraasje gewoan kopiearje yn 'e Docker-ôfbylding. It is lykwols ferleidend om dit paad del te gean en ûnnedige abstraksjes te bouwen wêr't jo letter spyt fan kinne.

Derneist evoluearret it Kubernetes-ekosysteem rap. It kostet in protte tiid en enerzjy om op 'e hichte te bliuwen mei bêste praktiken en de lêste ark. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - de list giet troch en troch. Net al dizze ark binne nedich as jo begjinne, mar jo witte net wat jo nedich binne, dus jo moatte bewust wêze fan alles. Hjirtroch is de learkurve frij steil.

Wannear te brûken Kubernetes

Yn ús bedriuw brûke in protte minsken Kubernetes en binne der aardich bliid mei. Dizze eksimplaren wurde beheard troch Google of Amazon, dy't de middels hawwe om se te stypjen.

Kubernetes komt mei amazing funksjes, dy't kontenerorkestraasje op skaal behearder meitsje:

  • Detaillearre rjochten behear.
  • Oanpaste controllers add logika oan it kluster. Dit binne gewoan programma's dy't prate mei de Kubernetes API.
  • Autoscaling! Kubernetes kinne tsjinsten op oanfraach skaalje mei tsjinstmetriken en sûnder manuele yntervinsje nedich.

De fraach is oft jo al dizze funksjes echt nedich binne. Jo kinne net allinich op abstraksjes fertrouwe; jo moatte útfine wat der ûnder de motorkap bart.

Us team leveret de measte tsjinsten op ôfstân (fanwege de nauwe ferbining mei de haadynfrastruktuer), dus wy woenen ús eigen Kubernetes-kluster net ferheegje. Wy woene gewoan tsjinsten leverje.

Batterijen net ynbegrepen

Nomad is 20% fan 'e orkestraasje dy't 80% leveret fan wat nedich is. Alles wat it docht is ynsettingen beheare. Nomad soarget foar ynset, set konteners op 'e nij op by flaters... en dat is it.

It hiele punt fan Nomad is wat it docht minimum: gjin korrelige rjochten behear of útwreide netwurk belied, dit is spesjaal ûntwurpen. Dizze komponinten wurde ekstern of hielendal net levere.

Ik tink dat Nomad it perfekte kompromis hat fûn tusken gebrûksgemak en nut. It is goed foar lytse, ûnôfhinklike tsjinsten. As jo ​​​​mear kontrôle nedich binne, moatte jo se sels ferheegje of in oare oanpak brûke. Nomad is just orkestrator.

It bêste fan Nomad is dat it maklik is ferfange. D'r is praktysk gjin ferbining mei de ferkeaper, om't syn funksjes maklik yntegreare wurde yn elk oar systeem dat tsjinsten beheart. It rint gewoan as in gewoane binêre op elke masine yn it kluster, dat is alles!

Nomade-ekosysteem fan los keppele komponinten

De echte krêft fan Nomad is har ekosysteem. It yntegreart hiel goed mei oare - folslein opsjoneel - produkten lykas Konsul (key-wearde winkel) of Vault (geheimen ferwurkjen). Binnen it Nomad-bestân binne d'r seksjes foar it ekstrahearjen fan gegevens fan dizze tsjinsten:

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
}

Hjir lêze wy de kaai service/geo-api/log-verbosity fan Consul en wylst wy wurkje bleatstelle it oan in omjouwingsfariabele LOG_LEVEL. Wy presintearje ek de kaai secret/geo-api-key út Vault as API_KEY. Ienfâldich mar krêftich!

Troch syn ienfâld is Nomad maklik útwreide mei oare tsjinsten fia API. Bygelyks, tags foar taken wurde stipe. Wy taggje alle tsjinsten mei metriken trv-metrics. Op dizze manier kin Prometheus dizze tsjinsten maklik fine fia Consul en periodyk it einpunt kontrolearje /metrics foar nije gegevens. Itselde kin dien wurde, bygelyks, foar logs, mei help fan Loki.

D'r binne in protte oare foarbylden fan útwreidzjen:

  • Run in Jenkins baan mei help fan in heak, en Consul tafersjoch op de weryndieling fan de Nomad baan as de tsjinst konfiguraasje feroaret.
  • Ceph foeget in ferspraat bestânsysteem ta oan Nomad.
  • fabio foar load balancing.

Dit alles makket it mooglik organysk ûntwikkeljen ynfrastruktuer sûnder spesjale ferbining mei de ferkeaper.

Earlike warskôging

Gjin systeem is perfekt. Ik riede net oan om de nijste funksjes fuortendaliks yn produksje te yntrodusearjen. Fansels binne d'r bugs en ûntbrekkende funksjes, mar itselde jildt foar Kubernetes.

Yn ferliking mei Kubernetes is de Nomad-mienskip net sa grut. Kubernetes hat al sawat 75 commits en 000 bydragen, wylst Nomad sawat 2000 commits en 14 bydragen hat. Nomad sil it dreech hawwe om de snelheid fan Kubernetes by te hâlden, mar miskien hoecht it net! It is in mear spesjalisearre systeem, en de lytsere mienskip betsjut ek dat jo pull-oanfraach mear kâns wurdt opmurken en akseptearre, yn ferliking mei Kubernetes.

Gearfetting

Bottom line: Brûk Kubernetes net gewoan om't elkenien it docht. Evaluearje jo easken foarsichtich en kontrolearje hokker ark foardieliger is.

As jo ​​fan plan binne in ton homogene tsjinsten yn te setten op in grutskalige ynfrastruktuer, dan is Kubernetes in goede opsje. Wês gewoan bewust fan 'e tafoege kompleksiteit en bedriuwskosten. Guon kosten kinne wurde foarkommen troch it brûken fan in behearde Kubernetes-omjouwing lykas Google Kubernetes Engine of Amazon EKS.

As jo ​​​​gewoan op syk binne nei in betroubere orkestrator dy't maklik te ûnderhâlden en útwreiber is, wêrom dan Nomad net besykje? Jo kinne wêze ferrast hoe fier dit sil bringe jo.

As Kubernetes wurdt fergelike mei in auto, soe Nomad in scooter wêze. Soms hawwe jo ien ding nedich en soms in oar nedich. Beide hawwe besteansrjocht.

Boarne: www.habr.com

Add a comment