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

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

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

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

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

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

55-жолда осы дерекқор қызметіне нұсқайтын COUCHBASE_URI бар, ол да Kubernetes конфигурация файлы арқылы жасалған. 2-жолға қарасаңыз, түрін көре аласыз: Қызмет - бұл мен жасап жатқан қызмет, 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 подводым бар. Мен фронталды бірнеше WildFly қосқыштарымен пайдалана аламын, ол сонымен қатар couchbase қызметі арқылы couchbase серверімен байланысады.

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

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

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

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

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

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

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

Егер хост сәтсіз болса, сақтау каталогы алғашқы үш жағдайда қолжетімсіз болады, соңғы жағдайда жадпен байланыс үзілмейді. Соңында, ортақ функция бірінші жағдайда сақтау үшін толығымен алынып тасталады және қалған жағдайда мүмкін. Екінші жағдайда, дерекқордың бөлінген жадты қолдайтынына немесе қолдамайтынына байланысты жадты ортақ пайдалануға болады. Per-Host жағдайында деректерді тарату тек берілген хостта мүмкін болады, ал көп хост үшін ол кластерді кеңейту арқылы қамтамасыз етіледі.

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

Келесі слайд 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-те қалай жұмыс істейтінін қарастырайық. Әдетте, оларды қосу процесі 3 қадамнан тұрады.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Көп хост кластерін іске қосу кезінде докер жүйесінің оқиғаларын бақылау хосттың бұзылуы немесе белгілі бір хосттағы контейнердің бұзылуы, масштабтау қызметтері және т.б. туралы деректерді алуға мүмкіндік береді. 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

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