Pod:
Pod是一个逻辑概念,也就是说,K8s真正处理的还是宿主机操作系统上Linux容器的Namespace和Cgroups,并不存在所谓的Pod的边界或者隔离环境,
具体的说,Pod里的所有容器都共享一个Network Namespace,并且可以声明共享同一个Volume,具体做法是,Pod需要使用一个中间容器,叫做Infra容器。
这个Pod中 Infra容器永远是第一个被创建的容器,用户定义的其他容器则通过Join Network Namespace的方式与Infra容器关联再一起,这个Infra容器使用一个特殊的镜像k8s.gcr.io/pause 使用汇编语言编写的,永远处于暂停状态的容器,解压后也只有100-200kb,这么处理后,意味着:
1.同一个Pod中的容器可以直接使用localhost通信,他们看到的网络设备和Infra容器一样
2. 一个Pod只有一个IP地址,也就是这个Pod的Network namespace对应的Ip地址,当然其他所有网络资源都是一个Pod一份,然后pod中的所有容器共享,
3.Pod的生命周期也只跟Infra容器一致,
4. 对于同一个Pod里的所有用户容器来说,他们的进出流量也可以认为都是通过Infra容器完成的。