У меня есть служба UDP, которую мне нужно открыть в Интернете из кластера AWS EKS. Балансировщики нагрузки AWS (классические или NLB) не поддерживают UDP, поэтому я хотел бы использовать NodePort
с многозначным Route53, чтобы получить циклическую балансировку нагрузки UDP на мои узлы.
Моим узлам в AWS EKS не назначен ExternalIP
. Хотя экземпляры EC2, на которых работают узлы, имеют общедоступные IP-адреса, они не были назначены узлам при создании кластера.
Как я могу назначить общедоступные IP-адреса EC2 моим узлам k8s?
NAME STATUS ROLES AGE VERSION EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
x.us-west-2.compute.internal Ready <none> 7d v1.10.3 <none> Amazon Linux 2 (2017.12) LTS Release Candidate 4.14.42-61.37.amzn2.x86_64 docker://17.6.2
x.us-west-2.compute.internal Ready <none> 7d v1.10.3 <none> Amazon Linux 2 (2017.12) LTS Release Candidate 4.14.42-61.37.amzn2.x86_64 docker://17.6.2
x.us-west-2.compute.internal Ready <none> 7d v1.10.3 <none> Amazon Linux 2 (2017.12) LTS Release Candidate 4.14.42-61.37.amzn2.x86_64 docker://17.6.2
В настоящее время я тестирую службу HTTP для удобства, и вот как выглядит моя тестовая служба:
apiVersion: v1
kind: Service
metadata:
name: backend-api
labels:
app: backend-api
spec:
selector:
app: backend-api
type: NodePort
ports:
- name: back-http
port: 81
targetPort: 8000
protocol: TCP
externalIPs:
- x.x.x.x
- x.x.x.x
- x.x.x.x
В этом примере мои curl
запросы никогда не попадают в службу HTTP, работающую на узлах. Я догадываюсь, что это связано с тем, что на узлах нет externalIP
s.