DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Docker Swarm, Kubernetes және Mesos - ең танымал контейнерлік оркестрлік құрылымдар. Арун Гупта өз баяндамасында Докер, Сварм және Кубернетестің келесі аспектілерін салыстырады:

  • Жергілікті даму.
  • Орналастыру функциялары.
  • Көп контейнерлік қолданбалар.
  • Қызметті табу.
  • Қызметті масштабтау.
  • Бір рет орындалатын тапсырмалар.
  • Maven-пен интеграция.
  • Айналмалы жаңарту.
  • Couchbase DB кластерін жасау.

Нәтижесінде сіз әрбір оркестрлік құрал не ұсынатыны туралы нақты түсінікке ие боласыз және осы платформаларды тиімді пайдалану әдістерін үйренесіз.

Арун Гупта - Amazon Web Services компаниясының ашық бастапқы өнімдерінің бас технологы. Ол 10 жылдан астам уақыт бойы Sun, Oracle, Red Hat және Couchbase компанияларында әзірлеушілер қауымдастығын дамытып келеді. Оның маркетингтік науқан мен бағдарлама стратегияларын әзірлейтін және жүзеге асыратын жетекші кросс-функционалды командаларда жұмыс істеуде үлкен тәжірибесі бар. Ол Sun компаниясында инженерлік топтарды басқарды, Java EE командасының негізін қалаушы мүшесі және Devoxx4Kids АҚШ тарауын жасаушы. Арун Гупта IT-блогтарда 2-нан астам жазбалар жазды және 40-тан астам елде баяндамалар жасады.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 1-бөлім
DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 2-бөлім

55-жолда Kubernetes конфигурация файлы арқылы жасалған осы дерекқор қызметіне нұсқайтын COUCHBASE_URI бар. 2-жолға қарап, сіз "tur:Service"-ді көре аласыз – бұл мен жасап жатқан қызмет couchbase-service деп аталады және 4-жолда дәл осындай атау көрсетілген. Төменде бірнеше порттар берілген.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Негізгі жолдар - 6 және 7-жолдар. Қызметте мен: "Ей, бұл мен іздеп жүрген белгілер!" және бұл белгілер айнымалы жұптардың атауларынан басқа ештеңе емес және 7-жол менің couchbase-rs-pod қолданбамды көрсетеді. Содан кейін мен осы белгілерге қол жеткізуді қамтамасыз ететін порттарды тізімдеймін.

19-жолда мен жаңа ReplicaSet түрін жасаймын, 31-жолда кескін атауы бар және 24-27-жолдар менің подкольмен байланысты метадеректерге нұсқайды. Бұл қызмет нені іздейді және оған қосылуы керек. Файлдың соңында 55-56 және 4-жолдар арасында «Осы қызметті пайдаланыңыз!» деген қандай да бір байланыс бар.

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

Сонымен, менде Couchbase қызметі арқылы дерекқор серверімен байланысатын WildFly подводым бар. Мен Couchbase сервисі арқылы Couchbase серверімен байланысатын бірнеше WildFly қосқыштары бар фронтенді пайдалана аламын.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Кейінірек біз кластерден тыс орналасқан қызметтің IP мекенжайы арқылы кластердің ішінде орналасқан және ішкі IP мекенжайы бар элементтермен қалай байланысатынын қарастырамыз.

Сонымен, азаматтығы жоқ контейнерлер жақсы, бірақ күйі бар контейнерлерді пайдалану қаншалықты жақсы? Күйі бар немесе тұрақты контейнерлер үшін жүйе параметрлерін қарастырайық. Docker-те деректерді сақтаудың төрт түрлі тәсілі бар, олар қарастыруға тұрарлық. Біріншісі - Implicit Per-Container, яғни Couchbase, MySQL немесе MyDB сияқты күйі бар контейнерлерді пайдаланған кезде олардың барлығы әдепкі құм жәшігімен жұмыс істейді. Бұл дерекқорда сақталған барлық нәрсе контейнердің өзінде сақталады дегенді білдіреді. Контейнер жоғалып кетсе, деректер онымен бірге жоғалады.

