【问题标题】:Running multiple applications on Kubernetes. How to create the structure?在 Kubernetes 上运行多个应用程序。如何创建结构?
【发布时间】:2018-01-10 19:34:33
【问题描述】:

这更像是一个理论问题。你们如何创建运行多个应用程序的 Kubernetes 部署/服务/pod 的结构?

假设我想在我的服务器上运行 3 个 Wordpress 网站。为此我需要:Nginx、MySQL、PHP-FPM 和 Wordpress 代码库。

  1. 为 Nginx、MySQL、PHP-FPM 分拆独立的 pod/服务是否更好,它们将为所有 3 个 Wordpress 网站提供服务并为这 3 个网站创建 3 个 Wordpress pod/服务?

  2. 或者为每个网站创建一个单独的 Pod/服务更好,因此分组将是:

    • Pod1:Nginx、MySQL、PHP-FPM、Wordpress
    • Pod2:Nginx、MySQL、PHP-FPM、Wordpress
    • Pod3:Nginx、MySQL、PHP-FPM、Wordpress

使用选项 2,我需要以某种方式将特定网站流量路由到特定服务/pod

【问题讨论】:

    标签: deployment kubernetes kubernetes-helm


    【解决方案1】:

    Kubernetes 在您发现时非常灵活,并允许您以多种方式构建您的应用程序。作为一般经验法则,每个 pod 每个容器只运行一个进程。但是,在一个 pod 中运行多个容器肯定存在有效的用例。我认为对于您的用例,您可以同时使用这两种方法。

    让我尝试分解您的每个组件:

    MySQL
    我肯定会在它自己的 pod 中运行它。我会将它包装在 StatefulSet 中,并在其前面添加自己的 Service

    Nginx + Wordpress
    在我看来,你是否在一个或两个 pod 中运行这两个进程取决于你如何使用 tls,如果有的话。众所周知,Wordpress 非常容易受到攻击。因此,也许你的 Nginx 配置中有一些规则来限制对某些路径、方法等的访问。如果你在同一个 pod 中运行 Nginx 和 Wordpress,那么你只能公开 Nginx 端口,并且流量会到达 Wordpress 的唯一途径容器是如果它通过 Nginx。如果您将这些容器作为单独的 pod 运行,那么从安全的角度来看,您将需要一些其他方法来确保您的 Wordpress pod 的入站流量仅来自您的 Nginx pod。您可以使用 NetworkPolicy 资源来完成此操作,也可以在这两个 pod 之间使用双向 TLS。

    总之,在微服务架构中,您希望您的流程尽可能地解耦,以便可以单独管理和部署它们。因此,每个 Pod 每个容器的单个进程是有吸引力的。但是,有些实例要求您在每个 Pod 中运行多个容器。在我的示例中,我使用安全性作为这种动机。

    【讨论】:

    • 通过在单独的 pod/服务中运行 MySQL,这意味着该 MySQL 将用作所有 3 个 Wordpress 实例的数据库存储?
    • 这取决于您的设置方式。您可以在 MySQL 安装中使用 3 个不同的逻辑数据库。
    • 是的,3 个数据库,但在部署在独立 pod/服务上的同一个 mysql 服务器中?
    • 在我看来,在同一个 mysql 服务器上运行所有 3 个是完全可以的(所以只有一个 StatefulSet)。
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多