【问题标题】:NodePort not working with AWS EKS server endpointNodePort 不适用于 AWS EKS 服务器终端节点
【发布时间】:2018-07-25 19:49:44
【问题描述】:

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 时返回时间过长而无法响应。安全组具有入站规则中的所有流量。

【问题讨论】:

  • 这里没有足够的信息。请发布您的部署清单、服务清单以及您可以从 fakeserver 获得的任何日志

标签: amazon-web-services kubernetes amazon-eks kubernetes-service


【解决方案1】:

您应该使用工作节点的 IP(如果您有多个节点,则使用其中一个节点),而不是 EKS 服务器端点。 EKS 服务器端点是主平面,用于处理与创建/删除 pod 等有关的请求。

您还需要确保您的节点的安全组将允许流量。

有了这个,您应该能够向您的 NodePort 服务发出请求。 例如:

http://your-workernodeIp:NodePortNumber

【讨论】:

  • 如果我有自动缩放会发生什么?我不知道将分配哪个新 IP。
【解决方案2】:

临时解决方案

您需要运行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,然后通过其负载均衡器 url 访问此服务,或者您可以定义另一个 route53 DNS 以重定向到此负载均衡器。

【讨论】:

    【解决方案3】:

    您创建的服务属于类型 - 节点端口。你试过:30002

    如果它也返回相同的错误,那么它是您的部署的问题。 检查容器上暴露的端口和目标端口。应该是一样的。

    【讨论】:

      猜你喜欢
      • 2022-07-04
      • 2023-03-26
      • 2018-07-22
      • 1970-01-01
      • 2021-02-11
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多