一个部署资源可以有多个容器吗?



我正在尝试在k8s中部署多个pod,例如MySQL,Mango,Redis等

是否可以为此创建单个部署资源并在模板部分中定义多个容器?这是允许的吗?如果是这样,在这种情况下复制将如何表现?

谢谢 帕万

我正在尝试在 k8s 中部署多个 pod,例如 MySQL、Mango、 雷迪斯等

微服务架构的角度来看,将所有这些容器放在一个Pod中实际上是一个相当糟糕的主意。请记住,Pod是一个最小的可部署单元,可以由Kubernetes创建和管理。您不希望将上述所有服务都放在一个Pod中有很多很好的理由。扩展此类解决方案的困难只是其中之一。

我是否可以为此创建单个部署资源并拥有多个 模板部分中定义的容器?这是允许的吗?如果是这样,如何 在这种情况下,复制会起作用吗?

不,在 Kubernetes 中是不允许的。至于部署StatefulSets(数据库等有状态应用程序需要它(都管理基于相同容器规范的 Pod,因此不可能拥有由不同类型的 Pod 组成的部署StatefulSet,基于不同的规范。

总结一下:许多用于不同目的的部署和 StatefulSet 对象是正确的解决方案。

一个部署内部可以有多个容器。

通常,它用于为应用提供一个主容器和应用所需的一些挎斗容器。我现在没有例子。

尽管如此,出于调用目的拆分部署仍然是最佳实践,根据缓存的不同,您的前端可能需要比后端扩展更多,并且您可能不希望 Pod 太大。对于像 redis 这样的计费目的,最好在侧面有一个集群,因为每次 pod 启动或停止时,您都会丢失数据。

每个 Pod 通常有多个容器,以便在它们之间共享命名空间和卷:以用于向外部呈现应用程序的大使模式为例,为身份验证添加一层,使其对主应用程序完全透明。

使用 sidecar 模式的其他示例包括日志解析器或配置器,这些解析器或配置器热重载凭据,而无需主应用程序担心它。

这就是理论,根据您的需求,您必须为每个组件使用一个部署,因此应用程序的部署,数据库的 StatefulSet 等等。请记住,每个进程使用一个容器,每个支持服务使用一个 Kubernetes 资源。

最新更新