Docker 入门之overlay网络

Docker 入门之overlay网络

前序

推荐先看过之前的入门文章:

  1. Docker 入门之基本概念

  2. 入门之overlay网络

什么是什么是Overlay网络?

Overlay网络,顾名思义,是一种"覆盖"在现有物理网络(Underlay)之上的虚拟网络层。它通过在底层IP网络之上封装额外的网络层,实现逻辑上的网络隔离和扩展。

其核心工作原理基于**VXLAN(Virtual Extensible LAN)**技术。 这里省略一万字关于VXLAN的介绍,感兴趣的同学可以自行查阅。

什么时候用overlay网络?

当你知道overlay网络的基础就是vxlan之后,那么就差不多知道时候适用overlay网络了。

  1. 多主机的容器编排

  2. 分布式集群的容器编排

  3. 多租户的网络隔离

如何使用overlay网络?

适用overlay网络的方式和你使用的编排工具有关,他也需要各种插件的配合才能完成,但是今天就以最简单的docker swarm为例,来演示如何使用overlay网络。

这是Overlay网络最原生、最无缝的集成场景,也是最轻量级的场景,非常使用节点不多的集群,比如10个点以下的。不想资源被k8s这种重型的编排工具占据了。

搭建基于docker swarm的overlay网络

主机(节点)环境准备和确认:

bash 复制代码
# 确认内核转发
sysctl -w net.ipv4.ip_forward=1

# docker版本
docker version

防火墙规则:

bash 复制代码
iptables -A INPUT -p tcp -m multiport --dports 2377,7946,4789 -j ACCEPT

TCP 2377:Swarm集群管理端口,用于管理节点与工作节点的安全通信。

TCP/UDP 7946:用于节点间发现(Gossip协议),维护集群成员状态。

UDP 4789:VXLAN数据平面端口

为了实验环境,我直接关了防火墙!但是如果你没关,需要记得放行这些端口,最好是指定对端ip的放行

创建集群

  1. 管理节点
bash 复制代码
docker swarm init --advertise-addr xxxxx
  1. 工作节点(这条命令的token是上一个命令输出的)
bash 复制代码
docker swarm join --token  xxxx    xxx

管理节点不干活,所以至少准备2个work节点,才能正常使用overlay网络。

检查节点:

在管理节点执行:

bash 复制代码
docker node ls

创建overlay网络

在管理节点上创建:

bash 复制代码
docker network create -d overlay \
  --attachable \
  --subnet 10.10.0.0/24 \
  --gateway 10.10.0.1 \
  --opt com.docker.network.driver.mtu=1450 \
  my-overlay

这里补充说一下mtu: VXLAN封装会增加约50字节的头部开销。为避免数据包分片导致性能下降

部署服务

bash 复制代码
# 部署一个Nginx服务,拥有2个副本,并自动接入my-overlay网络
docker service create \
  --name web \
  --replicas 2 \
  --network my-overlay \
  nginx:alpine

Swarm调度器会将两个容器副本分配到集群中的节点上。它们通过my-overlay网络直接通信,并通过服务名web实现内部发现和负载均衡

查看一下每个节点上的容器:

bash 复制代码
docker ps

测试

找一个节点,进入容器:

bash 复制代码
docker exec -it 3498d1a71152 sh

ip addr show

curl http://web

在任一节点的宿主机上执行:

bash 复制代码
bridge fdb show

可以看到vlan 信息

小结

Overlay网络适用于Docker Swarm集群环境或需要简单配置且不依赖第三方工具的场景。

其他常用命令

bash 复制代码
# 1. 节点操作
docker node update --availability pause <节点ID>   #暂停节点,不再接收新任务,但现有任务继续运行。
docker node update --availability drain <节点ID>   #排空节点,不接收新任务且现有任务迁移到其他节点。
docker node update --availability active <节点ID>  #恢复节点为活动状态

# 2. 节点退出集群
docker swarm leave

# 3. 查看服务状态
docker service ls
docker service ps my-app

# 4 缩减到2个副本
docker service scale web-service=2

# 5. 扩展服务
docker service scale my-app=5

# 6. 更新服务镜像
docker service update --image nginx:latest my-app

# 7. 监控服务日志
docker service logs -f my-app

# 8. 服务维护时排空节点
docker node update --availability drain <节点ID>

# 9. 删除服务
docker service rm my-app

欢迎关注:

Docker 入门之overlay网络

相关推荐
剑胆凌锋3 小时前
等级保护测评工程师的困境
网络·安全·web安全·网络安全·职场和发展
2601_967212724 小时前
专利型电源轨道系统技术路线对比与选型框架
大数据·运维·网络·经验分享
XiaoMaqqqq4 小时前
知名的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
ysu_03146 小时前
Postman接口调试实战指南-从HTTP请求到环境变量-Collection与自动化测试
网络·网络协议·测试工具·http·api·postman·可用性测试
小此方6 小时前
Linux网络(十九):TCP流量控制与滑动窗口详解,超时重传和快重传到底有什么区别
linux·运维·服务器·网络·网络协议·tcp/ip
通信瓦工7 小时前
利用浊度和电导率测量确定乙二醇基流体的质量
网络·数据库·ai
阿钱真强道7 小时前
33 嵌入式操作系统 | 模块七验收:端到端一键验收 + 项目答辩
网络·网络协议·粘包·回归测试·uloop
ggaofeng7 小时前
Ctrl+C结束进程是如何实现的
服务器·c语言·网络
和裕8 小时前
年度框架直供 vs 零散按需采购:定制纸箱采购成本、交付与服务核心区别全对比
大数据·运维·网络·人工智能·算法
光依旧9 小时前
PageIndex没翻车,翻车的是我的解析器
docker·langchain·大模型·向量数据库·pdf解析·rag·pageindex