Неожиданный IP-адрес Publi c для исходящего трафика из AKS - PullRequest
0 голосов
/ 08 июля 2020

У меня есть 2 службы Kubernetes типа LoadBalancer, работающие в AKS 1.15.9

$ kubectl get svc --all-namespaces | grep Load
istio-system   istio-egressgateway       LoadBalancer   10.0.177.123   51.A.XXXXX
istio-system   istio-ingressgateway      LoadBalancer   10.0.198.456   20.B.XXXXX

Однако, когда я запускаю Pod для проверки исходящего IP-адреса, он использует 51.C.XXXX

curl -s checkip.dyndns.org
the AKS egress IP address is shown in the response is 51.C.XXXX

Я ожидал, что AKS будет использовать один из IP-адресов LoadBalancer из служб K8s.

1 Ответ

1 голос
/ 09 июля 2020

Между ingress IP и egress IP существует различие.

Egress , из docs :

Исходящий трафик c из кластера AKS соответствует соглашениям Azure Load Balancer. Перед созданием первой службы Kubernetes типа LoadBalancer узлы агентов в кластере AKS не являются частью какого-либо пула Azure Load Balancer. В этой конфигурации узлы не имеют IP-адреса Publi c уровня экземпляра. Azure преобразует исходящий поток в публикуемый c исходный IP-адрес, который нельзя настроить или определить c.

С учетом сказанного, IP-адрес, возвращаемый из curl -s checkip.dyndns.org, является исходящим IP. Это исходящий publi c IP-адрес кластера aks.

Ingress , из docs :

Входной контроллер - это программа, которая обеспечивает обратный прокси-сервер, настраиваемую маршрутизацию c трафика и завершение TLS для служб Kubernetes. Входящие ресурсы Kubernetes используются для настройки правил и маршрутов входа для отдельных сервисов Kubernetes. Используя входной контроллер и правила входа, один IP-адрес может использоваться для маршрутизации трафика c на несколько служб в кластере Kubernetes.

Входящий IP-адрес - в вашем случае балансировщик нагрузки общедоступный \ внутренний IP-адрес, который отвечает за обратный прокси и настраиваемый трафик c маршрутизация.

Диаграмма:

введите описание изображения здесь

...