Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes:单荚多容器,或多荚单容器_Kubernetes_Microservices - Fatal编程技术网

Kubernetes:单荚多容器,或多荚单容器

Kubernetes:单荚多容器,或多荚单容器,kubernetes,microservices,Kubernetes,Microservices,我有一个理论上的问题,我无法用网上找到的答案来回答。问题是:决定如何在POD中组合容器的规则是什么?。让我举例说明 我有这些微服务: 认证 授权书 服务内容 (加上)OpenResty将一个调用转发到另一个调用,或建立流。(在K8中是否有可能以本机方式实现这一点?它似乎有基于nginx+lua的服务,但不确定它是如何工作的) 在本例中,我避免使用数据库和co,我假设它们是外部的,不由kubernetes管理 现在,正确的方法是在图像的左边还是右边? 左图:这似乎更容易让它工作,一切都在“本

我有一个理论上的问题,我无法用网上找到的答案来回答。问题是:决定如何在POD中组合容器的规则是什么?。让我举例说明

我有这些微服务:

  • 认证
  • 授权书
  • 服务内容
  • (加上)OpenResty将一个调用转发到另一个调用,或建立流。(在K8中是否有可能以本机方式实现这一点?它似乎有基于nginx+lua的服务,但不确定它是如何工作的)
在本例中,我避免使用数据库和co,我假设它们是外部的,不由kubernetes管理

现在,正确的方法是在图像的左边还是右边?

左图:这似乎更容易让它工作,一切都在“本地主机”上工作,缺点是它失去了一点微服务的好处。例如,如果身份验证变慢,需要更多实例,我必须复制整个pod,而不仅仅是该服务


右边看起来有点复杂,需要服务将每个吊舱暴露给其他吊舱。然而,在这里,我可以根据需要复制auth,而无需复制其他容器。另一方面,我会有很多豆荚,因为每个豆荚基本上都是一个容器。

右图,每个豆荚都在自己的豆荚中。pod中的多个容器实际上只应在它们高度耦合或需要支持主容器(如数据加载器)时使用


通过单独的POD,它允许独立地更新和部署每个服务。它还允许更有效的扩展。将来,您可能需要2或3个内容播客,但仍然只需要一个授权。如果它们都在一起,你可以将它们全部缩放,因为你没有选择将它们放在同一个豆荚中

右侧图像是更好的选择。更易于管理、升级和扩展。

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

通常建议将不同的服务保留在不同的POD中,或者更好的部署可以独立扩展。其原因通常被认为是微服务体系结构的好处

  • 更松散的耦合,允许不同的服务以各自的语言/技术独立开发

  • 独立部署和更新,并且

  • 也可以独立扩展

例外情况是被视为帮助“主应用程序”的“帮助程序应用程序”。k8s文档中给出的示例包括数据抽取器、数据推送器和代理。在这些情况下,通过环回网络接口的共享文件系统或exchange可以帮助解决关键性能用例。例如,数据抽取器可以是nginx容器的侧车容器,用于从GIT存储库中抽取网站以提供服务