我正在将Laravel项目从docker-compose格式迁移到Kubernetes。我正在研究很多在Kubernetes上运行该项目的方法,但我关心的是在Kubernetes上运行Laravel App和Laravel Queue Workers的正确方法。
在我目前的格式中,我在Laravel应用程序的docker-compose上有3个容器(不包括Redis和Mysql容器):
- PHP-FPM容器
- NGINX容器
- Supervisor容器(配置为使用我拥有的各种队列运行“queue:work”命令)所有这三个容器都与项目文件共享一个卷。
我已经看到,对于NGINX和PHP-FPM容器,我们可以用这两个容器配置一个pod,或者两个pod各配置一个容器(我不知道哪种解决方案最好)。我们在两者之间使用共享卷,当php-fpm容器启动时,我们将项目文件复制到共享卷,因为该卷仅在Docker构建阶段之后才可用(我不认为这是一个好的解决方案,但如果有必要,可以)。示例:https://matthewpalmer.net/kubernetes-app-developer/articles/php-fpm-nginx-kubernetes.html
我们应该为Laravel队列工作者做些什么?把主管的集装箱留着?
如果你有任何关于使用队列工作器运行Laravel应用程序的正确方法的提示或链接,请随时分享。
谢谢,大卫
1条答案
按热度按时间tf7tbtn21#
您可以尝试Ingress、Service和Pod架构。我不想在这里开太久。你可以从谷歌了解更多,如果你不熟悉这些。
您的Applicationpod和Supervisorpod应该不同。这意味着同一映像需要2个部署。所以这里不需要共享卷。
应用程序pod可以是2或3副本,无论您想要什么。
Supervisor pod可以是1空闲的情况,但是如果你想要更多的worker,那么你可以增加pod的副本,或者你可以设置kuberneteshpa。
以下是Supervisor pod部署的一些示例: