7

我无法区分边车和初始化容器。到目前为止,我了解真正的应用程序容器等待 init 容器做某事。但是,sidecar 可以做同样的事情,不是吗?反之亦然,init 容器不会消失,因此也可以“在旁边”运行。因此,我的困惑。

谢谢您的帮助。

4

1 回答 1

17

Init-containers 用于初始化 Pod 中的某些内容。初始化容器将运行并退出。在每个以代码 0 退出的 init 容器之后,您的主容器将启动。

初始化容器的示例是:

  • 将一些文件移动到您的应用程序容器中,例如主题或配置。Kubernetes 文档中也描述了此示例。

Kubernetes 本身对 sidecar 一无所知。Sidecar-Containers 是一种解决某些用例的模式。通常,Kubernetes 会区分 Init-Container 和 Pod 内运行的容器。

通常,我们将 Sidecar 称为所有容器,它们不提供以用户为中心的服务。例如,这可能是一个代理或其他更容易访问数据库的东西。如果您正在运行 Java 应用程序,则可以使用 sidecar 以 Prometheus 格式导出 JVM 指标。

这里的区别在于,你的 sidecar-containers 必须一直运行。如果您的一个非初始化容器退出,kubernetes 将重新启动整个 pod。

这就是区别。

  • Init 容器在主应用程序启动之前运行并退出
  • Sidecar 与您的主容器并行运行,并为它们提供某种服务。
于 2020-11-15T08:15:30.067 回答