Kubernetes:单 POD 多容器,或多 Pod 单容器

标签 kubernetes microservices

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

我有这些微服务:

  • 认证
  • 授权
  • 服务内容
  • (加)OpenResty 将调用从一个转移到另一个并orhcestarate 流。 (是否有可能在 K8 中原生地这样做?,它似乎有基于 nginx+lua 的服务,但不确定它是如何工作的)

  • 为了这个例子,我避免使用 Databases 和 co,我假设它们是外部的,而不是由 kubernetes 管理

    现在,图像左侧或右侧的正确方法是什么?
    enter image description here

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

    RIGHT 似乎有点复杂,需要服务将每个 POD 暴露给其他 POD。然而,在这里,我可以根据需要复制身份验证,而无需复制其他容器。另一方面,我会有很多 pod,因为每个 pod 基本上都是一个容器。

    最佳答案

    通常建议将不同的服务保留在不同的 pod 中或更好的部署中,这些部署将独立扩展。原因是通常讨论的微服务架构的好处。

  • 更松散的耦合允许不同的服务以自己的语言/技术独立开发,
  • 独立部署和更新
  • 也可以独立扩展。

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

    关于Kubernetes:单 POD 多容器,或多 Pod 单容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142821/

    相关文章:

    amazon-web-services - 如何使用 AWS 云 Controller 管理器

    kubernetes - 如何使用 token 远程访问 Kubernetes 仪表板

    java - 当我在微服务后端之间发出请求时 SessionId 丢失

    c# - 在 PactNet 中验证类型

    spring - 以编程方式与 Eureka 客户端合作问题 - 已完成关闭 DiscoveryClient

    node.js - 在 NodeJs 微服务架构中,我应该为每个服务使用一个 package.json 吗?

    java - 如何使用 java 识别 kubernetes 中的终止 pod

    docker - Angular 6 + Nginx + Docker + Kubernetes : How to configure environment variables for different environments

    kubernetes - 看不懂kubernetes `When should you use a startup probe`的死锁场景?

    c# - 在 Task 上使用 akka.net PipeTo() 进行异常处理