Pam*_*mpy 7 php nginx docker kubernetes
我们已经在我们的Kubernetes集群上托管了许多不同的应用程序 - 主要是基于Java的.
对于PHP-FPM + Nginx,我们的方法是,我们正在构建一个容器,其中包括PHP-FPM,Nginx和PHP应用程序源代码.但这实际上打破了每个容器一个进程的docker规则,因此我们正在思考如何改进它.我们试图通过使用具有多个容器的pod来替换它 - 一个nginx和一个PHP容器.
现在最大的问题是放置源代码的位置.我最初的想法是使用仅数据容器,我们将其安装到nginx和PHP-FPM容器中.问题是,有似乎没有办法做到这一点在Kubernetes 还.
我看到的唯一方法是创建一个sidecar容器,其中包含源代码并将其复制到emptyDir卷,该卷在pod中的容器之间共享.
我的问题:对于PHP-FPM + Nginx和Kubernetes上的数据容器是否有一个好方法,或者在Kubernetes上托管PHP的最佳做法是什么(可能仍然使用一个容器来处理所有内容)?
这是一个很好的问题,因为在多线程或事件驱动的服务应用程序和多进程服务应用程序之间的容器体系结构的大多数覆盖范围中都存在一个重要的区别.
多线程和事件驱动的服务应用程序能够通过单个进程同时处理多个服务请求.
多进程服务应用程序不是.
Kubernetes工作负载管理机制对于给定服务面临的实际请求并发级别是完全不可知的,因为不同的并发率本身对自动化工作负载大小调整或扩展没有任何影响.
然而,潜在的假设是,给定的部署单元 - 容器 - 能够同时处理多个请求.
几乎所有部署模型中的PHP都是多进程的.它需要多个进程才能在单个部署单元中处理并发请求.这些流程是由FPM还是由其他机制协调,这是一个实施细节.
因此,在单个容器中运行nginx + FPM + PHP是很好的,即使它不是单个进程.进程数本身并不重要 - Docker中实际上没有关于此的规则.支持并发的能力很重要.一个人希望在容器/ pod中部署最小系统以支持并发请求,而在PHP的情况下,通常将它们全部放在一个容器中是最简单的.
| 归档时间: |
|
| 查看次数: |
2844 次 |
| 最近记录: |