Docker flannel网络搭建(跨主机通信)

Docker flannel网络搭建(跨主机通信)

前置:服务器准备

1)开启内核ipv4转发功能

编辑/etc/sysctl.conf,添加一行

net.ipv4.ip_forward=1

重启服务器后失效,需要重新执行开启转发

sysctl -p

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

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -L -n

关闭防火墙,如果开启防火墙,则最好打开2379和4001端口

# systemctl disable firewalld.service
# systemctl stop firewalld.service

第一步:安装etcd(此步骤为单机)

安装etcd

# yum install etcd -y
# cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak

修改etcd配置文件
修改ETCD_LISTEN_CLIENT_URLS和ETCD_ADVERTISE_CLIENT_URLS

vi /etc/etcd/etcd.conf

[Member]
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"

#[Clustering]
ETCD_ADVERTISE_CLIENT_URLS="http://10.3.9.206:2379,http://10.3.9.206:4001"

启动etcd

# systemctl start etcd
# systemctl enable etcd
# systemctl status etcd

设置etcd的网络

# etcdctl  mk /atomic.io/network/config '{"Network":"172.17.0.0/16", "SubnetMin": "172.17.1.0", "SubnetMax": "172.17.254.0"}'

查看etcd网络配置

# etcdctl get /atomic.io/network/config 
{"Network":"172.17.0.0/16", "SubnetMin": "172.17.1.0", "SubnetMax": "172.17.254.0"}

备注:
1)需要在etcd上进行如下配置(’/http://atomic.io/network/config’这个key与上面的/etc/sysconfig/flannel中的配置项FLANNEL_ETCD_PREFIX是相对应的,错误的话启动就会出错)
2)该ip网段可以任意设定,随便设定一个网段都可以。容器的ip就是根据这个网段进行自动分配的,ip分配后,容器一般是可以对外联网的(网桥模式,只要宿主机能上网就可以)

查看etcd状态

# etcdctl -C http://10.3.9.206:4001 cluster-health
# etcdctl -C http://10.3.9.206:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://10.3.9.206:2379
cluster is healthy

# 查看下etcd集群成员列表
etcdctl member list

第二步:安装flannel(所有主机)

安装步骤

# yum install -y flannel
# cp /etc/sysconfig/flanneld /etc/sysconfig/flanneld.bak

# vi /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://10.3.9.206:2379"

# systemctl enable flanneld.service
# systemctl start flanneld.service
# systemctl restart docker

第三步:设置DOCKER默认网络,(所有主机,每台的子网不一样,分别设置)

cat /run/flannel/subnet.env
FLANNEL_NETWORK=172.17.0.0/16
FLANNEL_SUBNET=172.17.82.1/24
FLANNEL_MTU=1472
FLANNEL_IPMASQ=false

第四步:配置docker

配置docker的bip网段,需要跟flannel设置的网段一致

主机10.3.9.206

vi  /etc/systemd/system/docker.service 修改dockerd 后台进程的bip和mut,放到启动命令后面
ExecStart=/usr/bin/dockerd --bip=172.17.23.1/24 --mtu=1472

主机10.3.9.207

vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --bip=172.17.19.1/24 --mtu=1472

重启docker服务

systemctl daemon-reload
systemctl restart docker

第五步:验证

启动centos79容器

# docker run -it --name centos79 centos:centos7.9.2009 /bin/bash

进入容器
1)安装net-tools

# yum install net-tools -y

2)查看ip地址

# ifconfig
  1. 在两台主机上,ping不同的容器的ip地址

验证结论:可以看出,在不同的服务器上,不同的主机上,两个容器间实现跨主机访问通信

注意事项:

  1. 向etcd集群写入子网的时候务必要建立的子文件夹和flannel的配置文件一致
  2. flannel的配置,etcd集群地址要写正确,子文件夹信息要和etcd写入一致
  3. 系统iptables默认规则一定要清除,并开启允许转发功能
  4. 确定下docker的网络是否要被flannel接管,查看下docker的进程确认
  5. 操作系统建议centos7
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明算科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值