【问题标题】:How should a React + Node.js app be split into containers/pods for Kubernetes?应该如何将 React + Node.js 应用程序拆分为 Kubernetes 的容器/pod?
【发布时间】:2018-01-28 18:33:41
【问题描述】:

我读到一个 pod 通常只有 1 个容器。

这是否意味着我应该有 2 个 pod:1 个 React 和 1 个 Node.js?

如果我有一个像 nginx 这样的 Web 服务器在 React 前端运行呢?那么 React + nginx = 2 个容器 = 1 个 Frontend pod 和 1 个 Node.js pod?

【问题讨论】:

    标签: kubernetes containers kubernetes-pod


    【解决方案1】:

    “pod 通常只有 1 个容器”。不,这并不意味着您的应用程序应该有两个 Pod。您可以在一个 Pod 中使用两个 Container。

    每个 Pod 都分配有一个唯一的 IP 地址。 Pod 中的每个容器共享网络命名空间,包括 IP 地址和网络端口。 Pod 中的容器可以使用 localhost 相互通信。当 Pod 中的容器与 Pod 外的实体通信时,它们必须协调如何使用共享的网络资源(例如端口)。

    如果您需要共享相同的 Network 命名空间,则需要将它们保存在 Pod 中。

    另外,这取决于目的。如果它们实现相似的目的,您可以将多个进程组合​​在一起。如果一个应用程序需要在同一主机上运行多个进程,则可以使用多个容器。

    这篇博文解释了一些用例:www.mirantis.com/blog

    【讨论】:

    • 谢谢!所以听起来我需要 1 个 nginx 容器 + 1 个 React 容器 + 1 个 Node.js 容器 = 1 个 pod。
    【解决方案2】:

    Kubernetes 最小的部署单元是 Pod。有一些情况像

    • 前端和 NodeJs 总是一起扩展,你需要 3 个前端 3 个 nodejs 并且稍后你需要 4 个 nodejs 4 个前端。不建议这样做,但您可以将它们放在一个 pod 定义中
    • 基本上是两个不同的容器,并且在扩展时彼此不依赖,那么您应该将它们放在不同的 pod 定义中并将它们公开为服务。

    想想传统的数据库和前端系统。您是否在扩展前端系统的同时扩展底层数据库系统。因此,当涉及到多个容器的相同 pod 定义或不同 pod 定义时,我们应该考虑扩展和安全性。

    【讨论】:

      猜你喜欢
      • 2021-04-19
      • 2021-09-04
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多