Екіншісі - Айқын Контейнер, мұнда сіз докер көлемін жасау пәрменін пайдаланып нақты сақтау орнын жасайсыз және онда деректерді сақтайсыз. Үшінші тәсіл, Per-Host, сақтау картасын қамтиды, мұнда контейнерде сақталған барлық нәрсе бір уақытта хостта қайталанады. Контейнер сәтсіз болса, деректер хостта қалады. Соңғысы - әртүрлі шешімдерді өндіру кезеңінде пайдалы бірнеше хосттарды (Multi-Host) пайдалану. Қолданбаларыңыз бар контейнерлер хостта жұмыс істеп тұр делік, бірақ сіз таратылған жүйелер үшін автоматты салыстыруды пайдаланып, деректеріңізді интернетте бір жерде сақтағыңыз келеді делік.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Осы әдістердің әрқайсысы белгілі бір сақтау орнын пайдаланады. Жасырын және айқын Контейнер хосттағы деректерді /var/lib/docker/volumes мекенжайында сақтайды. Per-Host әдісімен қойма контейнердің ішіне орнатылады, ал контейнердің өзі хостқа орнатылады. Көп хостты орналастыру үшін Ceph, ClusterFS, NFS және басқалары сияқты шешімдерді пайдалануға болады.

Тұрақты контейнер бұзылса, сақтау каталогы алғашқы екі жағдайда қолжетімсіз болады, бірақ соңғы екеуінде қатынас қалады. Дегенмен, бірінші жағдайда виртуалды машинада жұмыс істейтін Docker хосты арқылы қоймаға қол жеткізуге болады. Екінші жағдайда, деректер де жоғалмайды, себебі сіз ашық сақтауды жасадыңыз.

Егер хост сәтсіз болса, сақтау каталогы алғашқы үш жағдайда қолжетімсіз болады; соңғы жағдайда қоймаға қосылу үзілмейді. Соңында, ортақ мүмкіндік бірінші жағдайда сақтау үшін толығымен өшірілген, бірақ басқаларында мүмкін. Екінші жағдайда, дерекқор таратылған жадты қолдайтынына қарай жадты ортақ пайдалануға болады. Әрбір хост жағдайында деректерді тарату тек берілген хостта мүмкін болады, ал көп хост үшін ол кластерді кеңейту арқылы қамтамасыз етіледі.

Бұл жағдайды көрсететін контейнерлерді жасау кезінде ескерілуі керек. Тағы бір пайдалы Docker құралы - «батареялар бар, бірақ ауыстыруға болады» принципі бойынша жұмыс істейтін Volume плагині. Docker контейнерін іске қосқан кезде, ол: "Ей, дерекқор контейнерін іске қосу арқылы деректеріңізді осы контейнерде сақтауға болады!" Бұл әдепкі әрекет, бірақ оны өзгертуге болады. Бұл плагин контейнерлік дерекқордың орнына желілік дискіні немесе ұқсас жадты пайдалануға мүмкіндік береді. Ол хост негізіндегі сақтауға арналған әдепкі драйверді қамтиды және Amazon EBS, Azure Storage және GCE тұрақты дискілері сияқты сыртқы сақтау жүйелерімен контейнерлік интеграцияны қосады.

Келесі слайд Docker Volume плагинінің архитектурасын көрсетеді.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Көк Docker клиенті деректерді сақтауға арналған контейнерлермен қамтамасыз ететін жергілікті сақтау жүйесі бар көк Docker хостына қосылған. Жасыл Plugin Client және Plugin Daemon да хостқа қосылған. Олар қажетті Storage Backend түріндегі желілік жадта деректерді сақтау мүмкіндігін береді.

Docker Volume плагинін Portworx қоймасымен пайдалануға болады. PX-Dev модулі Docker хостына қосылатын және Amazon EBS жүйесінде деректерді оңай сақтауға мүмкіндік беретін сіз іске қосатын контейнер.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Portworx клиенті хостыңызға қосылған әртүрлі сақтау ресурстары бар контейнерлердің күйін бақылауға мүмкіндік береді. Егер сіз менің блогыма кірсеңіз, Docker көмегімен Portworx-ті қалай тиімді пайдалану керектігі туралы оқи аласыз.

