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,羣集中的其他任何端口都將監聽這些端口。