Где я должен разместить общие службы для нескольких кластеров kubernetes? - PullRequest
0 голосов
/ 23 мая 2018

Наша компания разрабатывает приложение, которое работает в 3 отдельных кластерах-кубернетах в разных версиях (производство, подготовка, тестирование).Мы должны отслеживать наши кластеры и приложения с течением времени (метрики и журналы).Нам также нужно запустить почтовый сервер.

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

  • Мониторинг: Нам нужно установить InfliffDB и Grafana.В каждом кластере есть предустановленный heapster, который должен отправлять данные нашим инструментам.
  • Ведение журнала: Мы еще не решили.
  • Почтовый сервер (https://github.com/tomav/docker-mailserver)
  • независимые службы: Sentry, Gitlab

Я не уверен, где запустить эти внешние общие службы. Я нашел следующие варианты:

1. Внутри каждого кластера

Нам нужно установить инструменты 3 раза для 3 сред.

Con:

  • У нас нет одной центральной точки для анализа наших систем.
  • Если весь кластер не работает, мы не можем смотреть на что-либо.
  • Неправильная установка одних и тех же инструментов несколько раз.

2. Создайте дополнительный кластер

Мы устанавливаем общие инструменты в дополнительный кластер kubernetes.

Con:

  • Стоимость дополнительного кластера
  • Возможно, сложнееотправлять текущие данные на внешний кластер (сеть, безопасность, брандмауэр и т. д.).

3)Используйте дополнительный root-сервер

Мы запускаем docker-контейнеры на oldschool-root-server.

Con:

  • Считается противоречивым использование root-сервера вместоof ультрасовременные k8s.
  • Единственная точка отказа.
  • Нам нужно контролировать док-контейнеры вручную (или подключать машину к ранчо).

Я попытался решить проблему с помощью Google, но ничего не могу найти по этой теме.Может кто-нибудь дать мне подсказку или несколько ссылок на эту тему?Или это просто не имеет значения, что кластер может разрушиться?

Для меня второй вариант звучит менее злобно, но я пока не могу оценить, трудно ли передавать данные из одного кластера в другой.

Важные вопросы:

  • Является ли проблемой наличие данных мониторинга в кластере, потому что данные мониторинга не видны, если кластер отключен?
  • Это так?общая практика иметь дополнительный кластер для общих служб, который не должен влиять на другие части приложения?
  • Можно (легко) отправлять метрики и журналы из одного кластера kubernetes в другой (мыработает kubernetes в OpenTelekomCloud, что в основном OpenStack)?

Спасибо за ваши подсказки,

Мариус

1 Ответ

0 голосов
/ 24 мая 2018

Это очень сложная и философская тема, но я дам вам свой взгляд на нее и некоторые факты, подтверждающие ее.

Я думаю, что лучший способ - второй - создать дополнительный кластер ивот почему:

  1. Вам нужна точка, которая должна быть доступна из любой вашей среды.В отдельном кластере вы можете установить одинаковые правила брандмауэра, маршруты и т. Д. Во всех средах, и это не повлияет на текущую рабочую нагрузку.

  2. Да, вам нужно заплатитьнемного больше.Однако вам нужны ресурсы для запуска ваших общих приложений, а накладные расходы на инфраструктуру Kubernetes невелики по сравнению с приложениями.

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

  4. Технически это тоже нормально.Вы можете использовать Heapster для сбора данных из нескольких кластеров;практически любое решение для ведения журнала также может работать с несколькими кластерами.Все остальные приложения можно просто запустить в отдельном кластере, и это все, что вам нужно с ними сделать.

Теперь о ваших вопросах:

Isпроблема в том, чтобы иметь данные мониторинга в кластере, потому что невозможно увидеть данные мониторинга, если кластер находится в автономном режиме?

Нет, это не проблема с отдельным кластером.

Является ли обычной практикой использование дополнительного кластера для общих служб, который не должен влиять на другие части приложения?

Думаю, да.По крайней мере, я делал это несколько раз, и я знаю некоторые другие проекты с похожей архитектурой.

Можно ли (легко) отправлять метрики и журналы из одного кластера kubernetes в другой (мы запускаем kubernetesв OpenTelekomCloud, который в основном является OpenStack)?

Да, ничего сложного там нет.Обычно это не зависит от платформы.

...