从容器运行时的角度来看,pod 和容器有什么区别?
What's the difference between pod and container from container runtime's perspective?
Kubernetes 文档将 pod 描述为围绕一个或多个容器的 wrapper
。 pod 的容器 运行 inside
共享一组名称空间(例如网络),这让我觉得 namespaces
是嵌套的(我有点怀疑)。从容器运行时的角度来看,这里的 wrapper
是什么?
因为容器只是受 namespaces, Cgroups
约束的进程,例如也许,pod 只是 Kubelet 启动的第一个 container
,其余的容器都是按命名空间启动和分组的。
主要区别在于网络,网络名称空间由同一 Pod 中的所有容器共享。可选地,进程 (pid) 命名空间也可以共享。这意味着同一个 Pod 中的容器都看到相同的 localhost
网络(否则它对其他所有东西都是隐藏的,就像本地主机的正常情况一样)并且可以选择向其他容器中的进程发送信号。
想法是 Pods 是一组相关的容器,并不是真正的包装器本身,而是一组无论出于何种原因都应该始终一起部署的容器。通常这是一个主容器,然后是一些提供支持服务(网状路由、日志收集等)的边车。
Pod 只是一组位于同一位置的容器和一个 Kubernetes 对象。
您可以部署 pod of containers
.
而不是单独部署它们
最佳实践是您实际上不应该 运行 通过单个容器进行多个进程,这就是 pod idea 的用武之地。因此,使用 运行ning pods,您将容器组合在一起并将它们编排为单个对象。
pod 中的容器 运行 具有相同的网络名称space(IP 地址和端口 space),因此您必须注意不要使用相同的端口 space 被两个进程使用。
这在文件系统方面有所不同,因为容器 fs 来自图像 fs。文件系统是隔离的,除非它们共享一个卷。
Kubernetes 文档将 pod 描述为围绕一个或多个容器的 wrapper
。 pod 的容器 运行 inside
共享一组名称空间(例如网络),这让我觉得 namespaces
是嵌套的(我有点怀疑)。从容器运行时的角度来看,这里的 wrapper
是什么?
因为容器只是受 namespaces, Cgroups
约束的进程,例如也许,pod 只是 Kubelet 启动的第一个 container
,其余的容器都是按命名空间启动和分组的。
主要区别在于网络,网络名称空间由同一 Pod 中的所有容器共享。可选地,进程 (pid) 命名空间也可以共享。这意味着同一个 Pod 中的容器都看到相同的 localhost
网络(否则它对其他所有东西都是隐藏的,就像本地主机的正常情况一样)并且可以选择向其他容器中的进程发送信号。
想法是 Pods 是一组相关的容器,并不是真正的包装器本身,而是一组无论出于何种原因都应该始终一起部署的容器。通常这是一个主容器,然后是一些提供支持服务(网状路由、日志收集等)的边车。
Pod 只是一组位于同一位置的容器和一个 Kubernetes 对象。
您可以部署 pod of containers
.
最佳实践是您实际上不应该 运行 通过单个容器进行多个进程,这就是 pod idea 的用武之地。因此,使用 运行ning pods,您将容器组合在一起并将它们编排为单个对象。
pod 中的容器 运行 具有相同的网络名称space(IP 地址和端口 space),因此您必须注意不要使用相同的端口 space 被两个进程使用。 这在文件系统方面有所不同,因为容器 fs 来自图像 fs。文件系统是隔离的,除非它们共享一个卷。