当前位置: 首页 > 知识库问答 >
问题:

如何将nginx与Kubernetes(GKE)和googlehttps负载平衡器结合使用

卫骏
2023-03-14

我们利用入口创建HTTPS负载平衡器,直接转发到我们的(通常是nodejs)服务。然而,最近我们希望对NodeJ前面的流量进行更多的控制,而Google负载平衡器没有提供这种控制。

  • 标准化的自定义错误页面
  • 标准重写规则(例如将超文本传输协议重定向到https)
  • 将pod readinessProbes与负载均衡器健康检查解耦(因此当没有健康的pod时,我们仍然可以提供自定义错误页面)。

我们在堆栈的其他部分使用nginx,因此这似乎是一个不错的选择,我已经看到了几个nginx用于Kubernetes中前端服务的示例,通常是两种配置之一。

  • 每个pod中的nginx容器将流量直接转发到localhost上的应用程序

每种方法的优点/缺点是什么,我应该如何确定哪种方法最适合我们的用例?

共有2个答案

叶裕
2023-03-14

列出的要求之一是您希望将pod readinessProbes解耦,以便您可以提供自定义错误页面。如果您将nginx容器添加到每个pod,这是不可能的。然后当pod中的一个容器未能遵守活动/就绪探测时,pod将重新启动。就我个人而言,我也更喜欢尽可能多地解耦,以便您可以扩展独立pod,在需要时分配自定义机器类型,并且通过仅启动您真正需要的nginx实例量(主要是内存)来节省您的一些资源。

顾靖
2023-03-14

继Vincent H之后,我建议通过管道将Google HTTPS负载平衡器连接到nginx ingress控制器。

正如您所提到的,这可以独立扩展;有自己的健康检查;您可以标准化错误页面。

我们通过使用一个kubernetes来实现这一点。io/入口。类:“gce”ingress对象,该对象具有我们的nginx ingress控制器的默认后端。所有其他入口对象都用kubernetes注释。io/入口。课程:“nginx”。

我们正在使用此处记录的控制器:https://github.com/kubernetes/ingress/tree/master/controllers/nginx.具有自定义/etc/nginx/模板/nginx.tmpl,允许完全控制入口。

为了完全透明,我们还没有在nginx控制器中设置自定义错误页面,但是留档看起来很直接。

 类似资料:
  • 堆栈:Azure Kubernetes服务 NGINX Ingress Controller-https://github.com/Kubernetes/ingress-nginx AKS LoadBalancer Docker容器 我的目标是创建一个K8s集群,它将允许我在一个IP下使用多个POD,创建一个微服务架构。在使用了大量的教程和文档之后,我的EndGoal没有任何运气。我已经到了能够使

  • 有一个入口配置,比如 gke创建了nginx ingress负载平衡器,但也创建了另一个具有后端的负载平衡器,就像如果没有选择nginx,而是选择gcp作为ingress一样。 下面的屏幕截图以红色显示了两个意外的LB,蓝色显示了两个nginx ingress LB,分别用于我们的qa和prod env。 kubectl的输出获取服务 gcp gke服务视图中错误信息入口的屏幕截图 这是意料之中的

  • 通过GKE进入kubernetes,目前正在裸机上通过kubeadm进行尝试。 在以后的环境中,不需要任何特定的负载平衡器;通过使用nginx入口和入口,可以为www提供服务。 相反,在gke上,使用相同的nginx入口,或者使用gke提供的l7,最终总是得到一个计费负载平衡器。 这似乎不是最终需要的,原因是什么?

  • 试图自学如何使用库伯内特斯,但有一些问题。 我的下一步是尝试使用LoadBalancer类型的服务来访问nginx。 我建立了一个新的集群并部署了nginx映像。 然后,我为LoadBalancer设置服务 设置完成后,我尝试使用LoadBalancer入口(我在描述LoadBalancer服务时发现)访问nginx。我收到一个此页面无法工作的错误。 不太确定我哪里出错了。 kubectl获得sv

  • 我已经按照用户指南在库伯内特斯上实现了Traefik。这给了我一个入口控制器,我能够在80和8080上创建一个入口和traefik-ingress-service监听。 我还设置了“gce”入口: 这样做的目的是创建一个GCE负载平衡器,它终止我的TLS,并将所有请求转发给NodePort类型的traefik入口服务。 GCE负载平衡器需要进行健康检查。默认为路径“/”。我以为traefik有个“

  • 我已经在AWS EKS集群上部署了Ingress Nginx。入口控制器和服务作为组件部署。因此,为Ingress Nginx控制器提供了AWS网络负载平衡器 流量通过入口控制器终止的NLB和TLS。 我想做的是将AWS WAF与入口集成。AWS ALB有一种方法,但是否有方法集成上述配置的WAF?