繁体   English   中英

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

[英]What's the difference between pod and container from container runtime's perspective?

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

由于容器只是受namespaces, Cgroups eg Maybe,pod 只是 Kubelet 启动的第一个container ,容器的 rest 是由命名空间启动和分组的。

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

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

Pod 只是一组位于同一位置的容器和一个 Kubernetes object。 您可以部署一个pod of containers而不是单独部署它们。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM