Kubernetes nginx ingress 在不使用服务的情况下访问集群外部
Kubernetes nginx ingress accesses outside of cluster without using service
抱歉,如果之前已经回答过这个问题,但我对 Ingress Nginx 与服务一起工作感到有点困惑。
我正在尝试在我的 Kubernetes 环境中实施 nginx 入口。
到目前为止,我有一个 ingress-nginx-controller-deployment 设置,以及默认后端的部署和服务。我仍然需要创建我的实际 Ingress 资源、ingress-nginx-controller-service 以及我的后端。
curl <NodeIP>
returns "default backend 404"
在部署了 ingress-nginx-controller-deployment 的节点的端口 80 上。
然而,我的理解是,从集群中暴露任何东西都需要一个服务(Nodeport/Loadbalancer),这是 ingress-nginx-controller-service 的职责。
我的问题是这怎么可能,我可以在我的浏览器上访问我的节点的端口 80,这是 在 集群之外?
然后我可以像上面那样在端口 80 上部署我的后端应用程序吗?
我觉得我误解了这里的一个关键概念。
默认后端图像:gcr.io/google_containers/defaultbackend:1.0
nginx 控制器图像:gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.3
我想你错过了 really good article 关于 nginx-ingress 如何暴露给世界的内容!
我做空:
如果你使用的是 hostNetwork: true
那么你就绕过了 kubernetes 网络(kube-proxy)。简而言之,您绕过容器和编排网络,仅使用主机网络,然后带有 nginx-ingress 容器的节点将向世界公开端口 80。
您可以使用其他方法将 nginx 端口暴露给集群外部(节点端口、网络负载平衡器,如 MetalLB)。
抱歉,如果之前已经回答过这个问题,但我对 Ingress Nginx 与服务一起工作感到有点困惑。
我正在尝试在我的 Kubernetes 环境中实施 nginx 入口。 到目前为止,我有一个 ingress-nginx-controller-deployment 设置,以及默认后端的部署和服务。我仍然需要创建我的实际 Ingress 资源、ingress-nginx-controller-service 以及我的后端。
curl <NodeIP>
returns "default backend 404"
在部署了 ingress-nginx-controller-deployment 的节点的端口 80 上。
然而,我的理解是,从集群中暴露任何东西都需要一个服务(Nodeport/Loadbalancer),这是 ingress-nginx-controller-service 的职责。
我的问题是这怎么可能,我可以在我的浏览器上访问我的节点的端口 80,这是 在 集群之外? 然后我可以像上面那样在端口 80 上部署我的后端应用程序吗?
我觉得我误解了这里的一个关键概念。
默认后端图像:gcr.io/google_containers/defaultbackend:1.0
nginx 控制器图像:gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.3
我想你错过了 really good article 关于 nginx-ingress 如何暴露给世界的内容!
我做空:
如果你使用的是 hostNetwork: true
那么你就绕过了 kubernetes 网络(kube-proxy)。简而言之,您绕过容器和编排网络,仅使用主机网络,然后带有 nginx-ingress 容器的节点将向世界公开端口 80。
您可以使用其他方法将 nginx 端口暴露给集群外部(节点端口、网络负载平衡器,如 MetalLB)。