Kubernetes-тегі сақтау тұжырымдамасы Docker-ке ұқсас және контейнерге қол жетімді каталогтармен ұсынылған. Бұл каталогтар кез келген контейнердің қызмет ету мерзімінен тәуелсіз. Ең жиі қолжетімді сақтау түрлері: hostPath, nfs, awsElasticBlockStore және gsePersistentDisk. Осы сақтау түрлері Kubernetes жүйесінде қалай жұмыс істейтінін қарастырайық. Әдетте, оларды қосу үш қадамнан тұрады.

Бірінші қадам - ​​желі жағындағы біреу, әдетте әкімші, сізге тұрақты жад береді. Бұл PersistentVolume деп аталатын конфигурация файлы арқылы орындалады. Әрі қарай, қолданба әзірлеушісі PersistentVolumeClaim деп аталатын конфигурация файлын немесе PVC сақтау сұрауын жазады, ол былай деп жазады: «Менде 50 ГБ таратылған жад бар, бірақ оны басқа адамдарға пайдалануға рұқсат беру үшін мен бұл ПВХ-да дәл қазір маған тек 10 ГБ қажет екенін айтып отырмын». Соңында, үшінші қадам - ​​сіздің сұрауыңыз жад ретінде орнатылады және подкаст, реплика жинағы немесе ұқсас нәрсе бар қолданба оны пайдалана бастайды. Бұл процесс жоғарыда аталған үш қадамнан тұратынын және масштабтауға мүмкіндік беретінін есте ұстаған жөн.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Келесі слайд AWS архитектурасының Kubernetes тұрақтылық контейнерін көрсетеді.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Kubernetes кластерін білдіретін қоңыр тіктөртбұрыштың ішінде сары түспен көрсетілген бір негізгі түйін және екі жұмысшы түйін бар. Жұмысшы түйіндерінің бірінде қызғылт сары подвод, қойма, реплика контроллері және жасыл Docker Couchbase контейнері бар. Кластердің ішінде, түйіндердің үстінде күлгін тіктөртбұрыш сыртқы қол жетімді қызметті білдіреді. Бұл архитектура деректерді құрылғының өзінде сақтау үшін ұсынылады. Қажет болса, келесі слайдта көрсетілгендей, EBS жүйесінде өз деректерімді кластерден тыс сақтай аламын. Бұл әдеттегі масштабтау үлгісі, бірақ ол шығындарды ескеруді талап етеді — деректерді желіде сақтау хостта сақтаудан қымбатырақ болуы мүмкін. Контейнерлеу шешімдерін таңдағанда бұл міндетті түрде ескеру қажет.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Docker сияқты, тұрақты Kubernetes контейнерлерін Portworx көмегімен пайдалануға болады.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Мұны Kubernetes 1.6 қазіргі уақытта «StatefulSet» деп атайды — бұл подкастты тоқтатуды және керемет өшіру оқиғаларын өңдейтін күйі бар қолданбалармен жұмыс істеу тәсілі. Біздің жағдайда бұл қолданбалар мәліметтер базасы болып табылады. Сіз менің блог жазбамда Portworx көмегімен Kubernetes жүйесінде StatefulSet құру туралы оқи аласыз.
Даму жағына тоқталайық. Мен айтқанымдай, Docker екі нұсқасы бар - CE және EE. Біріншісі ай сайынғы EE нұсқасына қарағанда үш ай сайын жаңартылатын тұрақты қауымдастық басылымы. Mac, Linux немесе Windows жүйесіне арналған Docker жүктеп алуға болады. Орнатқаннан кейін Docker автоматты түрде жаңартылады, бұл оны бастауды жеңілдетеді.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Kubernetes үшін мен Minikube-ді ұнатамын — бұл бір түйінде кластер жасау арқылы платформаны бастаудың жақсы жолы. Көп түйінді кластерлер үшін опциялардың кең ауқымы бар: kops, kube-aws (CoreOS + AWS) және kube-up (ескірген). Егер сіз Kubernetes-ті AWS жүйесінде пайдалануды жоспарласаңыз, мен әр жұма сайын онлайн жиналатын және AWS жүйесінде Kubernetes-пен жұмыс істеу бойынша әртүрлі қызықты ресурстарды жариялайтын AWS SIG-ге қосылуды ұсынамын.

