LEMP Kubernetes

假设我们不想让这个例子复杂化,我们决定使用外部存储来存储数据库。 此外,代码,configuration文件等是泊坞窗图像的一部分。

我的问题是,根据经验,好的做法和易用性。 你们用什么策略来部署nginx,php-fpm stack?

我有三个select:

  • 创build一个你有两个进程的Dockerfile,然后创build一个容器运行的容器。 这将打破每个容器一个进程的原则。

  • 创build一个包含两个容器的容器,每个容器包含一个进程。 我在网上发现了一些意见,例如:

pod概念的主要动机是在应用程序容器旁边支持协同定位的,共同pipe理的辅助容器。 这些包括:logging或监视代理,备份工具,数据更改观察者,事件发布者,代理等等。

  • 创build不同的豆荚,一个使用运行nginx的容器,另一个使用运行php-fpm的容器。 这可能会使事情复杂化,可能是?

如果你们能根据你们的经验对此进行说明,并讨论哪些因为不同的原因更有意义,那将是非常好的。

谢谢大家!

在其中提供全面服务的多容器吊舱工作起来最简单,并且与devise原则最为贴合,但是还有一个不足之处就是整个吊舱的尺寸缩小。 这可能是麻烦的情况下,例如nginx使用非常less的CPU相比,PHP进程:

  • nginx仍然需要大量的CPU才能做出快速的响应,但是随着时间的推移,分配的CPU只占用很less的CPU。

因此,如果您的stream程在资源使用上非常不平衡,那么在您的问题中使用单个容器选项中的多个stream程/程序勾画使用分离方法的选项通常更容易实现自动缩放或资源pipe理。

多进程容器是避免的,因为它违背了devise原则(不易弯曲,库问题可能仍然存在),但有时可能是不可避免的。 例如,您需要logging旋转文件,并且容器中的进程必须意识到这一点,然后运行一个cron,并且该容器中的另一个进程是非常必要的。 所以如果你的应用程序和/或资源pipe理需要它,只能去多进程容器,否则远离它:)