【问题标题】:What is the point of nginx when I have Kubernetes?当我拥有 Kubernetes 时,nginx 的意义何在?
【发布时间】:2017-12-27 19:34:50
【问题描述】:

在阅读 Docker/Kubernetes 教程时,我注意到很多人将 nginx 放入 pod。

即使在阅读了有关 nginx 的文章后,我也不确定他们使用它的目的是什么。 Kubernetes 不是为您的应用程序服务并处理负载平衡之类的事情吗?

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

因此,使用 Kubernetes 上的 Node.js 应用程序,您可以为应用程序提供服务、静态资产、缓存(尤其是 Redis 之类的东西)以及负载平衡等,为什么选择 nginx?

【问题讨论】:

    标签: node.js nginx kubernetes


    【解决方案1】:

    Kubernetes 正在对应用程序的请求进行负载平衡。现在由您决定是直接公开您的应用还是在其前面使用 WebServer。

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

    所以 Nginx 不是 Pod 中的必需品,但是否需要它取决于您的架构设计

    【讨论】:

    • “把Nginx放在前面”是什么意思?是不是说前端要用Nginx?
    • Nginx 是前面的意思不同。 Internet->Nginx->KBCluster->Services, Internet-KBCluster->Nginx->Services
    【解决方案2】:

    人们在 Pod 中运行 Nginx 实例可能有多种原因。最常见的用例是提供静态资产。为此,Apache 或 lighttpd 也将扮演同样的角色。没有看教程,我无法理解 Nginx 扮演什么角色。

    既然你提到了“教程”,我怀疑它只是为了提供一个静态页面说“嘿,我在这里!你已经成功部署了一些有用的东西。”。

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

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

    【讨论】:

      【解决方案3】:

      nginx 是类似于 apache http 服务器或 tomcat 网络服务器的网络服务器。与其他网络服务器相比,nginx docker 镜像体积较小。下载和启动网络服务器将花费更少的时间。这就是为什么每个人都在容器学习阶段使用它的原因。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-16
          • 1970-01-01
          • 2011-10-04
          • 2018-02-23
          相关资源
          最近更新 更多