当我拥有Kubernetes时,nginx有什么意义?

时间:2017-07-21 16:54:29

标签: node.js nginx kubernetes

当我浏览Docker / Kubernetes教程时,我注意到很多人将nginx放入pod中。

即使在阅读了关于nginx的内容之后,我也不确定他们是在使用它。不是Kubernetes为您的应用程序提供服务并处理负载平衡和诸如此类的事情吗?

Node.js不是一个可以“提供静态资产,进行缓存和TLS / SSL”的“Web服务器”吗?

因此,使用Kubernetes上的Node.js应用程序,您可以提供应用程序,静态资产,特别是Redis等缓存,负载平衡等等,为什么nginx?

4 个答案:

答案 0 :(得分:4)

Kubernetes负责平衡对您应用的请求。现在,您是否要直接公开您的应用程序,或者想要在其前面使用WebServer,这取决于您。

将Nginx放在它前面可以让你有访问日志,错误日志,缓存,提供静态文件等等...有些情况下你可能希望直接暴露你的应用程序(这通常是这种情况)当你在GoLang中构建应用程序时

所以Nginx不是一个必须在pod中,但它取决于你的架构设计是否你想要它

答案 1 :(得分:2)

人们在Pod中运行Nginx实例可能有几个原因。最常见的用例是提供静态资产。为此,Apache或lighttpd也将扮演同样的角色。在没有看到教程的情况下,我无法阐明Nginx扮演的角色。

既然你提到过"教程",我怀疑它只是为了提供一个静态页面来说"嘿,我在这里!您已成功部署了可行的内容。"。

回答关于k8s处理负载平衡的问题 - 它确实如此。 Service对象在关联的pod之间执行Layer-3(即IP层)负载平衡,而Ingress对象在Layer-7(例如HTTP)上执行相同的操作。这种负载平衡是在集群范围内进行的。

总而言之,教程中的Nginx可能只是为了提供静态资产,而k8s是集群范围内的负载均衡。

答案 2 :(得分:1)

nginx是像apache http server或tomcat web server这样的webserver。 nginx docker图像与其他Web服务器相比尺寸较小。下载和启动Web服务器所需的时间更短。这就是为什么每个人都在容器的学习阶段使用它。

Kubernetes用于管理容器化的应用程序,如(nginx,mysql和tomcat等)。

答案 3 :(得分:0)

nginx将为您提供nginx.conf,您可以在其中添加其他设置和规则,例如速率限制,身份验证等,这些都在您的控制范围内。您可以使用aws和东西来实现它们,但是更好地控制有时会更好