基础环境我们使用了两台centos 7系统

基础配置为:

两台机器IP为

172.17.3.10

172.17.3.62

hosts文件配置为

172.17.3.10 node1

172.17.3.62 node2

两台均配置为这样

开启内核ipv4转发功能

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

sysctl -p

清除iptables底层默认规则,并开启允许转发功能

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F

iptables -L -n

最后关闭selinux,更改机器主机名,等等,完毕后重启下机器,至此我们前期准备工作已完毕。

需要安装的组件为:

1,etcd

2,flannel

3,docker

安装步骤:

安装etcd,我们采用了yum方式安装

yum install -y epel-release

yum make cache fast

yum  install etcd -y

至此我们的etcd安装完成。

安装flannel

yum install flannel -y

最后我们再安装docker

yum install -y yum-utils.noarch  ###安装yum的扩张工具集

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ####添加docker-ce的扩展源

yum install -y --setopt=obsoletes=0 docker-ce-17.03.3.ce-1.el7 ####安装docker-ce

最后docker-ce安装完成,我们一定要注意安装顺序,先安装etcd和flannel最后安装docker.

下面我们来配置这3个组件

首先配置etcd集群

更改两台机器的上的etcd配置文件

vim /etc/etcd/etcd.conf

ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ####数据存放位置
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380" ####监听其他etcd实列地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001" ####监听客户端地址
ETCD_NAME="node1" ####节点名称
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://node1:2380" ####通知其他成员的etcd地址
ETCD_ADVERTISE_CLIENT_URLS="http://node1:2379,http://node1:4001" ### #通知客户端地址
ETCD_INITIAL_CLUSTER="node1=http://node1:2380,node2=http://node2:2380" ###初始化集群内节点地址
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ##初始化集群的token
ETCD_INITIAL_CLUSTER_STATE="new" ##初始化集群状态,new表示新建

以上是etcd集群的配置上面是node1的配置,node2配置和node1一样,只是需要把node1改为node2

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
ETCD_NAME="node2"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://node2:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://node2:2379,http://node2:4001"
ETCD_INITIAL_CLUSTER="node1=http://node1:2380,node2=http://node2:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

最后我们启动etcd,并查看其集群状态

systemctl start etcd

设置为开机启动

systemctl enable etcd

查看启动状态

systemctl status etcd

需要注意的是,必须两台机器的etcd实列都起来集群才能正常建立,这点务必要注意

查看下etcd集群的状态

etcdctl member list

我们的etcd集群目前可以使用了,暂时到这里

接下来我们配置flannel

两台配置一致

编辑flannel的配置文件,内容如下

vim /etc/sysconfig/flanneld

# Flanneld configuration options  

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://172.17.3.10:2379,http://172.17.3.62:2379" #####etcd集群的地址,包括各个成员 # etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network" ####自定义的子网目录,一定要和添加到etcd的子网目录一致 # Any additional options that you want to pass
#FLANNEL_OPTIONS=""
FLANNEL_OPTIONS="--logtostderr=false --log_dir=/var/log/ --etcd-endpoints=http://172.17.3.10:2379,http://172.17.3.62:2379 --iface=ens32" ####定义了日志级别,路径,以及etcd集群地址和绑定的屋里网卡信息

再启动flannel之前需要向etcd内写入子网信息

etcdctl  mk /atomic.io/network/config '{"Network":"10.10.0.0/16", "SubnetMin": "10.10.1.0", "SubnetMax": "10.10.254.0"}'

上面的2处红色字体部分必须一致,可以自定义但是必须一致

子网范围为 10.10.0.0/16,最小子网开始为10.10.1.0 最大子网结束为10.10.254.0,至此自定义子网信息我们已经写入完毕。

接下来,我们来启动flannel,并设置为开机启动

systemctl start flanneld

systemctl enable flanneld

systemctl status flanneld

两台都启动后我们来配置docker

可以发现的是在我们先安装flannel和etcd后最后安装docker后我们使用 sysetmctl show docker 将会发现 在安装flannel后自动生成配置

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

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

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

ExecStart=/usr/bin/dockerd \
$DOCKER_NETWORK_OPTIONS

添加上述红色部分即可,引用了flannel的网络

重载配置systemctl daemon-reload

启动docker

systemctl start docker

然后我们来看两台物理机的网卡IP信息

首先看node1的

可以看到docker 0 的网桥已经使用flannel的网络段了

node2也是如此

目前两台物理机的docker 0 网络处于同一子网下面的都是使用的flannel的子网,是可以相互ping通的

在node1上,ping node2的docker 0 网桥ip

在node2上,ping node1的docker 0网桥ip

是可以相互ping通的,那么两台物理机上容器也是可以互通的,我们分别在两台物理机上创建容器来测试下

在node1创建一个容器,名字叫test,进入容器内部并查看ip

我们来在容器内部ping下node2的docker 0网桥 IP

是可以ping通的,没问题

我们去node2上来ping node1上的容器的ip

也是可以的

我们node2上创建一个容器

在容器内部去ping node1的docker 0 网桥IP

