Невозможно создать сервис Kubernetes с AWS Elastic LoadBalancer

Я создал балансировщик нагрузки приложения aws myservices и получил следующее DNS-имя, указанное в консоли aws - internal-myservices-987070943.us-east-1.elb.amazonaws.com

У меня также есть целевые группы, созданные и показанные ниже в разделе "Описание" - "Имя как myservices-LB", "Протокол как HTTPS", "Порт как 443", "Тип цели как экземпляр", "Балансировщик нагрузки как myservices". На вкладке "Цели" я вижу зарегистрированные цели, показывающие мой идентификатор экземпляра как i-02dbf9b3a7d9163e7 с портом 443 и другими деталями... Этот идентификатор экземпляра является моим экземпляром ec2, который я настроил в качестве главного узла моего кластера kubernetes.

На самом деле и мой loadbalancer, и экземпляры EC2 находятся в одном VPC.

С моего локального компьютера теперь я могу получить доступ к этому URL-адресу https://internal-myservices-987070943.us-east-1.elb.amazonaws.com/ То, что я сделал, было: 1) проверка работоспособности в HTTPS 443 портирована и 2) Установлен веб-сервер nginx в моем экземпляре EC2. Поэтому установка nginx и открытие порта SSL автоматически решает проблему проверки работоспособности, и я могу просматривать внутренний URL-адрес LB с помощью https.

Но все же моя основная проблема создания loadbalancer с использованием kubernetes svc не решена:(Это все еще показывает <pending> для EXTERNAL_IP. Я сомневаюсь, поскольку экземпляр EC2 и LB находятся в одном и том же VPC, почему traceroute internal-myservices-987070943.us-east-1.elb.amazonaws.com не отслеживает его? Я получаю все * * * за все 30 прыжков. Но с моей локальной машины я могу успешно ее отследить. Таким образом, это причина, по которой не создается какой-либо внешний IP?

Я сделал все необходимое для интеграции облаков AWS с kubernetes.

1) Мое имя хоста как главного, так и рабочего узлов в кластере kube совпадает с именами экземпляров EC2.

2) Добавлены теги для экземпляров EC2 и в сервисе kubelet

3) Добавлены теги cloud-config для POD'ов kube-api и kube-controller-manager

4) Я вижу эластичную балансировку нагрузки:* действие, имеющее разрешение на мою политику в AWS для моей роли.

Также мне интересно, как это получается, когда nginx, установленный в моем экземпляре EC2, может получить доступ к моему Load Balancer, но Traceroute не может получить к нему доступ.

Можно ли получить прямой доступ к моему сервису с помощью Loadbalancer, который я создал вручную через консоль AWS?? Может быть, с NodePort или вход или что-то..??

Так что я застрял с этим:(Пожалуйста, помогите..

1 ответ

Мне пришлось установить прокси в качестве переменной env внутри yaml контроллера kube. Кроме того, чтобы это работало, пришлось установить IP-адрес метаданных ec2 в переменной no_proxy.