Сізге Kubernetes қажет болмауы мүмкін

Сізге Kubernetes қажет болмауы мүмкін
Скутерде отырған қыз. Иллюстрация фрепик, Nomad логотипі HashiCorp

Кубернетес - контейнер оркестрінің 300 фунттық горилласы. Ол әлемдегі ең үлкен контейнерлік жүйелерде жұмыс істейді, бірақ қымбат.

Әсіресе, кішігірім командалар үшін қымбат, бұл көп қолдау уақытын және тік оқу қисығын қажет етеді. Бұл біздің төрт адамнан тұратын команда үшін тым көп шығын. Сондықтан біз балама іздей бастадық - және оған ғашық болдық Nomad.

Саған не керек

Біздің команда бірқатар жалпы өнімділікті бақылау және талдау қызметтерін қолдайды: Go жүйесінде жазылған метрикаға арналған API соңғы нүктелері, Prometheus экспорттары, Logstash және журнал талдаушылары және Gollum, сондай-ақ InfluxDB немесе Elasticsearch сияқты дерекқорлар. Бұл қызметтердің әрқайсысы өз контейнерінде жұмыс істейді. Бізге барлығын жұмыс істеу үшін қарапайым жүйе қажет.

Біз контейнерлік оркестрге қойылатын талаптар тізімінен бастадық:

  • Көптеген машиналарда қызметтер жиынтығын іске қосу.
  • Жұмыс істеп тұрған қызметтерге шолу.
  • Қызметтер арасындағы байланыстар.
  • Қызмет тоқтап қалса, автоматты түрде қайта қосу.
  • Шағын команданың инфрақұрылымын жөндеу.

Сонымен қатар, келесі заттар жақсы болады, бірақ толықтырулар қажет емес:

  • Белгілеу машиналары мүмкіндіктеріне қарай (мысалы, ауыр енгізу-шығару қызметтері үшін жылдам дискілері бар тегтеу машиналары).
  • Оркестрден тәуелсіз қызметтерді іске қосу мүмкіндігі (мысалы, әзірлеу кезінде).
  • Конфигурациялар мен құпияларды ортақ пайдалану орны.
  • Көрсеткіштер мен журналдарға арналған соңғы нүкте.

Неліктен Кубернетес біз үшін дұрыс емес

Біз Кубернетеспен прототип жасағанда, біз өзіміз көп сүйенетін логиканың күрделі қабаттарын қосып жатқанымызды байқадық.

Мысал ретінде, Kubernetes арқылы кірістірілген қызмет конфигурацияларын қолдайды ConfigMaps. Сіз, әсіресе, бірнеше конфигурация файлдарын біріктіргенде немесе подкастқа қосымша қызметтерді қосқанда, тез шатасуыңыз мүмкін. Кубернетес (немесе басқару бұл жағдайда) алаңдаушылықтарды бөлу үшін сыртқы конфигурацияларды динамикалық түрде енгізуге мүмкіндік береді. Бірақ бұл сіздің жобаңыз бен Kubernetes арасындағы тығыз, жасырын байланысқа әкеледі. Дегенмен, Helm және ConfigMaps қосымша опциялар болып табылады, сондықтан оларды пайдаланудың қажеті жоқ. Конфигурацияны жай ғана Docker кескініне көшіруге болады. Дегенмен, бұл жолға түсіп, кейін өкініп қалуыңыз мүмкін қажетсіз абстракцияларды құру қызықтырады.

Сонымен қатар, Кубернетес экожүйесі қарқынды дамып келеді. Ең жақсы тәжірибелер мен соңғы құралдардан хабардар болу үшін көп уақыт пен күш қажет. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - тізім жалғасуда. Бұл құралдардың барлығы сіз бастаған кезде қажет емес, бірақ сізге не қажет екенін білмейсіз, сондықтан сіз бәрін білуіңіз керек. Осыған байланысты оқу қисығы өте тік.

Kubernetes қашан пайдалану керек

Біздің компанияда көптеген адамдар Kubernetes пайдаланады және оған өте риза. Бұл даналарды қолдау үшін ресурстары бар Google немесе Amazon басқарады.

Кубернетес бірге келеді таңғажайып ерекшеліктері, бұл масштабтағы контейнер оркестрін басқаруға ыңғайлы етеді:

Бұл мүмкіндіктердің барлығы сізге шынымен қажет пе деген сұрақ туындайды. Сіз тек абстракцияларға сене алмайсыз; капоттың астында не болып жатқанын білуге ​​тура келеді.

Біздің команда көптеген қызметтерді қашықтан қамтамасыз етеді (негізгі инфрақұрылымға тығыз байланысты болғандықтан), біз өзіміздің Kubernetes кластерін көтергіміз келмеді. Біз жай ғана қызмет көрсеткіміз келді.

Батареялар кірмейді

Nomad - бұл оркестрдің 20%, ол қажеттінің 80% қамтамасыз етеді. Мұның бәрі орналастыруларды басқару болып табылады. Nomad орналастыру туралы қамқорлық жасайды, қателер болған жағдайда контейнерлерді қайта іске қосады ... және бәрі де.

