阿里云 K8S 集群网络目前有两种方案,一种是 flannel 方案,另外一种是基于calico 和弹性网卡 eni 的 terway 方案。Terway 和 flannel 类似,不同的地方在于, terway 支持 Pod 弹性网卡,以及 NetworkPolicy 功能。图片.png配置分三种情况来理解:集群配置,节点配置 以及 Pod 配置。
    与这三种情况对应的,其实是对集群网络 IP 段的三次划分:首先是集群 CIDR,接着为每个节点分配 podCIDR(即集群 CIDR 的子网段),最后在 podCIDR 里为每个 Pod 分配自己的 IP。
    图片.png图片.png

    pod可以完成四种通信:
    本地通信:pod内网容器之间共享一个网络协议栈,可以通过loopback通信
    同节点pod通信:通过cni0虚拟网桥内部通信,相当于二层局域网内部设备通信
    跨节点pod通信:A pod发送端数据包,通过cni0网桥网关,流转到节点,经过节点的eth0发送给vpc路由,这时 会查询路由表,这时会查询路由表,确认数据包目的地址,并把数据包发送给对应的ECS节点。到达目的节点后,再通过cni0路由进入目的pod
    pod与非pod网络实体通信:经过节点上iptables规则做snat,此规则是flanneld依据命令行—ip-masq选项做的配置