NodePort не работает с конечной точкой сервера AWS EKS
Конечной точкой сервера eks является xxxxxxxxxxx.xxx.eks.amazonaws.com, и я создал файл yml с объектом развертывания и обслуживания.
[ec2-user@ip-]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
fakeserver NodePort 10.100.235.246 <none> 6311:30002/TCP 1h
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1d
Когда я просматриваю xxxxxxxxxxx.xxx.eks.amazonaws.com:30002 возвращается слишком долго, чтобы ответить. группы безопасности имеют весь трафик во входящих правилах.
1 ответ
Вы должны использовать IP-адрес своего рабочего узла (один из узлов, если у вас их несколько), а не конечную точку сервера EKS. Конечная точка сервера EKS является главной плоскостью, предназначенной для обработки запросов, касающихся создания / удаления модулей и т. Д.
Вам также необходимо убедиться, что группа безопасности вашего узла разрешает трафик.
После этого вы сможете отправлять запросы в службу NodePort. Например:
Для временного решения
тебе нужно бежать kubectl port-forward
чтобы перенаправить его на ваш локальный и доступ с помощью https://localhost:30002/
Помните:
kubectl port-forward
команда связывает адрес127.0.0.1
только, что означает, что вы не можете посетить прямой порт снаружи сервера. Таким образом, вы должны запустить его локально
$ kubectl port-forward $(kubectl get pod -l "app=fakeserver" -o jsonpath={.items[0].metadata.name}) 30002
Доступ через loadbalancer
Если вам нужен постоянный доступ, вам нужно изменить тип услуги на LoadBalancer
, затем получите доступ к этой службе через ее URL-адрес loadbalancer или вы можете определить другой DNS-маршрут route53 для перенаправления на этот loadbalancer.
Созданный вами сервис имеет тип Node-Port. Вы пробовали с:30002
Если он также возвращает ту же ошибку, то это проблема, с которой связано ваше развертывание. Проверьте порт на контейнере и целевой порт. Должно быть так же.