istio-ingressgateway LoadBalancer показывает Pending в AWS EKS

Я установил частный кластер EKS, в котором подсети являются частной подсетью. Мое требование: Частный EKS с установкой Istio, создание нескольких микросервисов и предоставление их в vpc. Для отображения их в VPC я ожидал, что istio-ingressgateway создаст внутренний ALB, но он показывает Pending

istio-ingressgateway   LoadBalancer   1xx.x0x.xx.2xx     <pending> 

Мне нужно установить несколько микросервисов в другом порту с помощью NodePort и открыть их через шлюз.

Запросите любую помощь или мнение в этом.

Спасибо!


person Jithin Kumar S    schedule 02.02.2021    source источник
comment
По определению частный кластер EKS использует частные VPC, поэтому он не может создавать балансировщики нагрузки, доступные в Интернете, потому что в нем отсутствуют общедоступные подсети.   -  person paltaa    schedule 02.02.2021
comment
спасибо, что нашли время, чтобы прокомментировать !. Я думал, что если я получу внутренний ALB-адрес, то внутри vpc я смогу маршрутизировать трафик с разных портов узлов, например: ‹internalalb: nodeport of microservice1› вот так. есть идеи, как это сделать?   -  person Jithin Kumar S    schedule 02.02.2021
comment
О, да, вы можете использовать внутренний балансировщик нагрузки, собираюсь опубликовать инструкции, сек.   -  person paltaa    schedule 02.02.2021


Ответы (1)


У вас есть 2 варианта, вы можете использовать контроллер входа ALB и создать внутренний объект входа и добавить аннотацию:

alb.ingress.kubernetes.io/scheme: "internal"

или создайте службу LoadBalancer, которая создаст ELB. Добавьте эти аннотации в сервис:

service.beta.kubernetes.io/aws-load-balancer-internal: используется в службе, чтобы указать, что нам нужен внутренний ELB.

service.beta.kubernetes.io/aws-load-balancer-security-groups: используется для указания групп безопасности, которые будут добавлены в созданный ELB. Это заменяет все другие группы безопасности, ранее назначенные ELB.

Например,

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

Также вам понадобятся эти теги в подсетях VPC:

Key: kubernetes.io/role/internal-elb
Value: 1

В вашем случае выберите вариант 2.

person paltaa    schedule 02.02.2021
comment
Я понял вашу точку зрения. но моя цель - создать сервис как NodePort и шлюз istio. т.е. istio: ingressgateway использует балансировщик нагрузки, чтобы я мог получить доступ к каждой микросервисе через ‹istio loadbalancer url: nodeport›. но когда я смотрю kubectl get svc -n istio-system, я всегда получаю loadbalancer, поскольку ‹pending› ожидал, что здесь будет внутренний адрес alb - person Jithin Kumar S; 02.02.2021
comment
Не рекомендуется предоставлять какой-либо сервис в качестве NodePort, это рекомендуется только в целях тестирования. - person paltaa; 02.02.2021
comment
Но проблема здесь в том, что у меня 10-12 микросервисов, поэтому, если я развертываю с помощью Service Loadbalancer, мне нужно создать 10-12 ALB, верно? что слишком дорого - person Jithin Kumar S; 03.02.2021
comment
Ну, ваше первое требование заключалось в том, чтобы иметь внутренний LoadBalancer, если вы сделаете это с внутренней аннотацией службы, вам действительно понадобится одна для каждой службы, в случае, если вы используете внутренний вход alb (пример 1), вам просто нужен один ALB на пространство имен - person paltaa; 03.02.2021