在Kubernetes中,会为每一个pod分配一个IP地址,pod内的所有容器都共享这个pod的network namespace,彼此之间使用localhost通信。
那么pod内所有容器间的网络是如何实现的呢?
实际上每个pod中有一个网络容器(使用image gcr.io/google_containers/pause),该容器先与pod内所有用户容器被创建,并且拥有该pod的network namespace,pod的其他用户容器使用Docker的--net=container:<id>选项加入该网络容器的network namespace中,这样就实现了pod内部所有容器对network namespace的共享。
可以通过以下方式查看pod内所有容器的网络配置信息:
docker inspect <container-id> | grep NetworkMode