Могу ли я установить Kubernetes только на главном узле и реализовать автомасштабирование и балансировку нагрузки на этом одном узле?
Да, конечно.
Можно ли хранить все в одном экземпляре EC2, где находятся мои микросервисы?
Да, ты можешь. Однако, если мы говорим о продакшене, это не лучшая практика.
Моя установка для разработки использует развертывание микросервисов в среде Docker на инстансе Amazon EC2. Теперь мы пытаемся реализовать Kubernetes в этом экземпляре EC2 для автоматического масштабирования и балансировки нагрузки микросервисов, развернутых в Docker.
Я вижу следующие проблемы с этим подходом.
- вы собираетесь увеличить нагрузку на узел, так как Kubernetes (k8s) сам по себе дает некоторые накладные расходы
- как сказал @DavidMaze, k8s рассчитан на большую нагрузку в многоузловой среде. И вы пытаетесь использовать его только для автомасштабирования для модулей.
У меня на докере запущено 30 микросервисов.
Похоже, это минимум 30 контейнеров, поэтому, скорее всего, это будет примерно 30 контейнеров. Имейте в виду, что в дополнение к модулям, запрошенным пользователем, k8s запускает дюжину модулей в пространстве имен kube-system
(dns, kube-proxy, default-backend и т. Д.).
Кроме того, вы упомянули автомасштабирование, поэтому на этом единственном узле может быть довольно много модулей.
Ограничения.
K8s рекомендует максимальное количество 110 модулей на узел.
До этого числа Kubernetes был протестирован на надежность работы с общими типами узлов.
Большинство управляемых сервисов k8s даже налагают жесткие ограничения на количество модулей на узел:
- В Amazon Elastic Kubernetes Service (EKS) максимальное количество модулей на узел зависит от типа узла и находится в диапазоне от 4 до 737.
- В Google Kubernetes Engine (GKE) предел составляет 100 модулей на узел, независимо от тип узла.
- В службе Azure Kubernetes (AKS) ограничение по умолчанию составляет 30 модулей на узел, но его можно увеличить до 250.
Доступность.
Если у вас всего несколько узлов, то влияние отказавшего узла больше, чем если бы у вас было много узлов. Например, если у вас всего два узла, и один из них выходит из строя, то примерно половина ваших подов исчезнет. А если у вас всего один узел (с БД конфигурации кластера на нем) ... :)
Таким образом, вы не получаете преимущества от переноса рабочих нагрузок отказавших узлов на другие узлы.
Если у вас есть требования к высокой доступности, вам может потребоваться определенное минимальное количество узлов в вашем кластере.
Подвести итог:
- Накладные расходы на поддержку такой настройки (и более крупного экземпляра EC2) могут быть больше, чем цена управляемого решения (EKS);
- Установка выглядит довольно хрупкой, и вы не получаете главного преимущества надежности. Это может привести к разрушительным последствиям.
Другой источник имеет гигантский процесс наличия двух-трех экземпляров EC2, один из которых является ведущим, а другой - ведомым, с той же настройкой.
Есть несколько способов установить k8s. Думаю, вам стоит проверить инструмент kops
. Кроме того, есть очень подробное руководство под названием kubernetes-the-hard-way пользователя Kelsey Hightower.
И последнее, но не менее важное: есть хорошая статья по теме. Кроме того, на StackOverflow есть несколько подобных обсуждений.
Надеюсь, эта информация проливает свет на проблему и отвечает на ваши вопросы :)
person
Nick
schedule
02.07.2020