docker容器技术篇:安装与配置flannel

本文详细介绍了如何在两台虚拟机上安装和配置Flannel,以解决Docker集群中不同节点容器IP冲突的问题,包括安装Docker、etcd,以及配置Flannel网络和指定默认网络,确保容器间的通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker安装与配置flannel
flannel是什么?
Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址;通俗的将就是通过flannel接管docker集群的网络,保障docker集群中容器的网络不会冲突。
但在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能分配相同的内外IP地址。

**实验环境:
虚拟机IP地址 操作系统 安装的软件
**
在这里插入图片描述

一 安装docker(两台虚拟机都是一样的安装方法,这里只演示其中一台虚拟机的截图)

1.1关闭selinux

在这里插入图片描述

1.2开启内核转发

在这里插入图片描述
在这里插入图片描述

1.3关闭防火墙并禁用(本地虚拟机可关闭,公网服务器不能关闭)

在这里插入图片描述

1.4安装docker

在这里插入图片描述

1.5启动docker并设置开机自启动

在这里插入图片描述

二 安装etcd(两台虚拟机都是一样的安装方法,这里只演示其中一台虚拟机的截图)

2.1 etcd是什么

etcd是一种开源的分布式统一键值存储,用于分布式系统或计算机集群的共享配置、服务发现和的调度协调。etcd 有助于促进更加安全的自动更新,协调向主机调度的工作,并帮助设置容器的覆盖网络。注意这个协调主机工作,分布式系统都会面临的一个问题,就是多个节点之间的数据共享,这个和团队协作的道理是一样的道理,成员可以分头干活,但总是需要共享一些必须的信息,比如谁是 leader, 都有哪些成员,依赖任务之间的顺序协调等。所以分布式系统要么自己实现一个可靠的共享存储来同步信息,要么依赖一个可靠的共享存储服务,而 Etcd 就是这样一个服务;这段话不是我写的,我没想到比这更容易让人理解的表达,原文出自博客园博主–yuxiaoba。

2.2 安装etcd

在这里插入图片描述
在这里插入图片描述

2.3 备份配置文件

在这里插入图片描述

2.4 修改配置文件

在这里插入图片描述
在这里插入图片描述

2.5 启动etcd并设置开机自启动

在这里插入图片描述

2.6 查看etcd集群状态

在这里插入图片描述
能看到两个节点上的etcd服务信息,说明配置成功

三 安装与配置flannel(两台虚拟机都是一样的安装方法,这里只演示其中一台虚拟机的截图)

3.1 安装flannel

在这里插入图片描述

3.2 备份配置文件

在这里插入图片描述

3.3 修改flannel配置文件

在这里插入图片描述
在这里插入图片描述

3.4 配置etcd中关于flannel的key(只需要在slave1上执行即可)

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,至此自定义子网信息我们已经写入完毕。
在这里插入图片描述

3.5 启动flannel并查看状态

在这里插入图片描述
在这里插入图片描述

3.6 查看flannel网卡信息

此时两台docker主机的网络已经不在同一个网段了
在这里插入图片描述
在这里插入图片描述

3.7 指定docker中默认的网络为flannel

上面只是安装了flannel网络,还需要指定docker中默认的网络为flannel,要不然容器仍然使用默认网络(bridge)
Slave1:
修改/usr/lib/systemd/system/docker.service文件
在这里插入图片描述
在这里插入图片描述
修改/run/flannel/subnet.env文件
在这里插入图片描述
在这里插入图片描述
Slave2:
修改/usr/lib/systemd/system/docker.service文件
在这里插入图片描述
在这里插入图片描述
修改/run/flannel/subnet.env文件
在这里插入图片描述
在这里插入图片描述

3.8 重启docker和flannel再次查看网络

此时两台docker主机的网络已经不在同一个网段了
Slave1:
在这里插入图片描述
Slave2:
在这里插入图片描述

3.9 测试两个节点的容器是否可以通信

在这里插入图片描述
这里用的是centos镜像
Slave1:
在这里插入图片描述
Slave2:
在这里插入图片描述
在这里插入图片描述

3.10 如果ping不通,请检查以下内核转发是否开启,防火墙是否关闭,iptables底层默认规则(清除规则)

希望对您有用,有不对的地方希望不吝赐教,欢迎在评论区留言,分享你的看法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云计算练习生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值