2

Kubernetes 文档将 pod 描述为wrapper一个或多个容器。运行insidepod 的容器共享一组命名空间(例如网络),这让我觉得namespaces是嵌套的(我有点怀疑)。wrapper从容器运行时的角度来看,这里是什么?

由于容器只是受namespaces, Cgroups例如 Maybe 约束的进程,因此 Pod 只是containerKubelet 启动的第一个容器,其余容器由命名空间启动和分组。

4

2 回答 2

4

主要区别在于网络,网络命名空间由同一个 Pod 中的所有容器共享。可选地,进程 (pid) 命名空间也可以共享。这意味着同一个 Pod 中的容器都可以看到同一个localhost网络(否则它会被其他所有东西隐藏起来,就像 localhost 一样),并且可以选择向其他容器中的进程发送信号。

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

于 2021-06-14T07:54:21.563 回答
0

Pod 只是一组位于同一位置的容器和一个 Kubernetes 对象。您可以部署一个pod of containers.

最佳实践是,您实际上不应该通过单个容器运行多个进程,这就是 pod 想法出现的地方。因此,通过运行 pod,您可以将容器组合在一起并将它们编排为单个对象。

pod 中的容器运行相同的网络命名空间(IP 地址和端口空间),因此您必须小心不要让两个进程使用相同的端口空间。例如,当涉及到文件系统时,这会有所不同,因为容器 fs 来自映像 fs。文件系统是隔离的,除非它们共享一个卷。

于 2021-06-14T09:33:20.453 回答