Как работает балансировка нагрузки в Docker Swarm и в чем разница с Kubernetes? - PullRequest
0 голосов
/ 17 декабря 2018

Я изучаю Docker и выполнил простое упражнение:

  • подготовил 2 машины
  • настроил на них Leader и Worker
  • развернул 2 экземпляра простыхвеб-приложение с командой стека

когда я отправляю HTTP-запрос на ОБА машины, я получаю правильный ответ.

Это странно для меня.Я думал, что только узел Лидер должен обрабатывать запросы, потому что в Swarm есть некоторая балансировка нагрузки.Я подумал, что если какой-нибудь узел завершится неудачей, Swarm должен автоматически перенаправить запросы другому, а узел Лидер - там, где это происходит.Но похоже, что Swarm работает по-другому.

В чем заключается идея кластеризации Swarm?Отличается ли Kubernetes?

1 Ответ

0 голосов
/ 18 декабря 2018

В Docker Swarm лидер принимает решения о том, как планировать контейнеры в ваших узлах и как настроить их так, чтобы трафик переадресовывался на них.Тем не менее, трафик идет не к самому лидеру, а к сетевому входу Docker / сетке сети

Это делается через командную строку с помощью:

$ docker service create \
  --name <SERVICE-NAME> \
  --publish published=8080,target=80 \
  <IMAGE>

Тогда все ваши узлы получат трафик на опубликованный порт и будут перенаправлены в контейнеры.

swarm

В приведенном выше примере отВнешний балансировщик нагрузки позволяет перенаправлять трафик либо на порт 80 (порт, открытый для контейнера), либо на порт 8080 (опубликовано)

Kubernetes очень похож, но не совсем одинаков. Сервисы предоставляются извне через LoadBalancer или NodePort .Однако вы не можете получить прямой доступ к IP-адресам модуля снаружи, так как они не видны снаружи, в отличие от 192.168.99.100:80 в приведенном выше примере с роем Docker.Кроме того, трафик в Kubernetes проходит не через мастер (кроме случаев, когда вы звоните на kube-apiserver), а напрямую через узлы.

...