0

在我的gubeube集群中,我使用nginx入口控制器而不是谷歌负载平衡器,通过使用带有NodePort的“nginx-ingress”而不是类型LoadBalance,如下所示:gce nginix入口类型节点端口和端口:80连接拒绝

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

由于部署为 “conroller.service.type = NodePort” nginx的控制器,该nodePorts被打开/分配(kubect得到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 

在此之后,创建在控制台新的防火墙规则 “联网/防火墙”,让节点端口 “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 

注意, 防火墙规则有 “默认允许-HTTP” 为 “TCP:80” ngnix-入口版本= nginx-进入-0.8.5 KUBE-服务器版本=专业: “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“工作正常?

Thx。

回答

0

当使用NodePort,如在NodePort documentation很清楚所描述的,将其转换,其中该Service将在节点本身使用高30000范围的Service端口号的随机(+/-)端口。在它的

认为,如果Servicealpha想监听端口80和Servicebeta想监听80端口,而没有转换机制alphabeta群集中在同一时间不可能存在。这两个端口(分别为31181为80,31462为443)分配给Service - 只要声明了Service,群集中的其他任何端口都将监听这些端口。