Kubernetes: Internal: Pod

19th June 2021 at 10:51am

Pause Container

每个 pod 中都会运行一个 pause container(node 上 docker ps 可见),代码 很简单,就是执行 pause() 使进程暂停等待信号。它的功能有两个:

  • 保持这个 pod 中的各 namespace:在创建 pod 时,kubelet 会先创建 pause 容器,使其使用新的 ns;后面创建 pod 定义中的其他容器,会使这些容器使用 pause 容器中的 ns。这样的好处是,pod 定义中的容器如果挂掉,重启后还是用的挂之前同一套 ns。如果 pause 容器也被杀掉,kubelet 会重新创建整个 pod。
  • 如果启用了 pid namespace,pause 进程会作为 pid 1,回收挂掉的其他进程

它也被称为 the infrastructure container。

Inter-pod Networking (Pod 间网络通信)

这块有点难。看看这些概念或组件:

  • CNI
  • Calico