Как правильно должно быть развернута инфрастуктура с Docker, Kubernetes?
Когда необходимо развернуть какой - то сервис, мне знакомо возможность развертывание по старинке гипервизор (VMware ESXi, Proxmox PVE) - виртуальные машины (CentOS, Debian, Ubuntu).
Но когда речь идет про Docker всегда идут дополнением такие громкие слова как - масштабирование, балансировка, удобство. Предположим стоит задача развернуть Zabbix, что даст развертывание заббикса в Docker с помощью контейнеров ?
1. Почему Docker столь популярен ? Возможно ли его использовать в среде где нет разработчиков, но для Open Source решении если они есть в Docker Hub ?
2. В случае его развертывание: железо, linux os, docker ( и внутри контейнеры) и все это на одной железке ? Что выступает в данном случае гипервизером или тем что отслеживанием за состоянием контейнеров ?
Просто я не совсем понимаю так правильно и так делается ? Допустим я беру физический сервер, накатываю на него линукс, там устанавливаю доккер и устанавливаю контейнеры, этого достаточно ? Допустим я развернул заббикс на сервере с помощью контейнеров, как в данном случае ведется масштабирование сервера ? Как увеличивается выделенный объем данных ? Как снимается бэкап ?
Просто я не совсем понимаю так правильно и так делается ?
UlarSur, правильный подход тот, в котором у команды больше опыта и компетенций. Не стоит ломать существующую инфру ради новомодных технологий.
Допустим я беру физический сервер, накатываю на него линукс, там устанавливаю доккер и устанавливаю контейнеры, этого достаточно ?
Обычно так и делается, да.
Допустим я развернул заббикс на сервере с помощью контейнеров, как в данном случае ведется масштабирование сервера ?
Никак. Докер сам по себе не влияет на масштабирование, балансировку и отказоустойчивость. Это всего-навсего альтернативный способ запуска процесса в системе. Точно такой же как и через systemd юниты, например. Всем остальным занимаются оркестраторы - kubernetes, openshift. Вот они уже решают на какой ноде запустить контейнер, в каком количестве, как балансировать поступающий трафик на них, где переподнять контейнеры с упавшей ноды и так далее.
Как увеличивается выделенный объем данных ?
Докер контейнеру можно не задавать лимиты и тогда приложению в контейнере будут доступны все ресурсы сервера и сколько приложению надо - столько оно и возьмёт. В этом сценарии приложение в контейнере никак не отличается от приложения, запущенного традиционно прямо на хосте. А можно задать лимиты при создании контейнера, а потом их расширять или подрезать при помощи команды docker update.
Как снимается бэкап ?
Обычно если у приложения есть какие-то данные, то их монтируют через volume в какую-нибудь папку на хосте, которую уже потом можно забэкапить как обычно вы бэкапите любую другую папку. Например, docker run -v /opt/docker/nginx:/var/log/nginx nginx:1.25.3-alpine Nginx будет писать в свою папку /var/log/nginx, которую он видит внутри контейнера. А снаружи на хосте эти логи будут доступны в папке /opt/docker/nginx
Vamp, Не поймите меня неправильно, я не хочу вредить бизнесу и ломать рабочие процессы. Я просто преследую цель повышение своей классификации, научится чему - то новому. Преследую цель уйти в сторону DevOps правда в голове не могу структурировано изложить все эти новые технологии чтобы хотя бы претендовать на роль Junior DevOps специалиста и начать хотя бы с чего - то. Нет ли какой - то хорошей статьи в котором по сути изложены большинство технологии начиная от OpenShift заканчивая Docker контейнерами ?