是没有问题的

来ping下node1上的容器的ip

也是可以的,没有问题

至此,docker使用flannel网络并实现互联互通完成。

需要注意的几点要点:

1,向etcd集群写入子网信息时候务必要注意建立的子网文件夹要和flannel的配置文件内一直。

2,flannel的配置,etcd集群地址写正确,子网文件夹信息要和etcd写入一致

3,系统iptables默认规则一定要清除,并开启允许转发

4,确定下docker的网络是否被flannel接管,我们查看下docker的进程要确认下

如果有类似如上信息就表示被接管成功。

docker使用flannel网络的更多相关文章

  1. 二进制安装 kubernetes 1.12(二) - 安装docker, 部署Flannel网络

    在 node 节点上安装 docker 参考 https://www.cnblogs.com/klvchen/p/8468855.html Flannel 工作原理: 部署Flannel网络 在 ma ...

  2. 手把手教你构建 Kubernetes 1.8 + Flannel 网络(一)

    一.环境说明 操作系统:CentOS7 Kubernetes版本:v1.8.4 Docker版本:v17.06-ce Flannel 版本: flannel-v0.9.1 二.Ntp 服务器配置   ...

  3. 二进制搭建kubernetes多master集群【二、配置flannel网络】

    上一篇我们已经搭建etcd高可用集群,参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集群] 此文将搭建flannel网络,目的使跨主机的docker能够互相通信 ...

  4. Kubernetes学习之路(五)之Flannel网络二进制部署和测试

    一.K8S的ip地址 Node IP:节点设备的IP,如物理机,虚拟机等容器宿主的实际IP. Pod IP:Pod的IP地址,是根据docker0网络IP段进行分配的. Cluster IP:Serv ...

  5. k8s1.13.0二进制部署-flannel网络(二)

    Flannel容器集群网络部署 Overlay Network:覆盖网络,在基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来.VXLAN:将源数据包封装到UDP中,并使用基础网 ...

  6. 安装docker跨主机网络flannel

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

  7. docker 集群 flannel网络构建

    先保证集群状态是正常的 集群管理 kubelet 在创建pod 时会先下载一个pause 镜像,这个镜像用于容器基础网络管理非常重要: 每个node 节点都要执行该操作: iptables -P FO ...

  8. docker使用 Flannel(etcd+flannel)网络

    一.Flannel网络简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信,Flannel是CoreOS开发,专门用于 ...

  9. DOCKER学习_005:Flannel网络配置

    一 简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信, Flannel是CoreOS开发,专门用于docker多机 ...

随机推荐

  1. Hi3519V101+IMX274开发板调试经验

    1.uboot没换 2.内核网络不对,其它的正常, sudo apt-get install libncurses5-dev sudo apt-get install u-boot-tools 3.根 ...

  2. Django学习笔记之URL与视图cookie和session

    cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  3. 盘点海口最好吃的西餐厅top10

    Top 1:主厨的餐桌 餐厅地址:龙华区海秀路九号民航宾馆一楼大堂 主厨的餐桌Chef's Table是三位志同道合的大厨一起携手开办的西餐厅,正宗的西式料理.浓郁的浪漫气息,都是Chef's Tab ...

  4. C# winform使用combobox遍历文件夹内所有文件

    参考:https://www.cnblogs.com/hxh88/p/5814291.html 相关函数解析: 1.指定目录包含的文件和子目录 DirectoryInfo.GetFiles():获取目 ...

  5. js中使用showModelDialog中下载文件的时候,闪一下后无法下载

    在js中使用showModelDialog中下载文件的时候,会因为showModelDialog自动设置target为_self导致下载文件“只会闪一下”就消失掉 在吧target设置为_blank后 ...

  6. webRTC中音频相关的netEQ(三):存取包和延时计算

    上篇(webRTC中音频相关的netEQ(二):数据结构)讲了netEQ里主要的数据结构,为理解netEQ的机制打好了基础.本篇主要讲MCU中从网络上收到的RTP包是怎么放进packet buffer ...

  7. php中获取当前时间

    因为php种有时区的设置,默认与我们这边差8小时:所以我们直接使用data方法的话,得到的时间是不准确的 所以我们在开头设置时区 //设置时区的方法: date_default_timezone_se ...

  8. 教你如何下载并破解IAR

    最近参加项目要写STM8的工程的,所以用到IAR,所以就自己安装了一次然后写个心得. 因为我用到的是STM8,所以我就下载了STM8的,不过其他过程都一样的. 首先去到IAR SYSTEMS的官网,找 ...

  9. [UE4]瞬移之后的朝向

    一.Set Actor Rotation:设置绝对朝向:Set Actor Relative Rotation:设置相对朝向 二.瞬移以后,角色的朝向和相机的朝向是不一样的,和头显的朝向不是同一个朝向 ...

  10. Docker CMD in detail

    CMD CMD 指令就是用于指定默认的容器主进程的启动命令的,我们直接 docker run -it ubuntu 的话,会直接进入 bash.我们也可以在运行时指定运行别的命令,如 docker r ...