JavaRush /Java блог /Random UA /Хто такі Docker, Kubernetes, OpenShift та як вони між соб...
Павел
11 рівень

Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?

Стаття з групи Random UA
Все починається із упаковки. У промисловій розробці є необхідність «упаковки» зібраного додатка, наприклад, щоб його можна було передати на той сервер, де воно працюватиме, у тому вигляді, в якому розробник зібрав його у себе на комп'ютері, така «упаковка» повинна бути ніби захистом . Це виключає сюрпризи, на кшталт тих, коли під час тесту додаток працює, а при перенесенні до робочого середовища — ламається. Так само «упаковка» ізолює один додаток, від іншого, що знаходиться на тому самому сервері, така ізоляція дозволяє одному додатку не заважати роботі іншого (наприклад: один додаток не зможе забрати собі всю оперативну пам'ять сервера, залишивши другий додаток напризволяще). Особливо помітні плюси "упаковки" при мікросервісній архітектурі, воно і зрозуміло, багато мікросервісів - багато невеликих додатків, які повинні спілкуватися між собою, але при цьому не повинні заважати один одному. У приклад можна навести комод (сервер), в якому багато різних ящиків, і ми можемо спокійно перекладати різні шкарпетки з одного ящика в інший, і при цьому вони не змішуватимуться ні один з одним, ні з труселями. Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 1 Упаковка створюється засобам віртуалізації. Колись давно, як «упаковку» використовувалися віртуальні машини (VM). Олди згадають, як розгортали Windows XP на Vista на віртуальній машині. Зараз VM для упаковки додатків – це минуле століття. Світ захопабо контейнери. Тому що вони: легші, продуктивніші та безпечніші. Докладніше: чим контейнер відрізняється від віртуальної машини? Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 2 Потрібно запам'ятати деякі переваги контейнерів: • мають менший розмір (займають менше пам'яті на сервері); • мають доступ до загальних ресурсів сервера (оперативна пам'ять, обчислювальний час процесора); • мають кращу переносимість в інше середовище (з тестового в промислове); • забезпечують вищу швидкість запуску (оскільки контейнер легковаген, те й запускається швидше). Docker – мати контейнерів. Коли говорять контейнер, мають на увазі Docker. Docker — програмне забезпечення для автоматизації розгортання та керування програмами в середовищах з підтримкою контейнеризації. Якщо на прикладах, то Docker це така суміш онлайн конструктора і 3D принтера з краном. Тобто він може спочатку спроектувати шаблон для контейнера, надрукувати контейнер за заданими умовами, а потім перемістити його куди треба. Замість важелів використовується Dockerfile. Процес керування простий: пишеш файли, команди - запускаєш - дивишся що вийшло. Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 3 Перше знайомство з Docker Docker Compose - прокачаний Docker Тепер давайте розглянемо сценарій, коли потрібна робота кількох контейнерів у місці. Для цього служить утиліта – Docker Compose. Docker Compose — інструментальний засіб, що входить до складу Docker. Воно призначене для вирішення завдань, пов'язаних із розгортанням проектів. Різниця між Docker та Docker Compose: Docker застосовується для керування окремими контейнерами. Docker Compose використовується для одночасного керування кількома контейнерами. Цей інструмент пропонує також можливості, що і Docker, але дозволяє працювати з більш складними структурами. Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 4 Типовий сценарій використання Docker Compose: Уявіть собі, що ви є розробником веб-проекту. Цей проект включає два веб-сайти. Перший дозволяє людям, які займаються бізнесом, створювати всього в кілька клацань мишею інтернет-магазини. Другий націлений на підтримку клієнтів. Ці два сайти взаємодіють з однією базою даних. Ваш проект стає все популярнішим, і виявляється, що потужності сервера, на якому він працює, вже недостатньо. В результаті ви вирішуєте перевести весь проект на іншу машину. Якщо щось на зразок Docker Compose ви не використовували, то вам доведеться переносити та переналаштовувати контейнери по одному, сподіваючись на те, що ви, в процесі цієї роботи, нічого не забудете. Якщо ж ви використовуєте Docker Compose, то перенесення вашого проекту на новий сервер це питання, який вирішується виконанням кількох команд. Для того, щоб завершити перенесення проекту на нове місце, вам потрібно лише виконати деякі налаштування та завантажити на новий сервер резервну копію бази даних. Типовий Докеркомпоузер: Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 5 Що тут треба запам'ятати: Контейнери – це основний засіб для «упакування» додатків. Контейнерами займається Docker, створює образи контейнерів, піднімає та переміщує контейнери. Для одночасного керування пачкою контейнерів використовується Docker Compose, який входить до складу Docker. Ці програми – є вільно розповсюджуваним програмним забезпеченням (халява – одним словом) Kubernetes (K8s) – автоматизація Docker І так ми розгорнули контейнери, знаємо, чим переносити їх «пачками» з машини на машину. Але раптом один із контейнерів упав! Що робити? Хто його підніме знову? Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 6 Звичайно, можна це зробити руками, через Docker. Але це ж треба щось робити, щось писати, потрібен якийсь інструмент для автоматизації. Ось тут на сцену виходить Kubernetes (скорочено K8s), він також займеться управлінням та оркестрацією (автоматизоване управління пов'язаними сутностями) контейнерів. Маючи у розпорядженні K8s не треба вдень і вночі стежити за контейнерами. Досить визначити сценарій поведінки, а K8s зробить усе сам. Основні можливості Kubernetes 1. Забезпечує масштабування та керування вашою конфігурацією. 2. Ви можете описати, що ви хочете отримати при розгортанні кластера, і К8s це зробить. Наприклад, вказати кількість подовскільки пам'яті на них виділити, вказати кількість реплік(екземплярів) додатків, розгорнутих (у контейнерах) на подах. 3. Відповідає за підтримку системи у певному стані, якщо щось упало, то К8s це підніме, відповідно до встановленої конфігурації. Що тут слід запам'ятати: Kubernetes – інструмент для оркестрації контейнеризованих додатків – автоматизації їх розгортання, масштабування та координації за умов кластера. Підтримує основні технології контейнеризації, включаючи Docker. K8s є відкритим програмним забезпеченням. Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 7 OpenShift – ферарі у світі віртуалізації, круто, швидко та дорого Розвиваючи тему, далі переходимо до OpenShift. OpenShift – це надбудова над Kubernetes, що пропонує додаткові функції. Він відразу ж готовий до використання, його не треба довго і болісно налаштовувати, можна негайно пускати в продакшн. Дивіться скільки іконок, над Kubernetes. І кожна їх робить свої круті штуки. Хто такі Docker, Kubernetes, OpenShift та як вони між собою пов'язані?  - 8 Основні моменти OpenShift: Це платний продукт, на відміну від K8s; • DevOps із «коробки», підтримка основних сценаріїв розгортання blue/green, canary; • Вбудована підтримка Jenkins; • Надає зручні інструменти для адміністрування та роботи з кластером; • Має більш строгу модель безпеки та вбудований моніторинг. Варто ще раз звернути увагу, що OpenShift є платним продуктом, на відміну від Kubernetes. Різниця в наступному: якщо ми беремо голий Kubernetes, всі проблеми ми вирішуємо самі. Якщо говорити про OpenShift, то це продукт компанії Red Hat, яка в рамках платної підтримки вирішує проблеми, що виникають. Підіб'ємо загальні підсумки: У промисловій розробці є необхідність «упаковки» програми, цей підхід особливо актуальний у мікросервісній архітектурі. Контейнери – це основний засіб для «упаковування» програм. Контейнерами займається Docker, створює образи контейнерів, піднімає та переміщує контейнери. Для одночасного керування пачкою контейнерів використовується Docker Compose, який входить до складу Docker. Ці програми є вільно розповсюдженим ПЗ. Kubernetes(K8s) – інструмент для оркестрування контейнеризованих програм — автоматизації їх розгортання, масштабування та координації в умовах кластера. Підтримує основні технології контейнеризації, включаючи Docker. K8s є відкритим програмним забезпеченням. OpenShift – це надбудова над Kubernetes, що пропонує додаткові функції. Це платний продукт, на відміну від K8s, призначений для корпоративного використання. Надає DevOps з «коробки»: підтримка основних сценаріїв розгортання blue/green, canary, має вбудовану підтримку Jenkins та надає зручні інструменти для адміністрування та роботи з кластером. Має більш строгу модель безпеки та вбудований моніторинг. Тим, у кого сверблять руки покодити: Упакувати Spring Boot додаток в контейнер Як розгорнути Postgres в Docker і підключити до Spring-Boot додатку Вебінар: Docker - Як працювати з контейнерами? - Backend-розробка на Java
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