Дешевое решение для предоставления нескольких HTTP-сервисов в кластере K8s (AWS EKS)

#amazon-web-services #kubernetes #amazon-eks

Вопрос:

Я довольно новичок в k8s и пытаюсь понять, как дешево подключиться к Интернету, нескольким HTTP-сервисам. В настоящее время я использую кластер AWS EKS с группами управляемых узлов, поэтому дешевым способом будет не предоставлять какие-либо ELB, поскольку это дорого. Кроме того, я хотел бы, чтобы эти службы находились в частных подсетях, поэтому будет доступен только входящий ресурс f.ex, а узлы останутся закрытыми. Один балансировщик нагрузки на svc определенно не вариант, так как это сократит мой бюджет

Варианты, которые я рассматриваю:

  • Использование входных ресурсов K8s (если быть точным: контроллер входа Istio). Но недостатком этого является то, что при создании входного ресурса AWS создает балансировщик нагрузки, за который мне нужно будет заплатить.
  • Запустите группы узлов в общедоступных подсетях и создайте службы K8s типа NodePort, чтобы я мог связаться с сервисом с помощью NodeIP:NodePort (NodePort будет специфичным для каждой службы). Недостатком этого является то, что мне нужно будет запомнить все IP-адреса и порты, назначенные каждой службе. Я могу жить с одной услугой, но когда количество увеличится, это будет довольно ужасно запоминать.
  • Наконец, без каких-либо других вариантов можно создать один балансировщик нагрузки с общедоступным IP-адресом, а также создать контроллер входа с помощью Istio. Поэтому я буду обращаться к каждой службе по одному DNS-имени балансировщика нагрузки и буду направлять к службам по пути запроса.

С нетерпением ждем любого решения и предложений.

Ответ №1:

Я не думаю, что здесь есть какая-то магия. Варианты 1 и 3 в основном являются одним и тем же (если только я чего-то не упускаю). Как вы отметили, я не думаю, что вариант 2 жизнеспособен по причинам, которые вы называете. У вас есть несколько вариантов, с которыми вы можете согласиться. Я не знаю, как попасть в Istio (но я предполагаю, что это будет нормально). Мы часто видим, как клиенты используют вход NGINX или вход ALB.

Для всех этих опций требуется балансировщик нагрузки.