我有一个非常简单的docker-compose应用程序,带有nginx和php-fpm服务。
我想创建一个Helm图表,将部署这个完全相同的东西作为一个单位(一个POD我猜?),但我希望能够扩展php-fpm服务。
我怎样才能做到呢?
我的想法是将这些容器放在一个部署中,这样就不会有很多分散的部署。
即
App1:
- Container 1 (php-fpm autoscaled or manually scaled)
- Container 2 (nginx)
- Container 3 (Redis)
- Container 4 (something else that this app needs)
App2
- Container 1
- Container 2
- Container 3 etc...
我可以做不同的部署,但这样就像
app1_php-fpm
app1_nginx
app1_redis
app2_container1
app2_container2
app2_container3
而不是一个单独的吊舱。
2条答案
按热度按时间5gfr0r5j1#
“每个Pod一个容器”模型是最常见的Kubernetes用例;在本例中,您可以将Pod看作是单个容器的 Package 器;Kubernetes管理Pod,而不是直接管理容器。
Nginx和Redis应该作为独立的服务运行,这样它们就可以以解耦的方式独立于应用程序进行扩展。
Nginx可以反向代理多个应用程序,因此您不需要为每个应用程序设置单独的Nginx示例。
https://kubernetes.io/docs/concepts/workloads/pods/#using-pods
af7jpaap2#
最佳做法是将单个容器保留在pod中,但是我们也可以运行多个容器。
将Redis和Nginx容器作为单独的部署,您可以添加HPA,它们可以根据负载进行缩放。
通过保持部署的独立性,还有助于在需要时进行任何维护,或在不停机的情况下进行部署。
然而,如果你没有保留Nginx的选项,你也可以保留fpm容器,因为它也是一个轻量级容器。
例如,这里我有一个fpm和Nginx容器在单个POD中运行:https://github.com/harsh4870/Kubernetes-wordpress-php-fpm-nginx/blob/master/wordpress-deployment.yaml
如果可能的话,将所有应用划分为单个部署,使得管理部署以及维护和扩展也将非常容易。