Kubernetes本身并不提供网络功能,只是把网络接口开放出来,通过插件的形式实现。
##网络要解决的问题
既然Kubernetes中将容器的联网通过插件的方式来实现,那么该如何解决容器的联网问题呢?
如果在本地单台机器上运行docker容器的话会注意到所有容器都会处在docker0网桥自动分配的一个网络IP段内(172.17.0.1/16)。该值可以通过docker启动参数–bip来设置。这样所有本地的所有的容器都拥有了一个IP地址,而且还是在一个网段内彼此就可以互相通信了。
但是Kubernetes管理的是集群,Kubernetes中的网络要解决的核心问题就是每台主机的IP地址网段划分,以及单个容器的IP地址分配。
##需要解决的网络问题概括为:
- 保证每个Pod拥有一个集群内唯一的IP地址
- 保证不同节点的IP地址划分不会重复
- 保证跨节点的Pod可以互相通信
- 保证不同节点的Pod可以与跨节点的主机互相通信
- 保证Pod可以与service互相通信
- 保证Service与Service之间可以互相通信
- 保证外部可以与Service可以互相通信