ubuntu18.04安装flannel

ubuntu18.04安装flannelFlannel 配置详解简介 Flannel 是一种基于 overlay 网络的跨主机容器网络解决方案 也就是将 TCP 数据包封装在另一种网络包里面进行路由转发和通信 Flannel 是 CoreOS 开发 专门用于 docker 多机互联的一个工具 让集群中的不同节点主机创建的容器都具有全集群唯一的虚拟 ip 地址 Flannel 使用 go 语言编写 Flannel 实现原理 Flannel 为每个 host 分配一个 su

Flannel配置详解

  1. 简介
    Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信,Flannel是CoreOS开发,专门用于docker多机互联的一个工具,让集群中的不同节点主机创建的容器都具有全集群唯一的虚拟ip地址Flannel使用go语言编写

  2. Flannel实现原理
    Flannel为每个host分配一个subnet,容器从这个subnet中分配IP,这些IP可以在host间路由,容器间无需使用nat和端口映射即可实现跨主机通信

    报文通过veth pair被发送到vethXXX。

    vethXXX是直接连接到虚拟交换机docker0的,报文通过虚拟bridge docker0发送出去。

    查找路由表,外部容器ip的报文都会转发到flannel0虚拟网卡,这是一个P2P的虚拟网卡,然后报文就被转发到监听在另一端的flanneld。

    flanneld通过etcd维护了各个节点之间的路由表,把原来的报文UDP封装一层,通过配置的iface发送出去。

    报文通过主机之间的网络找到目标主机。

    报文继续往上,到传输层,交给监听在8285端口的flanneld程序处理。

    数据被解包,然后发送给flannel0虚拟网卡。

    查找路由表,发现对应容器的报文要交给docker0。

    docker0找到连到自己的容器,把报文发送过去。

  3. Flannel安装配置
    环境准备
    docker1 :10.10.10.141 docker flannel etcd
    docker2 :10.10.1.0142 docker flannel
    3.1安装etcd
    etcd下载地址:https://github.com/coreos/etcd/releases










    启动命令:

    etcd -name etcd1 -data-dir /var/lib/etcd --advertise-client-urls http://10.10.10.141:2379,http://127.0.0.1:2379 --listen-client-urls http://10.10.10.141:2379,http://127.0.0.1:2379 & 

    添加flannel网络配置信息到etcd:

    etcdctl –endpoints http://127.0.0.1:2379 set /coreos.com/network/config ‘{“Network”: “10.0.0.0/16”, “SubnetLen”: 24, “SubnetMin”: “10.0.1.0”,“SubnetMax”: “10.0.20.0”, “Backend”: {“Type”: “vxlan”}}’

    # systemctl daemon-reload # systemctl start flanneld 
# etcdctl ls /coreos.com/network/subnets /coreos.com/network/subnets/10.0.18.0-24 

查看docker1的flannel网卡信息:

38: flannel.1: 
  
    mtu 1450 qdisc noqueue state UNKNOWN group default link/ether 1a:8e:8b:09:d6:d4 brd ff:ff:ff:ff:ff:ff inet 10.0.18.0/32 scope global flannel.1 valid_lft forever preferred_lft forever inet6 fe80::188e:8bff:fe09:d6d4/64 scope link valid_lft forever preferred_lft forever 
  

在Flannel运行之后,会生成一个环境变量文件,包含了当前主机要使用flannel通讯的相关参数,如下:

# cat /run/flannel/subnet.env FLANNEL_NETWORK=10.0.0.0/16 FLANNEL_SUBNET=10.0.18.1/24 FLANNEL_MTU=1450 FLANNEL_IPMASQ=true 

可以使用flannel提供的脚本将subnet.env转写成Docker启动参数,创建好的启动参数默认生成在/run/docker_opts.env文件中:

# /opt/flannel/mk-docker-opts.sh -c # cat /run/docker_opts.env DOCKER_OPTS=" --bip=10.0.18.1/24 --ip-masq=false --mtu=1450" 

修改docker的服务启动文件如下:

# vim /lib/systemd/system/docker.service EnvironmentFile=/run/docker_opts.env ExecStart=/usr/bin/dockerd $DOCKER_OPTS -H fd:// 

重启docker:

systemctl daemon-reload systemctl restart docker 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216523.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:39
下一篇 2026年3月18日 上午11:40


相关推荐

  • java连接mysql数据库的步骤(访问数据库的步骤)

    Java连接MySQL数据库步骤声明,只推荐你看代码学会我的步骤,逻辑,还有用的所有方法第一,​ 安装mysql数据库配置(https://www.jianshu.com/p/ea4accd7afb4),安装还有配置教程,按照步骤来肯定没错,里面是win10的mysql解压版安装教程,设置账号密码是一定要注意:账号一般为root,密码一般为123456,如果你要更改的话一定要记住,因为…

    2022年4月15日
    151
  • FlashFXP 4.3.1 注册码

    FlashFXP 4.3.1 注册码FlashFXP4.3.1注册码——–start———FLASHFXPwQAOlhkgwQAAAAC6W5MNJwTnsl73nIraAU149tnCQS0hmZU3GGBQG1FtoSp5x0mUgA7bFW0qr0fKk2KCA+v2CCrFbF+qbmLvEjV+4JCAX+H/TBpG7pdEJ8IEW09ST8t60Poou/CTNhxGoz1Ww0ki…

    2022年7月26日
    14
  • php soapclient xml,PHP SoapClient请求

    php soapclient xml,PHP SoapClient请求我正在尝试使用 thisWSDL 将 SOAP 请求发送到新闻通讯服务 这是我的 PHP client newSoapClien wsdl url array login gt myusername password gt mypassword trace gt true client gt AddSubscribe newSoapParam

    2026年3月19日
    2
  • java分布式学习路线

    java分布式学习路线先理解为什么需要分布式,因为服务器处理的能力需要提升,这里有两个方面,第一是纵向也就是增加cpu的能力,或者加内存;另一个方向就是横向,就是分布式。将本来一台计算机的压力分给多太计算机,从而可以平均分布io,同时提升响应速度。建议先从分布式数据库看起,之后你可以用虚拟机,和本机进行测试分布式数据库。之后你可以使用java操作这种分布式数据库。从而依旧用虚拟机练习web项目…

    2022年6月6日
    101
  • H-ui前端框架

    H-ui前端框架

    2021年9月18日
    59
  • Java8新特性之Lambda表达式

    Java8新特性之Lambda表达式Lambda 目录前言一 Lambda 表达式有哪些语法 1 1 语法一 无参数 无返回值 1 2 语法二 有一个参数 并且无返回值 1 3 语法三 有两个以上的参数 有返回值 并且 Lambda 体中有多条语句 1 4 语法四 若 Lambda 体中只有一条语句 return 和大括号都可以省略不写 1 5 语法五 Lambda 表达式的参数列表的数据类型可以省略不写 因为 JVM 编译器通过上下文推断出 数据类型 即 类型推断 二 Lambda 表达式结构 三 函数式接口 3 1 在函数式接口上使用 lamb

    2026年1月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号