温馨提示×

CentOS Overlay如何进行网络配置

小樊
36
2025-11-05 23:43:20
栏目: 智能运维

CentOS上配置Overlay网络(以Docker为例)

Overlay网络是Docker实现跨主机容器通信的核心网络模式,通过VXLAN/GRE隧道封装技术,让不同主机上的容器像在同一局域网内一样通信。以下是CentOS系统上的详细配置步骤:

一、前置准备

  1. 系统与内核要求

    • CentOS版本需为7.x及以上(内核版本≥3.10,支持Overlay驱动);
    • Docker版本需≥1.9(支持Overlay网络驱动)。
  2. 安装Docker
    使用YUM仓库安装Docker CE(社区版):

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker && sudo systemctl enable docker  # 启动并设置开机自启
    
  3. 配置Docker存储驱动(可选但推荐)
    编辑/etc/docker/daemon.json,指定overlay2为存储驱动(Docker默认推荐):

    {
      "storage-driver": "overlay2",
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {"max-size": "100m"}
    }
    

    重启Docker使配置生效:

    sudo systemctl restart docker
    
  4. 验证内核支持Overlay
    加载Overlay内核模块:

    sudo modprobe overlay
    

二、创建Overlay网络

使用docker network create命令创建Overlay网络,需指定驱动类型子网网关等参数:

sudo docker network create \
  --driver overlay \                # 指定Overlay驱动
  --subnet=10.0.0.0/24 \            # Overlay网络子网(自定义,需避免与其他网络冲突)
  --gateway=10.0.0.1 \              # Overlay网络网关(自定义)
  my-overlay-network                # 网络名称(自定义)

参数说明

  • --driver overlay:必须参数,指定使用Overlay网络驱动;
  • --subnet:定义Overlay网络的IP段(如10.0.0.0/24),用于容器IP分配;
  • --gateway:Overlay网络的网关地址(如10.0.0.1),容器通过该网关访问外部网络。

三、连接容器到Overlay网络

有两种方式将容器连接到Overlay网络:

1. 启动容器时直接连接

使用--network参数指定Overlay网络:

sudo docker run -d --name container1 --network my-overlay-network nginx
sudo docker run -d --name container2 --network my-overlay-network nginx

上述命令会启动两个Nginx容器,并自动分配10.0.0.0/24网段内的IP地址。

2. 将已运行容器连接到Overlay网络

使用docker network connect命令:

sudo docker network connect my-overlay-network existing-container

其中existing-container是已运行的容器名称或ID。

四、验证Overlay网络连通性

  1. 查看Overlay网络列表
    确认网络已创建:

    docker network ls
    

    输出应包含my-overlay-network(驱动为overlay)。

  2. 查看网络详细信息
    获取Overlay网络的子网、网关、容器连接状态:

    docker network inspect my-overlay-network
    

    输出中的Containers字段会显示已连接的容器及其IP地址。

  3. 测试容器间通信
    进入其中一个容器(如container1),ping另一个容器(如container2):

    sudo docker exec -it container1 ping $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2)
    

    若能收到回复,说明Overlay网络通信正常。

五、配置跨主机Overlay网络(可选但常用)

若需要在多台CentOS主机上实现容器通信,需额外配置Docker守护进程密钥管理

1. 配置Docker守护进程

编辑每台主机的/etc/docker/daemon.json,添加以下参数:

{
  "cluster-store": "consul://<consul-server-ip>:8500",  # 服务发现组件(如Consul)地址
  "cluster-advertise": "<当前主机IP>:2376"             # 当前主机的Docker API地址
}

说明

  • cluster-store:用于存储集群状态的服务发现工具(如Consul、Etcd);
  • cluster-advertise:当前主机的Docker API监听地址(需开放2376端口)。

重启Docker使配置生效:

sudo systemctl restart docker

2. 初始化Docker Swarm集群(可选)

若使用Swarm模式,可通过以下命令初始化集群(在管理节点执行):

sudo docker swarm init --advertise-addr <管理节点IP>

加入工作节点(在每个工作节点执行,使用管理节点输出的命令):

sudo docker swarm join --token <TOKEN> <管理节点IP>:2377

Swarm模式下,Overlay网络会自动跨主机可用。

3. 测试跨主机通信

在主机A上启动容器并连接到Overlay网络:

sudo docker run -d --name containerA --network my-overlay-network nginx

在主机B上启动容器并连接到同一Overlay网络:

sudo docker run -d --name containerB --network my-overlay-network nginx

进入containerA,pingcontainerB的IP地址,验证跨主机通信。

六、注意事项

  1. 防火墙配置
    Overlay网络依赖VXLAN隧道(UDP 4789端口),需确保防火墙允许该端口流量:

    sudo firewall-cmd --add-port=4789/udp --permanent
    sudo firewall-cmd --reload
    
  2. SELinux配置
    若启用了SELinux,需设置为permissive模式或添加相应策略:

    sudo setenforce 0  # 临时关闭(测试用)
    

    或修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive

  3. 性能优化

    • 使用高性能网络设备(如万兆网卡);
    • 避免在同一主机上运行过多Overlay网络(减少隧道开销);
    • 调整MTU值(如设置为1450,避免VXLAN封装导致的分片)。

通过以上步骤,即可在CentOS系统上成功配置Overlay网络,实现跨主机的容器通信。根据实际需求,可选择手动配置或结合Kubernetes等编排工具实现更复杂的网络场景。

0