我有一个 UDP 服务,我需要从 AWS EKS 集群向 Internet 公开。AWS 负载均衡器(经典或 NLB)不做 UDP,所以我想使用NodePort
Route53 的多值来让 UDP 循环负载均衡到我的节点。
我在 AWS EKS 上的节点没有ExternalIP
分配给它们。虽然运行节点的 EC2 实例具有公共 IP,但在创建集群时这些 IP 尚未分配给节点。
如何将 EC2 公共 IP 分配给我的 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。