Создано несколько общедоступных IP-адресов, но используется только один

#kubernetes #terraform #azure-aks #azure-public-ip

#kubernetes #terraform #azure-aks #azure-public-ip

Вопрос:

Я использую AKS для параллельного выполнения нескольких агентов нагрузочных тестов для внешнего приложения. Агенты представляют собой модули без связанных с ними служб. У кластера нет контроллера входа.

Я хочу, чтобы целевое приложение попадало с нескольких IP-адресов, поэтому я создал кластер AKS с помощью Terraform таким образом:

 resource "azurerm_kubernetes_cluster" "cluster" {
  ...
  ...
  ...
  network_plugin = "azure"
  network_profile {
    load_balancer_profile {
      managed_outbound_ip_count = 3
    }
  }
}
  

При такой конфигурации у меня действительно есть 3 общедоступных IP-адреса, связанных с кластерным балансировщиком исходящей нагрузки, но в журналах доступа к целевому приложению отображается только один общедоступный IP-адрес.

Есть ли способ принудительно использовать все доступные общедоступные IP-адреса?

Ответ №1:

Если у вас не развернуты службы, то вы используете свой LB не как балансировщик нагрузки Kubernetes, а просто как SNAT-прокси.
Вероятно, в этом случае LB по умолчанию использует свой основной IP-адрес для правил SNAT.

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

Разверните общедоступную службу <…>. Для балансировщика нагрузки Azure будет настроен новый общедоступный IP-адрес, который будет использоваться для этой новой службы. Поскольку средство балансировки нагрузки Azure может иметь несколько интерфейсных IP-адресов, каждая новая развернутая служба получит новый выделенный интерфейсный IP-адрес для уникального доступа.
https://learn.microsoft.com/en-us/azure/aks/load-balancer-standard#use-the-public-standard-load-balancer

Попробуйте создать службы (по одной на внешний ip), как указано в документе.

Комментарии:

1. Вы правы. Похоже, что этот параметр managed_outbound_ip_count не помогает моему варианту использования. Спасибо