温馨提示×

Overlay网络Ubuntu怎么设置

小樊
41
2026-01-02 17:31:38
栏目: 智能运维

Ubuntu 上设置 Overlay 网络的实用做法

Ubuntu 上,Overlay 网络常见有两类场景:一是 Docker Swarm/Compose 的多主机容器互联,二是基于 Open vSwitch 的虚拟主机/虚拟机 Overlay 组网。下面给出两种方案的最小可用步骤与验证方法。


方案一 Docker Swarm 与 Compose 的 Overlay 网络

  • 准备与初始化
    • 安装 Docker(若未安装):sudo apt-get update && sudo apt-get install -y docker.io && sudo systemctl enable --now docker
    • 初始化 Swarm(任一管理节点执行):sudo docker swarm init
  • 创建 Overlay 网络(全局可见,跨主机)
    • 命令:sudo docker network create --driver overlay my_overlay_net
  • 运行服务并接入网络(示例)
    • 命令:sudo docker service create --name web --network my_overlay_net --replicas 2 nginx:alpine
  • 使用 Docker Compose(version ≥ 3.8
    • 示例 docker-compose.yml:
      version: "3.8"
      services:
        web:
          image: nginx:alpine
          networks:
            - my_overlay_net
      networks:
        my_overlay_net:
          driver: overlay
      
    • 部署:docker compose up -d(或 docker stack deploy -c docker-compose.yml stackname
  • 验证
    • 查看网络:docker network ls | grep my_overlay_net
    • 查看服务/容器:docker service ls;docker ps
    • 进入容器测试:docker exec -it <容器ID> sh;ping <另一服务名或容器IP> 说明:Overlay 网络用于跨主机的容器通信;Compose 文件需启用 Swarm 模式(docker stack deploy)或在 Swarm 服务中使用。

方案二 基于 Open vSwitch 的虚拟主机 Overlay 组网

  • 安装组件
    • sudo apt update
    • sudo apt install -y openvswitch-switch qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
  • 创建 OVS 网桥并添加端口
    • 创建网桥:sudo ovs-vsctl add-br br-overlay
    • 添加端口(示例将虚拟机 TAP 设备接入):sudo ovs-vsctl add-port br-overlay tap0
  • 创建并连接虚拟机(示例使用 virt-install)
    • 命令:
      virt-install \
        --name vm1 \
        --ram 1024 \
        --disk path=/var/lib/libvirt/images/vm1.qcow2,size=10 \
        --vcpus 1 \
        --os-type linux \
        --os-variant ubuntu22.04 \
        --network bridge=br-overlay \
        --location 'http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/' \
        --extra-args 'console=ttyS0'
      
  • 验证
    • 在宿主机查看网桥与端口:ovs-vsctl show
    • 进入虚拟机后互 ping(或通过 SSH):ping <对端VM_IP> 说明:该方式通过 OVS 构建虚拟交换机,将多台虚拟机的 TAP 接口接入同一网桥,实现二层/三层 Overlay 互通。

常见问题与排查要点

  • Docker Swarm 模式未启用
    • 现象:创建 overlay 网络或部署 stack 时报错。
    • 处理:先执行 sudo docker swarm init,再创建网络/部署服务。
  • 多主机互通失败
    • 现象:同网段 Overlay 容器跨主机不通。
    • 处理:确认各主机 Docker 可互通管理端口(默认 2377/TCP)、VXLAN 端口(默认 4789/UDP)未被防火墙拦截;云主机需放通对应安全组规则。
  • OVS 端口未接入或未获取到 IP
    • 现象:VM 起不来或无法跨 VM 通信。
    • 处理:确认 VM 网卡已连接到 br-overlay,并检查 DHCP/静态 IP 配置是否正确;使用 ovs-vsctl show 核对端口绑定。
  • 旧版 Docker 外部键值存储配置(不推荐)
    • 现象:需要外部集群存储(如 Consul)时,旧方式通过 daemon.json 的 cluster-store/cluster-advertise 配置。
    • 建议:优先使用 Swarm 内置 Raft 管理集群,仅在特殊需求下才采用外部 KV。

0