kubernetes 中的 sidecar 与 init 容器

sidecar vs init container in kubernetes

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

感谢您的帮助。

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

初始化容器的例子是:

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

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

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

这里的区别在于,您的边车容器必须始终 运行。如果您的非初始化容器之一退出,kubernetes 将重启整个 pod。

这就是区别。

  • 初始化容器运行并在主应用程序启动前退出
  • Sidecars 运行 与您的主容器并排并为它们提供某种服务。