Осы платформаларда жылжымалы жаңартулардың қалай орындалатынын қарастырайық. Егер кластер бірнеше түйіндерден тұрса, ол белгілі бір кескін нұсқасын пайдаланады, мысалы, WildFly:1. Жылжымалы жаңартулар кескін нұсқасы әр түйінде бірінен соң бірі жаңасымен ауыстырылатынын білдіреді.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Мұны істеу үшін мен WildFly:2 кескінінің жаңа нұсқасын және жаңарту-параллельдік 2 жаңарту әдісін көрсететін докер қызметінің жаңарту (қызмет атауы) пәрменін қолданамын. 2 саны жүйе бір уақытта екі қолданба кескінін жаңартады, содан кейін 10 секундтық кідіріс (жаңарту кешігуі 10 с), содан кейін келесі екі кескін тағы екі түйінде жаңартылады және т.б. Бұл қарапайым жылжымалы жаңарту механизмі Docker бөлігі ретінде қамтамасыз етілген.

Kubernetes-те жылжымалы жаңартулар осылай жұмыс істейді. Репликация контроллері (rc) бір нұсқаның репликаларының жинағын жасайды және осы webapp-rc ішіндегі әрбір подводқа etcd ішінде сақталған белгі тағайындалады. Маған подвод қажет болғанда, мен etcd дүкеніне көрсетілген белгіні пайдаланып подкастты қамтамасыз ететін Қолданбалар қызметі арқылы кіремін.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Бұл жағдайда, репликация контроллерінде WildFly қолданбасын іске қосатын үш түйін бар, 1-нұсқа. Жаңарту кезінде соңында бірдей атпен және индекспен фондық басқа шағылыстыру контроллері жасалады — xxxxx, мұнда x кездейсоқ сан — және бірдей белгілермен. Енді Қолданбалар қызметінде қолданбаның ескі нұсқасын іске қосатын үш тірек және жаңа репликация контроллерінде жаңа нұсқаны іске қосатын үш подколь бар. Осыдан кейін ескі қосқыштар жойылады, жаңа подкасттары бар репликация контроллерінің атауы өзгертіледі және жаңа подкасттар қосылады.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Мониторингке көшейік. Docker-те көптеген кірістірілген бақылау командалары бар. Мысалы, докер контейнерінің статистикасы пәрмен жолы интерфейсі консольдегі әрбір секунд сайын контейнер күйінің деректерін көрсетеді, соның ішінде CPU және дискіні пайдалану және желі жүктемесі. Docker Remote API құралы клиенттің сервермен байланысы туралы деректерді береді. Ол қарапайым пәрмендерді пайдаланады, бірақ Docker REST API-ге негізделген. Бұл жағдайда REST, Flash және Remote сөздерінің барлығы бірдей мағынаны білдіреді. Хостпен байланысқан кезде бұл REST API. Docker Remote API іске қосылған контейнерлер туралы қосымша ақпарат алуға мүмкіндік береді. Менің блог жазбам осы мониторингті Windows серверімен пайдалану туралы мәліметтерді қамтиды.

Көп хост кластерін іске қосу кезінде Docker жүйесінің оқиғаларын бақылау белгілі бір хосттағы хосттың істен шығуы немесе контейнердің істен шығуы, қызметті масштабтау және т.б. туралы деректерді алуға мүмкіндік береді. Docker 1.20 нұсқасынан бастап оған соңғы нүктелерді бар қолданбаларға біріктіретін Prometheus кіреді. Бұл HTTP арқылы көрсеткіштерді алуға және оларды бақылау тақталарында көрсетуге мүмкіндік береді.

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

