当前位置: 首页 > 知识库问答 >
问题:

Kubernetes通过端口而非节点端口访问外部IP

鱼安然
2023-03-14

我对Kubernetes和Helm图表是新的,我想在这里找到我的问题的答案。

NAME             TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                        AGE
service/leader   LoadBalancer   10.3.245.137   104.198.205.71   80:30125/TCP, 8888:30927/TCP   54s
ports:
  name: api
  port: 80
  targetPort: 8888 

  name: api2
  port: 8888
  targetPort: 8888
Type:        LoadBalancer
Port:        api 80/TCP
TargetPort:  8888/TCP 
NodePort:    api 30125/TCP
EndPoints:   <some IP>:8888
Port:        api 8888/TCP
TargetPort:  8888/TCP 
NodePort:    api 30927/TCP
EndPoints:   <some IP>:8888

我一直认为nodeport是向外部公开集群的端口,而port是在内部服务上公开的端口,它路由到pods上的targetports。我从这里得到了这个理解。

但是,我似乎可以打开104.198.205.71:80104.198.205.71:8888,但不能打开104.198.205.71:30125104.198.205.71:30927。我希望能够通过nodeports访问104.198.205.71,而不是通过端口。我的理解不正确吗?

共有1个答案

戚甫
2023-03-14

要通过NodePort访问您的应用程序,那么您需要访问您的节点ip和分配给您的NodePort。

kubectl get node -owide 

上面的命令将给出您的节点ip地址,您可以使用该地址通过NodePort访问应用程序,是的,外部ip:80将失败,因为该端口是用于容器内部而不是用于外部访问。

 类似资料:
  • 我正在尝试在minikube(Windows-10)上部署简单的spring boot REST服务。下面是我的配置 Docker文件 docker image运行良好,我能够运行该应用程序。 部署 服务 我无法使用< code > service-IP:node port/Uri < br > http://127 . 0 . 0 . 1:30008/hello访问restendpoint ht

  • 我正在尝试使用入口公开部署,其中DeamonSet具有hostNetwork=true,这将允许我跳过额外的负载平衡器层,并直接在Kubernetes外部节点IP上公开我的服务。很遗憾,我无法从外部网络访问入口控制器。 我在GCP上运行库伯内特斯版本1.11.16-gke.2。 我将刷新群集设置为: 我运行部署: 然后我创建服务: 和入口资源: 我获取节点外部IP: 检查入口是否正在运行: 然后尝

  • 我们正在GKE(谷歌kubernetes引擎)上运行一个API服务器。我们使用Google云endpoint和API密钥处理授权。我们将每个API密钥上的某些IP地址列为白名单。为了做到这一点,我们必须将负载平衡器转换为入口控制器,以公开我们的API服务器。IP白名单不适用于loadbalancer服务。现在,我们有一个类似以下内容的入口设置:

  • 我有一个在tomcat服务器上运行java后端的容器。我想对其进行配置,以便可以附加eclipse来调试代码。有很多文档,但有这么多不同和矛盾的答案,我找不到一个方法来做。 这是我当前的配置: DockerFile: 以及运行docker的命令: docker run-d-p 9090:8080 myApp 我应该添加什么以使我的应用程序可以被远程调试访问?

  • 我有一个LoadBalancer服务,它在群集外公开3300端口。我想打开一个新的端口用于内部通信,以便其他吊舱可以与此服务对话,但此端口不应暴露在集群外部。 基本上,通信如下所示:

  • 这是港口范围。我不确定这是否重要(我不确定DNAT和SNAT是否使用端口),但范围似乎远高于16K。 还有什么可能限制通过iptables/netfilter转发的并发连接的数量吗?