gce nginix-ingress类型NodePort和端口:80连接被拒绝

时间:2017-09-23 19:56:47

标签: nginx kubernetes google-cloud-platform google-kubernetes-engine google-compute-engine

在我的gce kube-cluster中,我使用nginx入口控制器而不是谷歌负载均衡器,使用" nginx-ingress"使用NodePort而不是类型LoadBalance,如下所示:

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

由于nginx-controller部署为" conroller.service.type = NodePort",nodePorts被打开/分配(kubect get svc),也得到了外部ip 104.196.xxx.xxx。 此时,nginx-ingress-controller正在kube-cluster中运行,并在控制台"网络/负载均衡"中得到确认。没有创建云负载均衡器。

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

在此之后,在控制台&#34;网络/防火墙&#34;中创建了一个新的防火墙规则。允许节点端口&#34; tcp:31181; tcp:31462&#34;。 现在使用浏览器/ curl来达到&#34; http://104.196.xxx.xxx:31181&#34;或&#34; https://104.196.xxx.xxx:31462&#34;得到ngnix控制器的响应。工作得很好。

但是,通过端口80的端口访问不起作用。当我卷曲&#34; http://104.196.xxx.xxx:80&#34;时,请取消拒绝连接,如下所示:

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

请注意, 防火墙规则有&#34; default-allow-http&#34; for&#34; tcp:80&#34; ngnix-ingress版本= nginx-ingress-0.8.5 kube-server-version = Major:&#34; 1&#34;,Minor:&#34; 7&#34;,GitVersion:&#34; v1.7.5&#34;

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"}

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

THX。

1 个答案:

答案 0 :(得分:0)

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

考虑一下,如果Service alpha想要在端口80上侦听,并且Service beta想要侦听端口80,而没有该转换机制{{ 1}}和alpha不能同时存在于群集中。这两个端口(31181为80,31462为443)分配给beta - 只要声明Service,群集中的其他任何内容都不会监听这些端口。