LEMP Kubernetes

Допустим, мы не хотим слишком усложнять пример, и мы решили использовать внешнее хранилище для базы данных. Кроме того, код, файлы конфигурации и т. Д. Являются частью образов Docker.

Мой вопрос основан на опыте, передовой практике и простоте использования. Какую стратегию вы, ребята, используете для развертывания nginx, стека php-fpm?

На ум приходят три варианта:

  • Создайте Dockerfile, в котором у вас есть два процесса, а затем просто создайте модуль с запущенным на нем контейнером. Это нарушит принцип один процесс на контейнер.

  • Создайте один модуль с двумя контейнерами, каждый из которых содержит по одному процессу. Я нашел некоторые мнения онлайн что говорит такие вещи, как:

Основной мотивацией концепции pod является поддержка совместно расположенных, совместно управляемых вспомогательных контейнеров рядом с контейнером приложения. К ним относятся такие вещи, как: ведение журнала или мониторинг агентов, инструменты резервного копирования, средства отслеживания изменений данных, издатели событий, прокси-серверы и т. Д.

  • Создайте различные модули, один с контейнером, на котором запущен nginx, и другой с контейнером, на котором запущен php-fpm. Что может усложнить вещи, может быть?

Было бы неплохо, если бы вы, ребята, могли что-то сказать по этому поводу, основываясь на вашем опыте, и обсудить, что имеет больше смысла по разным причинам.

Спасибо вам всем!

0

Решение

Контейнер с несколькими контейнерами, который имеет полный набор услуг, работает проще всего и в наибольшей степени соответствует принципам проектирования, но имеет недостаток в том, что масштабирование предназначено для всего пакета. Это может быть проблематично в тех случаях, когда, например, nginx использует очень мало ЦП по сравнению с процессом php:

  • Nginx по-прежнему требует значительного количества ЦП для быстрого ответа, но со временем использует очень мало назначенного ЦП.

Поэтому, если ваш процесс крайне неуравновешен в ресурсах, используйте опцию использования раздельного подхода, как вы делали наброски для нескольких процессов / программ в одном контейнере в вашем вопросе, удобнее с автоматическим масштабированием или управлением ресурсами в целом.

Однако следует избегать использования многопроцессорного контейнера, поскольку он противоречит принципам проектирования (он менее гибок, проблемы с библиотеками могут все еще возникать), но иногда его можно избежать. Например, вам нужно регистрировать вращающиеся файлы, и процесс в контейнере должен знать об этом, тогда достаточно запустить cron и другой процесс в этом контейнере. Так что переходите к многопроцессорному контейнеру только в том случае, если это требуется для управления вашим приложением и / или ресурсами, иначе держитесь подальше от него 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector