云计算之K8S系列截取——flanneld+etcd实现docker容器网络互通

一、背景

随着网络技术和硬件技术的发展,单机单应用已经很难满足现在的需求,都在搞集群化,一批机器同时提供服务,性能会更好。在这之中,容器化越来越火,当然也就需要满足集群化需求,即不同机器的docker容器可以互相访问,实现这种功能很多,例如flannel,OVS,基本路由配置等都能实现,这里只要讲解一下flannel的原理和使用方法。

二、概念

flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN

三、搭建(均使用二进制方式安装)

1. flannel需要用到etcd数据库,所以,提前把etcd安装上

1), 官网上下载指定版本的etcd二进制文件,放在/usr/bin目录下

2), 创建etcd配置文件/etc/etcd/etcd.conf文件,修改监听地址和端口

3), 创建etcd受systemctl控制的文件/usr/lib/systemd/system/etcd.service

4), 启动并开机自启,测试etcd是否健康

systemctl start etcd

systemctl enable etcd

etcdctl cluster-health

显示 healthy就代表etcd可以正常工作

2. flannel安装

1.到官网上下载指定的flannel二进制文件包,解压并拷贝到指定位置

wget  https://github.com/coreos/flannel/releases/download/v0.7.0/flannel-v0.7.0-linux-amd64.tar.gz 

cp flanneld mk-docker-opts.sh /usr/bin

flanneld (主要的执行文件) mk-docker-opts.sh(用于生成Docker启动参数)

2. 给flannel创建一个systemd服务

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

[Unit]

Description=flanneld overlay address etcd agent

After=network.target

Before=docker.service

 

[Service]

Type=notify

EnvironmentFile=/etc/sysconfig/flanneld

ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} $FLANNEL_OPTIONS

 

[Install]

RequiredBy=docker.service

WantedBy=multi-user.target

 

3.配置flannel主配置文件/etc/sysconfig/flanneld

vim /etc/sysconfig/flanneld

# etcd的ip地址和端口

FLANNEL_ETCD="http://192.168.164.130:2379"

# 配置etcd键值对

FLANNEL_ETCD_KEY="/coreos.com/network"

4.在启动flannel之前,要在etcd中添加一条键值对

etcdctl set /coreos.com/network/config '{ "Networking": "10.1.0.0/16" }'

5.启动flannel服务

systemctl restart flanneld

6.设置docker0网桥的IP地址

mk-docker-opts.sh -i

source /run/flannel/subnet.env

7. 重启docker并设置docker0的IP地址

systemctl restart docker

ifconfig docker0 ${FLANNEL_SUBNET}

8. 查看并验证

ip a

docker0 , flannel0网段是相同的就成功了

ping 10.1.50.1 (其他机器的docker0地址) 通了,代表成功

四、注意事项

  • 1. 启动顺序: etcd , flanneld , docker
  • 2. etcd只需要安装在一台机器上就行,这台机器不一定要有flanneld和docker

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值