本章讲解知识点
-
- Flannel 原理概述
-
- 直接路由的原理和部署示例
-
- Calico 插件原理概述
1. Flannel 原理概述
Flannel 是一个用于容器网络的开源解决方案,它使用了虚拟网络接口技术(如 VXLAN)和 etcd 存储来提供网络服务。它的原理概述如下:
- Flannel 协助 Kubernetes,给每一个 Node 上的 Dockers 容器都分配互不冲突的 IP 地址。
- 它能在这些 IP 之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内。
那么一条网络报文是怎么从一个容器发送到另外一个容器的呢?
- 容器直接使用目标容器的 ip 访问,默认通过容器内部的 eth0 发送出去。报文通过 veth pair 被发送到 vethXXX。
- vethXXX 是直接连接到虚拟交换机 docker0 的,报文通过虚拟 bridge docker0 发送出去。
- 查找路由表,外部容器 ip 的报文都会转发到 flannel0 虚拟网卡,这是一个 P2P 的虚拟网卡,然后报文就被转发到监听在另一端的 flanneld。
- flanneld