Pause容器
pause容器,又叫Infra容器,是pod的基础容器,镜像体积只有几百KB左右,配置在kubelet中,主要的功能是使一个pod中多个容器的网络通信
Infra容器被创建后会初始化Network Namespace,之后其他容器就可以加入到Infra容器中共享Infra容器的网络了 ,因此如果一个pod中的两个容器A和B,那么关系如下:
1、A容器和B容器能够直接用localhost通信;
2、A容器和B容器可以看到网卡、IP与端口监听信息;
3、Pod只有一个IP地址,也就是该Pod的Network Namespace对应的IP地址(由Infra容器初始化并创建)。
4、K8s环境中的每个Pod有一个独立的IP地址(前提是地址足够用),并且此IP被当前Pod中所有容器在内部共享使用。
5、Pod删除后Infra容器随机被删除。其IP被回收。
Pause容器共享的Namespace
1、NET Namespace: Pod中的多个空器共享同一个网络命名空间。即使用相同的IP和端口信息
2、IPC Namespace: pod中的多个容器可以使用System V IPCak POSIX消息队列进行通信
3、UTS Namespace: pod中的多个容器共享一个主机名
MNT Namespace、PID Namespace、User Namespace未共享
总结:创建一个pod后。pause容器创建一个网络命名空间,此pod的容器共享这个网络命名空间。
init容器
Init容器的作用:
1、可以为业务容器提前准备好业务容器的运行环境,比如将业务容器需要的配置文件提前生成并放在指定位置、检查数据权限或完整性、软件版本等基础运行环境。。
2、可以在运行业务容器之前准备好需要的业务数据。比如从oss下载,或者从其它位置copy.
3、检查依赖的服务是否能访问
init容器的特点:
1、一个pod可以有多个业务容器还能有多个init容器,但是每个initl容器和业务容器的运行环境都是隔
离的。
2、intl容器比业务容器先启动
3、init容器运行成功后才会继续运行业务容器
4、如果一个pod有多个init容器。则需要从上到下逐个运行并且全部成功,最后才会运行业务容器。
5、init容器不支持探针检测(因为初始化完成后就退出再也不运行了)