【问题标题】:Advantage of Pod Over ContainersPod 相对于容器的优势
【发布时间】:2020-05-24 04:37:51
【问题描述】:

我已经阅读了很多 kubernetes 文档,但无法得到答案。在 Kubernetes 架构中,基本组件是 pod。为什么它在容器之上做了一个抽象层来创建一个 Pod 并对其进行管理,而不是直接管理容器。 Kubernetes 通过管理 pod 而不是容器获得的主要优势是什么。

容器上的包装器的任务是什么?

【问题讨论】:

    标签: kubernetes containers


    【解决方案1】:

    我认为在官方文档Understanding pod 中有一个很好的描述

    Kubernetes 集群中的 Pod 主要有两种使用方式:

    运行单个容器的 Pod。 “每个 Pod 一个容器”模型是最常见的 Kubernetes 用例;在这种情况下,您可以将 Pod 视为单个容器的包装器,Kubernetes 管理 Pod 而不是直接管理容器。

    运行多个需要协同工作的容器的 Pods。 Pod 可能封装了一个应用程序,该应用程序由多个位于同一位置的容器组成,这些容器紧密耦合并需要共享资源。这些位于同一位置的容器可能形成一个单一的内聚服务单元——一个容器从共享卷向公众提供文件,而一个单独的“sidecar”容器刷新或更新这些文件。 Pod 将这些容器和存储资源包装在一起,作为一个可管理的实体。

    如果您想到 运行单个容器的 Pods,那么您可能会认为维护容器更合理,但在第二种情况下,运行多个需要协同工作的容器的 Pods 可能会面临更多的复杂性

    【讨论】:

    • 谢谢。我读到了这篇文章,并想知道“运行单个容器的 Pod”的原因。在这种情况下,包装器做了什么额外的事情。包装器的任务是什么。
    • 你运行一个带有单个容器的 pod,将来你想设置一些与容器服务直接无关的额外功能,但是添加 sidecar,比如一个代理来帮助管理流量和终止 TLS,一个容器流式传输日志和指标,或扫描安全问题的容器。您可以通过将 as sidecar 注入到 pod 中轻松地做到这一点。只限制单个容器是不可能的
    【解决方案2】:

    一个 pod 的容器总是在一起的,它们可以使用 loopback 接口进行通信。 Pod 允许您将紧密耦合的组件作为单独的容器部署在一起。例如,您可以捆绑应用程序和该应用程序的代理,将加密层添加到一起,以便加密流量进出应用程序,而无需修改应用程序容器。

    【讨论】:

    • 谢谢,但是在普遍接受的概念中,一个 pod 有一个容器,所以上面的推理没有多大帮助。所以如果说 kubernetes 要求一个容器中有一个容器,我们不需要 pod 并且可以使用容器直接
    • @SnehasishDas 在很多情况下,一个 pod 有多个容器。 IE 将传出请求代理到云数据库。 Pod 和容器不是可以互换的想法,因此您不能选择其中一个
    • 在某些情况下,您需要在一个 pod 中使用多个容器。我曾经做过一个项目,我们必须通过 tls 连接服务。由于我们无法修改在 pod 中运行的应用程序,因此我们在这些 pod 中添加了额外的容器以添加 tls 隧道。如果 pod 不支持多个容器,则不能这样做。
    • @SnehasishDas,像 istio 这样的东西通过向 pod 注入额外的容器来工作。
    最近更新 更多