Kubernetes Pause pod

我们会发现在 kubernetes 中,有为数不少的 gcr.io/google_containers/pause-amd64 container;他们的大小都很小只有几百KB,同时entrypoint都为/pause
在这里插入图片描述

了解它是什么之前,先看看docker和pod之间的一个主要区别,pod是一组逻辑相关的docker container集合;我们已知 container 要职责单一,同时 pod 是逻辑相关的 container 的集合,pod内部的container共享相同的网络磁盘CPU内存等资源;

现在再来看看 pause 容器做了什么事儿

先看看它的源码

Dockerfile仅有四行:可以看到它的entrypoint就是 一个 pause 命令

FROM scratch
ARG ARCH
ADD bin/pause-${ARCH} /pause
ENTRYPOINT ["/pause"]

再来看看这个pause命令做了什么;

int main(int argc, char **argv) {
  //省略
  if (getpid() != 1)
    /* Not an error because pause sees use outside of infra containers. */
    fprintf(stderr, "Warning: pause should be the first process\n");
  //省略
  for (;;)
    pause();
  fprintf(stderr, "Error: infinite loop terminated\n");
  return 42;
}

首先验证并确保 pause 的 PID 为1;还有一些信号处理的操作;同时,一个无限 for 循环,再没做任何其他事情了…

从上面的源码可以看出来,pause容器首先扮演PID=1的进程,但其实最主要的作用是,设置network网络环境,下面的图片来源于网络, 可以看到pause容器作为第一个启动的容器,负责设置network,之后的启动的container都会加入到这个network之中
在这里插入图片描述

Pod一定会对应一个IP,这个IP就是 pause 容器启动,pause容器的IP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值