flannel 安装

sudo yum install kernel-headers golang gcc
yum install flannel

flannel 配置

在etcd中设置变量

etcdctl set /coreos.com/network/config '{ "Network": "172.17.0.0/16" }'

配置flannel

vi /etc/sysconfig/flanneld

# Flanneld configuration options

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD="http://10.1.99.13:2379,10.1.99.14:2379,10.1.99.15:2379" # etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_KEY="/coreos.com/network" # Any additional options that you want to pass
#FLANNEL_OPTIONS=""

重新启动flannel

systemctl daemon-reload flanneld

systemctl restart flanneld

flannel服务启动

flannel服务需要先于docker启动。flannel服务启动时主要做了以下几步的工作:

  • 从etcd中获取network的配置信息
  • 划分subnet,并在etcd中进行注册
  • 将子网信息记录到/run/flannel/subnet.env
cat /run/flannel/subnet.env
cat /run/flannel/subnet.env
FLANNEL_NETWORK=172.17.0.0/
FLANNEL_SUBNET=172.17.50.1/
FLANNEL_MTU=
FLANNEL_IPMASQ=false
  • 之后将会有一个脚本将subnet.env转写成一个docker的环境变量文件/run/flannel/docker
cat /run/flannel/docker
FLANNEL_NETWORK=172.17.0.0/
FLANNEL_SUBNET=172.17.50.1/
FLANNEL_MTU=
FLANNEL_IPMASQ=false
[root@v4 ~]# cat /run/flannel/docker
DOCKER_OPT_BIP="--bip=172.17.50.1/24"
DOCKER_OPT_IPMASQ="--ip-masq=true"
DOCKER_OPT_MTU="--mtu=1472"
DOCKER_NETWORK_OPTIONS=" --bip=172.17.50.1/24 --ip-masq=true --mtu=1472 "

配置docker

systemctl show docker 将会发现 在安装flannel后自动生成配置

DropInPaths=/usr/lib/systemd/system/docker.service.d/flannel.conf

并引用/run/flannel/docker

故在docker的systemd文件中应用对应变量 DOCKER_NETWORK_OPTIONS 即可

vi /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock $DOCKER_NETWORK_OPTIONS

重新启动docker

systemctl daemon-reload

systemctl restart docker

测试

分别在两台节点上启动测试容器

docker run -d -it --name ip_test busybox

后网络互通,测试通过



Docker 网络 Flannel的更多相关文章

  1. docker使用flannel网络

    基础环境我们使用了两台centos 7系统 基础配置为: 两台机器IP为 172.17.3.10 172.17.3.62 hosts文件配置为 172.17.3.10 node1 172.17.3.6 ...

  2. Docker网络解决方案 - Flannel部署记录

    Docker跨主机容器间网络通信实现的工具有Pipework.Flannel.Weave.Open vSwitch(虚拟交换机).Calico, 其中Pipework.Weave.Flannel,三者 ...

  3. 一次Flannel和Docker网络不通定位问题

    一次Flannel和Docker网络不通定位问题    查看路由表的配置 路由表情况 [root@k8s-master ~]# route -n Kernel IP routing table Des ...

  4. Docker网络解决方案-Flannel(转)

    转自https://www.cnblogs.com/kevingrace/p/6859114.html Docker跨主机容器间网络通信实现的工具有Pipework.Flannel.Weave.Ope ...

  5. 安装docker跨主机网络flannel

    一.实验环境 机器 操作系统 安装服务 172.16.4.36 centos7 docker etcd flannel 172.16.4.37 centos7 docker etcd flanne ( ...

  6. 理解Docker(5):Docker 网络

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  7. docker网络配置方法总结

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  8. 【转】Docker网络详解及pipework源码解读与实践

    好文必转 原文地址: http://www.infoq.com/cn/articles/docker-network-and-pipework-open-source-explanation-prac ...

  9. docker with flannel

    ** 原创文章,请勿转载 ** docker的单host,多container环境下,是使用host的docker0网桥进行通信的.如果跨host, container之间要通信怎么办呢?答案是fla ...

随机推荐

  1. Java 多线程系列

    要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问. Java中的主要同步机制是关键字synchronized,它提供了一种独 ...

  2. 我的Pandas应用场景(2)

    上文交代了一些啰嗦事,本文开始,就要来点实际的了. 先来一个比较简单的场景: Given:一个包括N(极其复杂,这里取3个)个列的DataFrame:df,df包括index: And:对df所有列元 ...

  3. Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息

    Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...

  4. Python:Python学习总结

    Python:Python学习总结 背景 PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#.@.@@也好不到哪里(OO人员最该学习的一门语言). Pyth ...

  5. C语言栈与调用惯例

    C语言栈与调用惯例 1.前言 最近在再看<程序员的自我修养>这本书,对程序的链接.装载与库有了更深入的认识.关于这本书的评价可以去豆瓣看看http://book.douban.com/su ...

  6. 反向代理(Reverse Proxy)

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...

  7. window与linux互相拷贝文件

    借助 PSCP 命令可以实现文件的互拷: 1.下载pscp.exe 文件 (我的资源文件中有) http://download.csdn.net/detail/trassion/5689189 2.如 ...

  8. C++中#和##的特殊使用

    1.用#号将输入的内容转换为字符串. 用##号将两个参数合并. #include <iostream> using namespace std; //将输入的内容转换成字符串 #defin ...

  9. java获取登陆用户的IP地址

    /** * 通过HttpServletRequest返回IP地址 * @param request HttpServletRequest * @return ip String * @throws E ...

  10. iOS开发-内存管理

    内存管理 对于这篇呢,其实现在都是ARC模式,正常状态下基本不用我们去手动释放内存,所以如果不是要面试呀.装逼或者扎实功底的,就先别看了或者了解下即可,因为像面试时,有些面试官想看你的基础时,就有些人 ...