主流kubernetes网络方案上一小节我们知道单个pod的网络模型是容器网络模型的扩展,但是pod与pod之间的是怎么相互通信的呢?这其实与容器之间相互通信非常类似,也分为同一个主机上的pod之间与跨主机的pod之间两种 。
如容器网络模型一样,对于统一主机上的pod之间,通过docker0网桥设备直接二层(数据链路层)网络上通过mac地址直接通信:
文章插图
而跨主机的pod之间的相互通信也主要有以下两个思路:
- 修改底层网络设备配置,加入容器网络IP地址的管理,修改路由器网关等,该方式主要和SDN(Software define networking)结合 。
- 完全不修改底层网络设备配置,复用原有的underlay平面网络,解决容器跨主机通信,主要有如下两种方式:隧道传输(Overlay): 将容器的数据包封装到原主机网络的三层或者四层数据包中,然后使用主机网络的IP或者TCP/UDP传输到目标主机,目标主机拆包后再转发给目标容器 。Overlay隧道传输常见方案包括Vxlan、ipip等,目前使用Overlay隧道传输技术的主流容器网络有Flannel等;
文章插图
- 修改主机路由:把容器网络加到主机路由表中,把主机网络设备当作容器网关,通过路由规则转发到指定的主机,实现容器的三层互通 。目前通过路由技术实现容器跨主机通信的网络如Flannel host-gw、Calico等;
文章插图
下面简单介绍几种主流的方案:
- Flannel是目前使用最为普遍的方案,提供了多种网络backend,它支持多种数据路径,也适合于overlay/underlay等多种场景 。对于overlay的数据包封装,可以使用用户态的UDP,内核态的Vxlan(性能相对较好),甚至在集群规模不大,且处于同一个二层域时可以采用host-gw的方式修改主机路由表;
- Weave工作模式与Flannel很相似的,它最早只提供了UDP(称为sleeve模式)的网络方式,后来又加上了fastpass方式(基于VxLAN),不过Weave消除了Flannel中用来存储网络地址的额外组件,自己集成了高可用的数据存储功能;
- Calico主要是采用了修改主机路由,节点之间采用BGP的协议去进行路由的同步 。但是现实中的网络并不总是支持BGP路由的,因此Calico也支持内核中的IPIP模式,使用overlay的方式来传输数据;
| A | Overlay-Network | Host-RouteTable | NetworkPolicy Support | Decentralized IP Allocation | | – | — | — | — | — | | Flannel | UDP/VXLAN | Host-GW | N | N | | Weave | UDP/VXLAN | N/A | Y | Y | | Calico | IPIP | BGP | Y | N |
策略控制(Network Policy)Network Policy)是Kubernetes提供的基于策略的网络控制,用于隔离应用并提高安全性 。它使用Kubernetes中常用的标签选择器模拟传统的分段网络,并通过策略控制它们之间的东西流量以及与外部交流的南北流量 。
Note: 确保使用的网络插件支持策略控制(Network Policy),比如Flannel就没有实现Network Policy;下面的例子是配置一个典型的Network Policy的实例:
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: test-network-policynamespace: defaultspec:podSelector:matchLabels:role: dbpolicyTypes:- Ingress- Egressingress:- from:- ipBlock:cidr: 172.17.0.0/16except:- 172.17.1.0/24- namespaceSelector:matchLabels:project: myproject- podSelector:matchLabels:role: frontendports:- protocol: TCPport: 6379egress:- to:- ipBlock:cidr: 10.0.0.0/24ports:- protocol: TCPport: 5978
它使用标签选择器namespaceSelector与posSelector控制pod之间的流量,流量的行为模式主要由以下三个对象决定:- 控制对象:通过spec.podSelector筛选
- 流量方向:ingress控制入pod流量,egress控制出pod流量
- 流量特征:对端-IP-协议-端口
原文地址:https://morven.life/notes/networking-6-k8s-summary/
推荐阅读
- 电脑发送的信息是如何到达目的地的?简单了解下网络传输原理过程
- 立冬是什么意思,网络白茶是什么意思
- 单机游戏与网络游戏的区别有哪些
- Docker网络
- 交换机性能、网络带宽对监控画面有哪些影响?
- 每种机器学习算法都可以表示为神经网络
- 理解卷积神经网络中的自注意力机制
- php爬虫框架盘点
- 企业在做网络推广时会面临哪些困难
- 深入浅出神经网络的改进方法