2 порта на 1 Ingres / услуги / statefulsets / pods - PullRequest
0 голосов
/ 31 марта 2019

Требование : У меня есть два док-контейнера, где оба выставляются на разные порты. (Например, порты 9001 и 9002)

Исходя из требования, я пытаюсь спроектировать объекты kubernetes и их отношения, но я не уверен, правильно ли A или B.

A) 1 Ingres подключается к 1 услуге. И 1 сервис соединяется с 1 набором состояний с 1 пакетом из 2 контейнеров

B) 2 Ingres подключаются к 2 сервисам. И 2 сервиса подключаются к 2 statefulset с 2 pod. Каждый контейнер имеет 1 контейнер.

Я хочу задать следующие вопросы:

  1. Может ли 1 Ingres или 1 сервис или 1 statefulset или 1 модуль обслуживать 2 порта? Если может, то, вероятно, A является правильным, иначе B является правильным.
  2. Также опираясь на мой вопрос, может кто-нибудь сказать мне, правильно ли я понимаю kubernetes или нет?

Ответы [ 3 ]

1 голос
/ 31 марта 2019

Из того, что я понял, вам нужно только одно приложение с отслеживанием состояния, другое может быть без сохранения состояния и сохранять данные в первом приложении.Если вы следуете парадигме микросервисов, вы должны разделить свои приложения на сервисы без сохранения состояния и состояния.
Также важно отметить, что, если два контейнера не тесно связаны, они не должны находиться в одном модуле.Разделение обеспечивает более гибкую масштабируемость, поскольку вам не нужно иметь одинаковое количество реплик обоих контейнеров.
В заключение я хотел бы сделать следующее:

  • Создать развертывание, содержащеетолько изображение вашего приложения без сохранения состояния.
  • Создание StatefulSet для приложения с сохранением состояния.
  • Создание 2 сервисов, по одному для каждого приложения.
  • Создание 1 входа для вашего приложения без сохранения состояния.

Вход разрешит маршрутизацию от запроса, поступающего извне кластера, к службе вашего приложения.Даже если ваше statefull приложение не взаимодействует с внешним миром, создание службы для него позволит упростить связь между приложениями внутри кластера (вы можете использовать фиксированный IP или даже DNS )

1 голос
/ 31 марта 2019

1 вход может обслуживать n сервисов и маршрутизировать внешние соединения к сервисам на основе host и hostPath.

1 сервис может обслуживать несколько портов и назначает разные сопоставления портов узлов каждому порту.

1 модуль может также обслуживать несколько портов, и это зависит от порта, который вы предоставляете в манифесте.

Statefulsets больше похожи на манифесты pods, просто они предоставляют дополнительные функции сохранения томов.

1 голос
/ 31 марта 2019

Вы можете запустить два контейнера на одном модуле, Java может работать на порту 8080 И Eheterum может работать через порт 3306.

Затем вы можете использовать localhost: 8080 из контейнера, чтобы добраться до Java, а java может достичь эфира на localhost: 3306.

Если нет доступа извне кластера, вход не требуется.

Надеюсь, что это ответит на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...