【问题标题】:How to access pod from outside of my cluster in kubernetes? I exposed it as node port service but can't access it with that node port如何在 Kubernetes 中从集群外部访问 pod?我将其公开为节点端口服务,但无法使用该节点端口访问它
【发布时间】:2019-02-07 09:06:41
【问题描述】:

我为我的 java 应用程序创建了一个 pod,并将其公开为节点端口服务。
我只能在集群内部使用 curl master address:nodeport 访问它,而不能从外部访问它(比如我的浏览器).
节点端口服务的目的是允许外部访问 pod 对吗?那为什么不能访问呢。

kubernetes 版本 v1.13,
在数字海洋云中运行。

预期输出: masteraddress:nodeport 应该在外部工作

kubectl describe svc <svc> 的输出

【问题讨论】:

  • 可以分享你的 Yaml 文件配置???打开 192.168.255.229:8081 会发生什么???
  • @harsh svc 或 pod 的配置文件?
    当我仅在集群内打开 192.168.255.229:8081 或 nodeip:nodeport 时,我可以获得所需的输出
  • 哦,好吧...所以 192.168.255.229:8081 得到输出???来自浏览器还是集群内部?
  • @HarshManvar 仅在集群内部
  • @HarshManvar 数字海洋(ps:我在问题中提到过)

标签: docker kubernetes kubernetes-service


【解决方案1】:

然后使用NodePort将其更改为负载均衡器并直接通过负载均衡器IP地址访问它。或者 eles 你可以制作一个入口控制器,它会产生一个入口,你可以重定向和公开服务

同时使用入口和服务类型负载均衡器,您可以访问外部应用程序

【讨论】:

  • 从 yaml 文件配置中也可以将配置类型:NodePort 更改为 LoadBalancer
【解决方案2】:

检查节点端口是否在主机上为您的应用程序提供服务:netstat -tunpl | grep "your node port",并且本地地址为0.0.0.0 或您机器的IP

【讨论】:

  • 是的@vicky,我检查了,使用localaddress:nodeportmasterip:nodeportnetstat -tunpl | grep "my node port" 工作正常,返回我的节点端口
【解决方案3】:

只需尝试找到运行 pod 的工作程序节点的 IP 地址。
master-address:nodeport 更改为 workernode-address:nodeport,它对我有用 :)

【讨论】:

    【解决方案4】:

    如果您确定一切正确且正在运行,请检查端口是否被防火墙规则阻止并将其打开以供外部流量使用。

    【讨论】:

      【解决方案5】:

      从您的输出看来,您的 pod 选择器不正确。您的输出应该类似于

      Nodeport:“选择器标签”31605/TCP

      你有“未设置”,所以这个节点端口没有连接到任何东西。

      我有a nodeport example on my blog

      【讨论】:

        猜你喜欢
        • 2020-07-15
        • 2017-05-19
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多