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

gce nginix入口类型节点端口和端口:80连接被拒绝

夏侯兴学
2023-03-14

在我的gce库贝集群中,我使用nginx入口控制器而不是谷歌负载html" target="_blank">均衡器,通过使用“nginx-ingress”与NodePort而不是输入LoadBalance,如下所示:

helm install --name my-lb stable/nginx-ingress --set controller.service.type=NodePort

由于nginx控制器部署为“conroll.service.type=NodePort”,节点被打开/分配(kubect get svc),也获得了外部ip 104.196。xxx。xxx。此时,nginx ingress controller正在kube集群中运行,并在控制台“网络/负载平衡”中确认没有创建云负载平衡器。

kubectl get svc
NAME                                  CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
my-lb-nginx-ingress-controller        10.39.249.242   <nodes>       80:31181/TCP,443:31462/TCP   15h
my-lb-nginx-ingress-default-backend   10.39.246.94    <none>        80/TCP                       15h

在此之后,在控制台“networking/firewall”中创建了一个新的防火墙规则,以允许节点端口“tcp:31181;tcp:31462”。现在使用浏览器/卷曲来达到“http://104.196.xxx.xxx:31181“或”https://104.196.xxx.xxx:31462“从ngnix控制器获取响应..工作正常。

但是,通过端口80的端口访问不起作用。当我卷曲时“http://104.196.xxx.xxx:80“,返回连接被拒绝,如下所示:

* connect to 104.196.xxx.xxx port 80 failed: Connection refused

注意,防火墙规则有"默认允许超文本传输协议"为"tcp: 80"ngnix-ingress version=nginx-ingres-0.8.5库贝-server-version=主要:"1",次要:"7", GitVersion:"v1.7.5"

helm ls
NAME        REVISION    UPDATED                     STATUS      CHART               NAMESPACE
my-lb       1           Fri Sep 22 23:05:30 2017    DEPLOYED    nginx-ingress-0.8.5 default  


kubectl version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"2017-01-12T04:57:25Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.5", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-08-31T08:56:23Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

知道为什么“https://104.196.xxx.xxx:80”得到“端口80:连接被拒绝”,而“https://104.196.xxx.xxx:31462”工作正常吗?

谢谢。

共有1个答案

郑浩博
2023-03-14

当使用NodePort时,正如NodePort留档中非常清楚地描述的那样,它将Service端口号转换为高30,000范围内的随机( /-)端口,Service将在节点本身使用。

考虑一下,如果Servicealpha想要监听端口80,并且Servicebeta想要监听端口80,如果没有翻译机制alphabeta不能同时存在于集群中。这两个端口(31181代表80,31462代表443)被分配给Service——只要声明了Service集群中的任何其他端口都不会监听这些端口。

 类似资料:
  • 我连接到MySQL(5.1.6)数据库从Linux默认的3306端口和一切都很好: 现在,我进入/etc/mysql/my。cnf并将默认端口更改为3307(包括[client]和[mysqld])重新启动MySQL,调整hibernate连接url: 然后重启jboss。这一次我再也无法连接: 知道mysql拒绝连接的原因吗?没有更改其他配置。。但MySQL是默认端口。也没有防火墙启动和运行。

  • 我想在伪分布式模式下设置一个hadoop-cluster来进行开发。由于端口9000上的连接被拒绝,尝试启动hadoop集群失败。 /etc/hosts: 但是在开始调用之后,日志文件中有以下几行: hadoop-pschmidt-datanode-zaphod.log 我还可以寻找什么来启动和运行我的hdfs。不要犹豫,要求进一步的日志和配置文件。 提前谢了。

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

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

  • 并打开端口localhost:80,看到docker入门页面。但是,我必须运行我的客户机的项目,它的端口也映射到localhost:80。因此,我无法在localhost:80上运行我客户的项目。除此之外,任何我随机打开docker然后切换到localhost:80的实例,它都会重定向到docker的入门教程。我想重置这个localhost:80端口,这样当我运行客户端的项目时,我可以将它们映射到