Kubernetes Nginx入口访问集群外而不使用服务

时间:2019-11-26 10:27:07

标签: kubernetes kubernetes-ingress nginx-ingress

很抱歉,如果以前已经回答过这个问题,但是我对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

1 个答案:

答案 0 :(得分:2)

我认为您错过了有关Nginx-ingress如何暴露于世界的really good article

我简短: 如果您使用的是hostNetwork: true,那么您将绕过kubernetes网络(kube-proxy)。简而言之,您绕过了容器和业务流程网络,而仅使用主机网络,那么带有nginx-ingress容器的节点将向世界开放端口80。

您还可以使用其他方法将nginx端口暴露给集群外部(节点端口,网络负载平衡器,例如MetalLB)。