Servi
各节点的网段是一个网络【节点网络】,Service的网段是一个网络【集群网络】,Pod的网段是一个网络【Pod网络】;接入外部访问时,先到节点网络,然后由节点网络代理至集群网络,再由集群网络代理至Pod网络。
1、一个Pod内有多个容器,同一Pod内的容器间如何通信?
2、不同宿主机上的Docker容器如何通信?
3、K8S中各Pod之间如何通信?
如何防止地址冲突?
- 在每台宿主机上建立docker0桥时可以设置不同的网段,比如节点1设置172.17.1.x,节点2设置172.17.2.x,通过不同的网段来防止地址冲突。
4、Service与Pod之间如何通信?
- Service与Pod属于不同的网络,如何直接通信?
Service的地址为宿主机上的iptables规则上的地址,容器只需要把报文的目标地址指向网关【一般为docker0桥的地址】即可;每个宿主机上都得有相关的iptables或ipvs规则。
- 如果Pod发生改变了,Service如何知道?
靠标签选择器来反映
- Service如何改变所有节点上的iptables或ipvs规则呢?
每个Node节点上运行一个专门的组件,这个组件是每个Node节点上的守护进程,这个组件为kube-proxy;
注:以上网络方案在K8S本身是不提供的,而是依赖于第三方插件来实现;K8S通过CNI插件体系,来接入外部服务的网络解决方案,CNI:容器网络接口。目前K8S中用的最多的网络插件为flannel。

这下明白了
感谢,学习到了
学习了