1,通讯方式,k8s网络模型是期望pod在一个直接连通的扁平的网络空间中。
从pod角度来看是所有pod都可以通过ip“直接”到达。直接加引号,下面会看到如何实现。
2,openstack中使用了ovs+trunk的方式实现了扁平化网络,待会后面会对比k8s的实现方式,大同小异,都是报头跟udp。
3,同一个pod之间通过pause,用同一个网卡跟io可以直接访问。
4,pod跟service之间,主要通过ipTables规则,最新版本已经可以使用lvs。
5, 跨节点之间的pod之间的交互,首先在扁平化网络中,它们的ip是不能冲突的,因此全集群唯一。
6,跨主机的pod之间的通信,进行了一层封装,docker内部甚至不感知,主要是分为innerIP和outerIP通过upd的方式在局域网里广播。
7,ETCD中存储了IP映射信息,还有就是docker中不会存数据,全部存在etcd中,因此一个pod挂了也没事,让另外一个执行就好了。
8,总结:同个pod内,共享网络命名空间;
pod1->pod2使用inner和outer加报头形式转发,
pod到service主要是iptables,最新的使用了lvs。
pod访问外网:路由等
外网访问pod:service
9,可参加下以下博文
https://www.cnblogs.com/yaohong/archive/2019/09/08/11478749.html
10,pod不稳定因此引入了service的概念,然后label来查找pod。