从容器运行时的角度来看,pod 和容器有什么区别?

The*_*fly 11 kubernetes containerd

Kubernetes 文档将 pod 描述为wrapper围绕一个或多个容器。inside运行Pod 的容器共享一组命名空间(例如网络),这让我认为namespaces它们是嵌套的(我对此表示怀疑)。wrapper从容器运行时的角度来看,这里是什么?

由于容器只是受namespaces, Cgroups例如也许,pod只是containerKubelet启动的第一个进程,其余容器启动并按名称空间分组。

cod*_*ger 13

主要区别在于网络,网络命名空间由同一 Pod 中的所有容器共享。或者,进程 (pid) 命名空间也可以共享。这意味着同一个 Pod 中的容器都看到相同的localhost网络(否则对其他所有网络都是隐藏的,就像本地主机的正常情况一样),并且可以选择向其他容器中的进程发送信号。

这个想法是 Pod 是一组相关的容器,本身并不是真正的包装器,而是一组无论出于何种原因都应该部署在一起的容器。通常这是一个主容器,然后是一些提供支持服务(网格路由、日志收集等)的 sidecar。

  • 您可以说网络命名空间附加到 Pod,各个容器“嵌套”在其中,但实际上并不是这样工作的。Pod 与容器主要是资源调度和分配问题,如果一个 pod 有 3 个容器,而节点只有 1 个容器,则该 pod 将不会被调度到该容器。在 Borg 中,它们实际上被称为“allocs”,这表明它们起源于分配器功能。 (2认同)