etcd跨主机通信与Flannel

跨主机通信

Docker 默认的网络环境下 , 单台主机上的 Docker 容器可以通过 docker0 网桥直接通信 , 而不同主机上的 Docker 容器之间只能通过在主机上做端口映射进行通信。
这种端口映射方式对很多集群应用来说极不方便。
如果能让 Docker 容器之间直接使用自己的 IP 地址进行通信 , 会解决很多问题。
按实现原理可分别直接路由方式、桥接方式 ( 如 pipework) 、 Overlay 隧道方式 ( 如 flannel 、 ovs+gre) 等

Flannel****特点

  1. 使集群中的不同 Node 主机创建的 Docker 容器都具有全集群唯一的虚拟 IP 地址。
  2. 建立一个覆盖网络 (overlay network), 通过这个覆盖网络 , 将数据包原封不动的传递到目标容器。覆盖网络是建立在另一个网络之上并由其基础设施支持的虚拟网络。覆盖网络通过将
    一个分组封装在另一个分组内来将网络服务与底层基础设施分离。在将封装的数据包转发到端点后 , 将其解封装。
  3. 创建一个新的虚拟网卡 flannel0 接收 docker 网桥的数据 , 通过维护路由表 , 对接收到的数据进行封包和转发 (vxlan) 。
  4. etcd 保证了所有 node 上 flanned 所看到的配置是一致的。同时每个 node 上的 flanned 监听 etcd 上的数据变化 , 实时感知集群中 node 的变化。

    为了兼容 flannel, 将默认开启 v2 版本 , 故配置文件中还要设置 :

vi / etc / profile
export ETCDCTL_API = 2 # 指定 etcdctl 命令的版本为 v2
source / etc / profile
api 2 使用方法
ETCDCTL_API = 2 etcdctl set key value
ETCDCTL_API = 2 etcdctl ls /
ETCDCTL_API = 2 etcdctl del / -- prefix
api 3 使用方法
ETCDCTL_API = 3 etcdctl put key value
ETCDCTL_API = 3 etcdctl get /
ETCDCTL_API = 3 etcdctl del / -- prefix
flannel 安装与配置
下载或上传 flannel 安装包
创建 flannel 安装目录
mkdir - p / opt / flannel
解压到安装目录
tar xzf flannel - v0 . 11.0 - linux - amd64 . tar . gz - C / opt / flannel
查看解压后文件
cd / opt / flannel && ls
为 flannel 创建一个 systemd 服务 , 用于后台启动
vim / etc / systemd / system / flanneld . service
systemctl daemon - reload && systemctl restart flanneld
验证 flannel 网络
ifconfig
docker 配置
查看 flannel 分配的网络参数 ( 在 Flannel 运行之后 , 会生成一个环境变量文件 , 包含了当前主机要使用 flannel 通讯的相关参数
cat / run / flannel / subnet . env
创建 Docker 运行参数 ( 使用 flannel 提供的脚本将 subnet.env 转写成 Docker 启动参数
/ opt / flannel / mk - docker - opts . sh - d / run / flannel / docker_opts . env - c
创建好的启动参数位于 /run/flannel/docker_opts.env 文件中 , 可使用 cat 命令查看
cat /run/flannel/docker_opts.env
修改 Docker 启动参数
vim / lib / systemd / system / docker . service
下面是 docker.service 要修改的地方

重新加载 systemd 配置 , 并重启 Docker
systemctl daemon - reload && systemctl restart docker && systemctl status docker
查看是否应用成功
ifconfig
测试 flannel
docker run - it -- name = centos centos bash
cat / etc / hosts
docker inspect bridge
从不同宿主机容器到其他宿主机容器
ping - c3 192.168 . 27.120
ping - c3 10.0 . 20.2

相关推荐
一 乐1 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
1.14(java)3 小时前
SQL数据库操作:从CRUD到高级查询
数据库
Full Stack Developme4 小时前
数据库索引的原理及类型和应用场景
数据库
IDC02_FEIYA5 小时前
SQL Server 2025数据库安装图文教程(附SQL Server2025数据库下载安装包)
数据库·windows
辞砚技术录5 小时前
MySQL面试题——联合索引
数据库·面试
萧曵 丶6 小时前
MySQL 主键不推荐使用 UUID 的深层原因
数据库·mysql·索引
小北方城市网6 小时前
分布式锁实战指南:从选型到落地,避开 90% 的坑
java·数据库·redis·分布式·python·缓存
毕设十刻6 小时前
基于Vue的人事管理系统67zzz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
TDengine (老段)8 小时前
TDengine Python 连接器入门指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
萧曵 丶8 小时前
事务ACID特性详解
数据库·事务·acid