JavaRush /Java блог /Java Developer /Кто такие Docker, Kubernetes, OpenShift и как они между с...
Павел
11 уровень

Кто такие Docker, Kubernetes, OpenShift и как они между собой связаны?

Статья из группы Java Developer
Все начинается с упаковки. В промышленной разработке есть необходимость «упаковки» собранного приложения, например, чтобы его можно было передать на тот сервер, где оно будет работать, в том виде, в каком разработчик собрал его у себя на компьютере, такая «упаковка» должна служить как бы защитой. Это исключает сюрпризы, вроде тех, когда во время теста приложение работает, а при переносе в рабочую среду — ломается. Так же «упаковка» изолирует одно приложение, от другого, находящееся на том же самом сервере, такая изоляция позволяет одному приложению не мешать работе другого (например: одно приложение не сможет забрать себе всю оперативную память сервера, оставив второе приложение на произвол судьбы). Особенно заметны плюсы «упаковки» при микросервисной архитектуре, оно и понятно, много микросервисов – много небольших приложений, которые должны общаться между собой, но при этом не должны мешать друг другу. В пример можно привести комод (сервер), в котором много разных ящиков, и мы можем спокойно перекладывать разные носки из одного ящика в другой, и при этом они не будут смешиваться ни друг с другом, ни с труселями. Кто такие 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 является открытым(open-source) программным обеспечением. Кто такие 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 является открытым(open-source) программным обеспечением. OpenShift это надстройка над Kubernetes, предлагающая дополнительные функции. Это платный продукт, в отличие от K8s предназначенный для корпоративного использования. Предоставляет DevOps из «коробки»: поддержка основных сценариев развертывания blue/green, canary, имеет встроенную поддержку Jenkins и предоставляет удобные инструменты для администрирования и работы с кластером. Имеет более строгую модель безопасности и встроенный мониторинг. Тем, у кого чешутся руки покодить: Упаковать Spring Boot приложение в контейнер Как развернуть Postgres в Docker и подключить к Spring-Boot приложению Вебинар: Docker — Как работать с контейнерами? — Backend-разработка на Java
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
it Уровень 21
31 июля 2023
Хорошая статья, только я уже в процессе учебы перестаю видеть разницу что должен делать разработчик, а что девопс, как будто это одно и тоже))
Anastasia Lvu Уровень 25 Expert
17 июля 2023
Спасибо!
Xucn Уровень 22
28 марта 2023
"Docker Compose – прокаченный Docker" - куда его прокатили? Если имелся ввиду уровень выше, то "прокачАнный" " ...предлагает теже возможности..." - те же
Сослан Уровень 10
1 июня 2022
Спасибо, все понятно!
Anonymous #2354938 Уровень 12
25 апреля 2022
Спасибо!
2DaMoon Уровень 41
1 марта 2022
Спасибо 👍
Alex Уровень 27
28 февраля 2022
Спасибо)