当我浏览Docker/Kubernetes教程时,我注意到很多人将nginx放入pod中。
即使在读了nginx之后,我也不确定他们用它做什么。Kubernetes不是服务于你的应用程序并处理负载均衡之类的事情吗?
不是像Node.js这样的"web服务器“可以”服务静态资产、进行缓存和TLS/SSL“吗?
所以在Kubernetes上使用你的Node.js应用程序,你的应用程序被服务,静态资产,缓存,特别是Redis,负载平衡等等,为什么是nginx呢?
发布于 2017-07-22 03:36:58
Kubernetes正在对应用程序的请求进行负载均衡。现在由你决定是直接公开你的应用程序,还是在它前面使用一个WebServer。
把Nginx放在前面可以让你拥有访问日志,错误日志,缓存,服务静态文件等内容……在某些情况下,您可能希望直接公开您的应用程序(这通常是在GoLang中构建应用程序时的情况)
因此,Nginx不是pod中必须的,但它取决于您的架构设计是否需要它。
发布于 2017-07-22 09:53:41
人们在Pod中运行Nginx实例可能有几个原因。最常见的用例是为静态资产提供服务。为此,Apache或lighttpd也将扮演相同的角色。如果不看教程,我就不能阐明Nginx扮演的角色。
既然你提到了“教程”,我怀疑它只是为了提供一个静态页面来说“嘿,我来了!你已经成功地部署了一些可以工作的东西”。
回答你关于k8s处理负载均衡的问题--它确实是这样的。服务对象执行第3层(即IP层)相关联的pods之间的负载平衡,而Ingress对象执行相同的操作,但在第7层(例如,HTTP)。这种负载平衡是在集群范围内进行的。
总而言之,教程中的Nginx可能只是为了服务于静态资产,以及k8s在整个集群范围内的负载均衡。
发布于 2017-07-22 02:52:04
nginx是web服务器,如apache http服务器或tomcat web服务器。与其他size服务器相比,nginx docker镜像的尺寸较小。下载和启动less服务器所需的时间会更短。这就是为什么每个人都会在容器的学习阶段使用它。
Kubernetes用于管理容器化的应用程序,如nginx、mysql和tomcat等。
https://stackoverflow.com/questions/45242918
复制相似问题