Kubernetes:一个 POD 多个容器,还是多个 Pod 单个容器?

6
我有一个理论问题,找不到在线资源来解答。问题是:如何决定如何组合POD中的容器?让我用一个例子来解释。
我有这些微服务: - 身份验证 - 授权 - 提供内容 - (加上)OpenResty将呼叫从一个微服务转发到另一个微服务,并编排流程。(在Kubernetes中本地进行此操作的可能性是否存在?似乎它具有基于nginx + lua的服务,但不确定如何工作)
为了举例,我避免使用数据库等内容,假设它们是外部的,不由kubernetes管理。
现在,在图像的左侧还是右侧哪里才是正确的方式? enter image description here < p > < em > LEFT :这似乎更容易使其工作,一切都在“localhost”上工作,缺点是它失去了微服务的一些好处。例如,如果认证变慢并且需要更多实例,则必须复制整个Pod而不仅仅是该服务。

RIGHT 稍微复杂一些,需要服务将每个POD公开给其他POD。然而,在这里,我可以根据需要复制auth而无需复制其他容器。另一方面,我会有很多Pod,因为每个Pod基本上都是一个容器。

4个回答

2
通常建议将不同的服务放在不同的pod中,或者更好的是在独立扩展的部署中。这样做的原因是通常被称为微服务架构的优势。
  • 更松散的耦合允许不同的服务使用自己的语言/技术进行独立开发,

  • 独立部署和更新,

  • 也可以独立扩展。

例外情况是被认为是“辅助应用程序”来帮助“主要应用程序”。k8s文档中给出的示例是数据拉取器、数据推送器和代理。在这些情况下,共享文件系统或通过环回网络接口交换可以帮助解决关键性能问题。例如,数据拉取器可以作为nginx容器的side-car容器,从GIT存储库中拉取网站以提供服务。

1

右侧图像,每个都在自己的 pod 中。当容器高度耦合或需要支持主容器(如数据加载器)时,应仅在一个 pod 中使用多个容器。

使用单独的 pod,可以独立更新和部署每个服务。它还允许更有效的扩展。将来,您可能需要2或3个内容 pod,但仍只有一个授权。如果它们全部在一起,您必须将它们全部缩放,因为它们全部在同一个 pod 中没有选择。


0

正确的图像是更好的选择。管理、升级和扩展都更加容易。


0
应该选择结构的右侧,因为部署左侧的架构模型是紧密耦合的,不利于根据实际业务需求扩展模块的能力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接