我清楚知道docker选项--net=container:NAME_or_ID
的用法,我也读过kubernetes的源代码,关于如何配置容器以使用InfraContainer
的网络,所以我认为只有在容器gcr.io/google_containers/pause:0.8.0
中处理过程才会“暂停”,它将永远不会执行任何复杂的工作,如“接收”,“发送”或“路由”。
但我不确定,因为我找不到Dockerfile
的{{1}},所以我需要有人清楚地告诉我真相,谢谢!
答案 0 :(得分:47)
在Kubernetes中,每个pod都有一个IP,并且在一个pod中存在一个所谓的基础架构容器,它是Kubelet实例化的第一个容器,它获取pod的IP并设置网络命名空间。然后,pod中的所有其他容器都加入infra容器的网络和IPC名称空间。 infra容器启用了网桥模式,并且pod中的所有其他容器通过容器模式共享其命名空间。在infra容器中运行的初始进程实际上没有任何效果,因为它的唯一目的是充当命名空间的主页。
答案 1 :(得分:36)
引自What is the role of 'pause' container?:
pause容器是一个容纳网络命名空间的容器 对于豆荚。它没有任何用处'。 (它实际上只是一点点 那些进入睡眠状态并且永远不会醒来的集会。
这意味着你的阿帕奇'容器可以死,然后回来 生活,所有的网络设置仍然存在。通常如果 网络命名空间中的最后一个进程将死于命名空间 销毁并创建一个新的apache容器需要创建 所有新的网络设置。暂停时,你总会拥有最后一个 命名空间中的东西。
答案 2 :(得分:21)