Nomad-тың барлық мәні - оның істеп жатқанында ең аз: жеке құқықтарды басқару жоқ немесе кеңейтілген желі саясаттары, бұл арнайы жасалған. Бұл компоненттер сырттан беріледі немесе мүлде жоқ.

Менің ойымша, Nomad пайдаланудың қарапайымдылығы мен пайдалылық арасындағы тамаша ымыраға келді. Бұл шағын, тәуелсіз қызметтер үшін жақсы. Егер сізге көбірек бақылау қажет болса, оларды өзіңіз көтеруге немесе басқа тәсілді қолдануға тура келеді. Көшпенді жай ғана оркестрші.

Nomad-тың ең жақсысы - бұл оңай ауыстырыңыз. Жеткізушімен іс жүзінде ешқандай байланыс жоқ, өйткені оның функциялары қызметтерді басқаратын кез келген басқа жүйеге оңай біріктірілген. Ол кластердегі әрбір машинада кәдімгі екілік сияқты жұмыс істейді, барлығы!

Бос байланысқан компоненттерден тұратын көшпелі экожүйе

Nomad-тың нағыз күші - оның экожүйесі. сияқты басқа - толығымен қосымша өнімдермен өте жақсы біріктіріледі Консул (кілт-мән қоймасы) немесе Қойма (құпияларды өңдеу). Nomad файлының ішінде осы қызметтерден деректерді шығаруға арналған бөлімдер бар:

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
}

Мұнда біз кілтті оқимыз service/geo-api/log-verbosity Консулдан және оны жұмыс кезінде қоршаған ортаның айнымалысына ұшыратыңыз LOG_LEVEL. Біз кілтті де ұсынамыз secret/geo-api-key Vault ретінде API_KEY. Қарапайым, бірақ күшті!

Қарапайымдылығының арқасында Nomad API арқылы басқа қызметтермен оңай кеңейтіледі. Мысалы, тапсырмалар үшін тегтерге қолдау көрсетіледі. Біз барлық қызметтерді көрсеткіштермен белгілейміз trv-metrics. Осылайша Прометей бұл қызметтерді Консул арқылы оңай тауып, соңғы нүктені мерзімді түрде тексере алады /metrics жаңа деректер үшін. Дәл осылай жасауға болады, мысалы, журналдар үшін, пайдалану Локи.

Кеңейтудің көптеген басқа мысалдары бар:

  • Ілмек арқылы Дженкинс тапсырмасын іске қосыңыз және Консул қызмет конфигурациясы өзгерген кезде Nomad тапсырмасын қайта орналастыруды бақылайды.
  • Ceph Nomad бағдарламасына бөлінген файлдық жүйені қосады.
  • Фабио жүктемені теңестіру үшін.

Мұның бәрі мүмкіндік береді инфрақұрылымды органикалық түрде дамыту сатушымен арнайы байланыссыз.

Әділ ескерту

Ешбір жүйе мінсіз емес. Мен өндіріске жаңа мүмкіндіктерді бірден енгізуді ұсынбаймын. Әрине, қателер мен жетіспейтін мүмкіндіктер бар, бірақ бұл Kubernetes-ке де қатысты.

Кубернетеспен салыстырғанда Nomad қауымдастығы соншалықты үлкен емес. Kubernetes-те қазірдің өзінде 75 000-ға жуық міндеттеме мен 2000 14 салымшы бар, ал Nomad-да 000 300-ға жуық міндеттеме мен XNUMX үлес қосушы бар. Nomad Кубернетес жылдамдығына ілесу қиынға соғады, бірақ бұл қажет емес шығар! Бұл мамандандырылған жүйе және кішірек қауымдастық сонымен қатар Кубернетеспен салыстырғанда сұрау сұрауыңызды байқап, қабылдау ықтималдығын білдіреді.

Резюме

Қорытынды: Kubernetes қолданбасын басқалардың бәрі істеп жатқандықтан пайдаланбаңыз. Талаптарыңызды мұқият бағалаңыз және қай құрал тиімдірек екенін тексеріңіз.

Егер сіз ауқымды инфрақұрылымға біртекті қызметтерді орналастыруды жоспарласаңыз, онда Kubernetes - жақсы нұсқа. Тек қосымша күрделілік пен операциялық шығындар туралы хабардар болыңыз. сияқты басқарылатын Kubernetes ортасын пайдалану арқылы кейбір шығындарды болдырмауға болады Google Kubernetes Engine немесе Amazon EKS.

Егер сіз жай ғана қызмет көрсетуге оңай және кеңейтілетін сенімді оркестрді іздесеңіз, неге Nomad қолданбасын? Бұл сізді қаншалықты алысқа апаратынына таң қалуыңыз мүмкін.

Егер Кубернетес көлікпен салыстырылса, Nomad скутер болар еді. Кейде сізге бір нәрсе керек, ал кейде басқа нәрсе қажет. Екеуінің де өмір сүруге құқығы бар.

Ақпарат көзі: www.habr.com

пікір қалдыру