Келесі слайд Prometheus соңғы нүктесінің шығысы қандай болатынын және көрсету үшін қолжетімді көрсеткіштерді көрсетеді.

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Төменгі сол жақта HTTP сұрауларына, жауаптарына және т.б. көрсеткіштерді, ал оң жақта олардың графикалық көрінісін көресіз.

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

DEVOXX Ұлыбритания конференциясы. Фреймворкті таңдаңыз: Docker Swarm, Kubernetes немесе Mesos. 3-бөлім

Әрбір жұмысшы түйіні автоматты түрде іске қосылатын cAdvisor іске қосады. Оған қоса, ол Kubernetes 1.0.6 және одан жоғары нұсқаларымен үйлесімді өнімділікті бақылау және көрсеткіштерді жинау жүйесі Heapster қамтиды. Heapster тек жұмыс жүктемесін, подкаст және контейнер өнімділігі көрсеткіштерін ғана емес, сонымен қатар бүкіл кластер жасаған оқиғалар мен басқа сигналдарды жинауға мүмкіндік береді. Деректерді жинау үшін ол әрбір подводтың Kubelet құрылғысымен байланысады, ақпаратты InfluxDB дерекқорында автоматты түрде сақтайды және оны Grafana бақылау тақтасында көрсеткіштер ретінде көрсетеді. Дегенмен, егер сіз miniKube қолданбасын пайдалансаңыз, бұл мүмкіндік әдепкі бойынша қол жетімді емес, сондықтан бақылау үшін қондырмалар қажет болатынын есте сақтаңыз. Осылайша, бәрі контейнерлеріңізді қай жерде іске қосып жатқаныңызға және әдепкі бойынша қандай бақылау құралдары қол жетімді екеніне және бөлек қондырмаларды қажет ететініне байланысты.

Келесі слайдта менің контейнерлерімнің денсаулығын көрсететін Grafana бақылау тақталары көрсетілген. Мұнда өте қызықты деректер бар. Әрине, SysDig, DataDog және NewRelic сияқты Docker және Kubernetes процестерін бақылауға арналған көптеген коммерциялық құралдар бар. Олардың кейбіреулері 30 күндік тегін сынақ нұсқасын ұсынады, сондықтан сіз оларды сынап көріп, өзіңізге ең қолайлысын таба аласыз. Жеке маған Kubernetes-пен жақсы үйлесетін SysDig және NewRelic ұнайды. Docker және Kubernetes екеуімен бірдей жақсы біріктірілген құралдар бар.

Бейнені ойнату

Кейбір жарнамалар 🙂

Бізбен бірге болғандарыңызға рахмет. Сізге біздің мақалалар ұнайды ма? Қызықты мазмұнды көргіңіз келе ме? Тапсырыс беру немесе достарыңызға ұсыну арқылы бізге қолдау көрсетіңіз, әзірлеушілерге арналған бұлтты VPS $4.99, Сіз үшін біз ойлап тапқан бастапқы деңгейдегі серверлердің бірегей аналогы: VPS (KVM) E5-2697 v3 (6 ядросы) 10 ГБ DDR4 480 ГБ SSD 1 Гбит/с 19 доллардан немесе серверді қалай бөлісуге болатыны туралы барлық шындық? (RAID1 және RAID10, 24 ядроға дейін және 40 ГБ DDR4 дейін қол жетімді).

Dell R730xd Амстердамдағы Equinix Tier IV деректер орталығында 2 есе арзан ба? Тек осында 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6 ГГц 14C 64 ГБ DDR4 4x960 ГБ SSD 1 Гбит/с 100 теледидар 199 доллардан бастап Нидерландыда! Dell R420 - 2x E5-2430 2.2 ГГц 6C 128 ГБ DDR3 2x960 ГБ SSD 1 Гбит/с 100 ТБ - 99 доллардан бастап! туралы оқыңыз Инфрақұрылымдық корпорацияны қалай құруға болады. бір тиынға 730 еуро тұратын Dell R5xd E2650-4 v9000 серверлерін қолданатын класс?

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

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster