Есть ли преимущества в производительности для разделения веб-серверов и серверов приложений на разные образы Docker с помощью Kubernetes? - PullRequest
1 голос
/ 23 мая 2019

У нас есть приложение J2EE (Wildfly), работающее за веб-сервером Apache, в настоящее время работающее на экземплярах Amazon EC2. Мы планируем перенести это на платформу Kubernetes (EKS) с использованием образов Docker. Тем не менее, нам было интересно узнать о лучших практиках. Должны ли мы создать Docker-контейнер с работающим в нем как веб-сервером, так и сервером приложений, как это кажется распространенным, или есть преимущества создания отдельных изображений для размещения как веб-сервера, так и другого, на котором размещается сервер приложений?

1 Ответ

1 голос
/ 24 мая 2019

Создать контейнер для основного процесса. Один для веб-сервера, один для сервера приложений.

Если контейнеры всегда будут иметь отношение один к одному и должны запускаться вместе, контейнеры можно запланировать в одном и том же Pod (или, как упоминалось в @sfgroups, входной контроллер может позаботиться о вашем нужен веб-сервер).

Kubernetes - это планировщик рабочей нагрузки, который извлекает выгоду из знания состояния выполняемых им процессов. Чтобы запустить несколько процессов в контейнере, вам нужно добавить слой управления процессами, обычно начиная с фоновой обработки в скрипте, используя ./app &, сталкиваясь с проблемами, затем какой-то тип init системы, такой как s6

container-runtime          c-r     c-r
       |                    |       |
      init         VS      web     app
     /    \
   web    app

Если вы начнете добавлять уровни управления процессами между Kubernetes и управляемыми процессами, состояние, которое Kubernetes может обнаружить, начинает становиться нечетким.

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

...