1 Star 0 Fork 1

zzx / 37-40

forked from 崔文俊 / quick 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Kubernetes的flannel网络.md 4.60 KB
一键复制 编辑 原始数据 按行查看 历史
崔文俊 提交于 2020-12-09 10:41 . update Kubernetes的flannel网络.md.

Flannel

是coreos公司设计的,功能是让集群中不同的机器上创建的POD都具备全集群唯一的虚拟IP地址,就好像是一个全局的DHCP服务一样。它还可以在这些IP地址之间创建一个所谓的Overlay网络,通过这个Overlay网络,可以将数据包传输到目标容器。

输入图片说明

跨主机的2个POD之间数据互通,比如10.1.15.2要和下面的10.1.20.3通讯,就要经过2台Node上的Flanneld进程进行代理,Flanneld会把数据包封装成UDP数据包,从192.168.66.11发送到192.168.66.12上面,66.12上面的flanneld进程收到数据包后,进行解包,发现数据是发往10.1.20.3的,它就会把数据从Flannel0网桥发给Docker0网桥,Docker0网桥就把数据发给了下图中最下面的一个IP地址是10.1.20.3/24的POD,整个流程就是这样的。这样就实现了所谓的跨主机的扁平化网络。

总得看起来,因为涉及到通过Flanneld进程进行UDP数据包的封包和解包,开销还是蛮大的。

输入图片说明 输入图片说明

Flannel和ETCD之间的关系

ETCD存储Flannel的数据,包括:可供分配的IP地址资源、监控ETCD中每个POD的实际地址,并在内存中建立维护POD节点路由表

K8S里面涉及到的几种IP地址的说明

安装,master和node节点上都必须安装flannel网络组件,这个组件的原理,源码是如何实现的,以后再说,现在先搞懂如何使用再说,

yum install flannel -y,一键安装,大概40多M的样子, 装好了以后,flannel也是要把数据存放在etcd里面的,所以配置一下让flannel知道如何去读写etcd数据库。

输入图片说明 输入图片说明

配置IP地址范围,供将来POD使用!很重要!

输入图片说明

上面的意思是设置一下网络IP地址的分配范围,给每个POD分配IP地址的时候就可以用了,下面的每个豌豆荚POD都会被分配一个IP地址,如果你在一台kubernetes的node上创建了5个POD,那么这5个POD每个都会分配一个IP地址,每个POD里面的容器的IP是一模一样的,是共享的,反正K8S操作的最小单元是POD,而不是容器,虽然你可以创建一个只包含1个容器的POD也是可以的。

输入图片说明

启动和设置开机启动

输入图片说明

查看flannel0网卡

输入图片说明

必须重启docker服务

输入图片说明

测试容器之间的互通性

怎么测试呢,既然这个flannel网络组件已经安装好了,那么我们就在3台主机上分别启动1个容器,然后看看容器之间能否互相ping通,注意我们做的测试是跨宿主机的容器互通,用busybox镜像来做测试。

注意看3个容器的IP地址,之前我们配置flannel的时候,往etcd里面写入的IP地址范围是 172.16.0.0/16,是一个B类网段地址,所以3个容器的IP都落在了里面。 不过安装了flannel以后,docker是怎么默认就用它来管理网络的呢,原理不太清楚,需要研究docker和flannel的关系。

输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhzx/37-40.git
git@gitee.com:zhzx/37-40.git
zhzx
37-40
37-40
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891