很抱歉,如果以前已经回答过这个问题,但是我对Ingress Nginx正在与服务一起工作感到困惑。
我正在尝试在我的Kubernetes环境中实现nginx入口。 到目前为止,我有一个ingress-nginx-controller-deployment设置,以及默认后端的部署和服务。我仍然需要创建实际的Ingress资源,ingress-nginx-controller-service和后端。
curl <NodeIP>
在端口80上为部署了ingress-nginx-controller-deployment的节点返回"default backend 404"
。
但是,我的理解是,将任何东西暴露到集群之外都需要一项服务(Nodeport / Loadbalancer),这是ingress-nginx-controller-service的职责。
我的问题是,在群集的外部浏览器上,可以访问Node的端口80的可能性如何? 然后可以按照与上述相同的方式将后端应用程序部署在端口80上吗?
我觉得我对这里的一个关键概念误解了。
默认后端图片:gcr.io/google_containers/defaultbackend:1.0
nginx控制器图片:gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.3
答案 0 :(得分:2)
我认为您错过了有关Nginx-ingress如何暴露于世界的really good article!
我简短:
如果您使用的是hostNetwork: true
,那么您将绕过kubernetes网络(kube-proxy)。简而言之,您绕过了容器和业务流程网络,而仅使用主机网络,那么带有nginx-ingress容器的节点将向世界开放端口80。
您还可以使用其他方法将nginx端口暴露给集群外部(节点端口,网络负载平衡器,例如MetalLB)。